今天是2 B的日子。
上午接到爱奇艺的电话面试,面的职位是个广告部的移动开发岗位。
第一轮
对简历上的基本信息问了一下,基本就是项目经验什么的。
对iOS项目问了挺多,我也大概介绍了一下,总体感觉还行,把做过的都大概说了一下,问题答的也还行。
第二轮
这轮问的技术上升了一个档次。
上来就问了一句:为什么说ObjC是个Runtime语言,这个没答上来,现在想一想他可能想让我答出来消息机制之类的吧(有个文章大概讲了一下ObjC的runtime:http://www.cnblogs.com/whyandinside/archive/2013/02/26/2933552.html)。
然后问了一下iOS内存管理和高级UI组件的一些概念,有些问题好像他故意问得比较复杂,实际其实他期望的应该是比较简单的答案吧。其中他问到项目所用的技术,这个答得不太好,包括一些推送之类的都没有说出来,就说了一个MVC还磕磕巴巴的。
还问了一些C基础的东西,比如指针常量和常量指针的区别,虽然我知道区别,但是说的比较混乱,也不知道他听懂没。
最后他问了一些设计模式相关的问题:谈谈适配器模式,以及他跟装饰者模式的区别。适配器模式当时没有什么概念了,应该回答:适配器是为了解决接口不兼容而将接口转换成另一个接口,而装饰者模式关注的是通过组合来动态的为被装饰者注入新的功能或行为(即所谓的责任)。
第三轮
这轮被虐成SB了。
第一道题:C++虚函数是怎么实现的?我答通过虚函数表。再问:虚表是每个类一个还是每个实例一个?这个问题卡住了,虽然我蒙对了,是每个类一个,但是我不知道为啥。他继续问:实例之间是怎么共享虚表的?这题答案应该是虚表本身是个静态数组吧。
第二道题:构造函数中调用虚函数,会不会实现多态?答案是不会(显然我是蒙的),具体为啥百度了一下还不是很明白//TODO调试一次后补全
第三道题:问了两个C++不常用的关键字,我经验本来就少,这俩关键字完全没听过。。还忘了其中一个,另一个是explicit,这个关键字限制了构造函数必须显式调用,防止了类似A a = x;这种类型的隐式转化。
第四道题:在Linux系统中,有两个文件,每个文件的每行都有一个IP,通过Linux命令,将这两个文件中相同的IP找出来。这道题考的实际上是sort、unique、cat命令和管道的应用,前两个以前从没使用过,在他的提示下特别憋屈的说了出来,感觉特别蛋疼。实际这道题还有陷阱,就是需要想到每个文件中也可能有相同的IP。
第五道题:一个算法题,一个数组,尽可能随机的将它打乱,要求时间复杂度和空间复杂度尽可能小。这道题答的时候已经完全没有自信了,勉强答出来一个O(n²)和O(n)的,实际这道题应该是遍历这个数组,并将第i(0≤i<n)个元素与其之后的第随机个元素进行交换。
总结一下,还是太年轻,上学的时候不好好学习,现在就得抓紧了。