今天下午快吃饭的时候,阿里巴巴内推一面的电话面试就打了过来。自我感觉一般般,居然在应该回答得很好的项目经历以及项目积累上栽了坑,下面记录下这次的一面过程。
虽然我投的职位是客户端开发岗,但是面试官居然没问我多少关于客户端开发方面的问题,可能是我前一两个关于Android开发的问题回答得太差,让面试官没啥好问的,还是我在自我介绍的时候就表示我可以接受除了客户端开发之外的其他岗?
面试首先让我做了3-5分钟的自我介绍,自我介绍这段不知道大家咋说的,反正我只说了一些,很少不多。接着面试官要我介绍我在简历上写的项目经历,根据之前的师兄师姐们找工作的经验,企业一般不太喜欢问关于研究所的项目,所以我只介绍了简历上写的其他的三个项目就结束了,但是面试官居然穷追不舍,问了我第四个项目的相关问题。面试官问我简历上不是还有一个项目吗?他对这个项目比较感兴趣,让我介绍一下,就这样,我顺利地把自己拉入了OpenGL的大坑。因为这个项目中涉及到了OpenGL的开发,面试官可能对这个很感兴趣,所以问了我几个关于OpenGL的知识,但是说实话,我真的对OpenGL不太了解,总之以后简历上别给自己挖坑!
关于OpenGL的第一个问题是:1、让我用OpenGL在屏幕上的中心画一个蓝色的圆。我只回答了大概的思路。第二个问题是:2、OpenGL中ofb是啥?这个我就完全不知道了。这个项目到这算是结束了。
随后转向Android开发的问题,问了我做Android项目也有几个了,有没有深入研究过哪个包?从中学到了什么。这个问题我当时本来想用自己做推送的时候看过的androidpn源码包糊弄过去的,但是面试官又清楚地问了我“能不能举个具体的例子?” 结果我又悲剧了,只能说我忘了,结果这一部分又过了。
接着问了我关于学校课程里我学的比较好的,其中说到一个算法分析的课,接着就说到算法上去了,问了我知道的排序算法有哪些,我回答的这些算法里有哪些是可以用链表实现的,哪些不好用链表实现的。
接下来是基础问题,面试官问的不多,一共就3个。第一题是这样子:有两个int类型的变量,问你不借助第三个变量,怎么交换两个变量的值?由于以前看过“深入分析计算机系统”这本书,里面有关于位运算的部分,所以我想出来用位运算的方法来计算,先把两个int类型的值写成二进制,然后与或(或者异或)上一个值,变成另一个值,这样操作就可以了。第二题问了关于栈和堆的区别。第三题问了单链表的交点,问我怎么判断两个单链表的交点,我的回答是使用指针的指针,遍历判断两个指针指向的地址是否相同,面试官好像同意这个做法。
总结下这次面试的客观问题(与项目无关的):
1、Android开发中有没有深入研究过哪个包?从中学到了什么?
2、知道的排序算法有哪些?其中有哪些是可以用链表实现的,哪些不好用链表实现的?
3、有两个int类型的变量,问你不借助第三个变量,怎么交换两个变量的值?
4、栈和堆的区别?
5、怎么判断两个单链表的交点?
最后给个一面的经验总结:就是多看你的简历吧,你的简历上的东西才是重点。如果你没有项目经验,那么可能就完全会考基础知识了。