大概从3月份开始面试直到现在,前前后后面试了大概7、8家公司,从互联网巨头到创业公司,也算是熟悉了一些面试的套路,可是上周二的IBM,却真的让我耳目一新。
面试是以电话面试的方式进行,这个本身并不特别,然而具体来说,这个更类似于一个电话会议,和之前的电面不同的是,我需要给面试官拨打电话,然后语音提示等待面试官加入,语音提示是全英文的,不过最后还是人性化地给出了切换语言的方式。
面试官加入后,面试就正式开始了。之前的所有面试都是一对一,而这一次,我同时面对了两个面试官,这个让我很意外,同时也让我感觉到了IBM对于实习生招聘的认真负责的态度。两位面试官分别来自不同的分公司,在简单打过招呼后,就进入了最核心的问答环节。
首先是自我介绍,这个没什么难度,我准备的也比较充分;
接下来我本以为是一股脑儿的技术性问题,毕竟这是一面,然而并不是,最开始是一个比较年长的面试官在提问,先是问了下我的技术基础,然后又让我谈谈对未来的想法,顺便问了下我倾向于在哪儿工作,比如北京、宁波还是上海(天啊这不应该是最后HR问的吗,我连技术问题都没答呢就问这个我好方)。在我回答完之后他表示要去看下我的简历和Github,换到了另一个比较年轻的面试官来提问。
这位面试官的问题就基本上都是技术方面的了,包括:简述ARC,lazy关键字的使用,有没有使用过定时器,frame和bounds的区别,如何高效地裁剪出一个圆角,UIView和CALayer的区别,在TableView中实现cell的多选应该如何设计,这些问题中除了定时器我确实没有用过之外,其它的问题都是平时接触过的,但是还是有一些紧张导致回答的不是特别完美,尤其是cell的多选那个,是一个很常见的功能,实现也很简单,然而我漏说了cell的重用应该如何处理,直到面试官提醒我才反应过来,这是个很基础的内容,确实不应该忽略。
然后又换回了比较年长的那位面试官(不管是哪个面试官提问,另一个面试官也都是一直在旁边听着的),这次就是针对简历来提问了,先是问了同时对10、100、1000个数排序应该如何选择排序算法,我这里只是根据各算法的平均时间复杂度给出了一个大概的答案,面试官表示不满意,应该给出具体算法对应的时间复杂度,这样更有说服力,接下来问了单例模式的优缺点,说实话优缺点我真的不了解,但是我知道单例模式的使用场景,于是面试官直接告诉了我答案,然后问了我为什么使用Alamofire和SwiftyJSON,本以为这个问题很简单,没想到是面试官给我挖的一个大坑,我的回答围绕着库的使用,说了一大堆之后,面试官表示你的回答没有get到关键点。他想听到的是关于这两个库具体内部干了什么,而我的回答基本上趋于表面,太过浅显,但是面试官也还是给出了他对这个问题的一些见解,也让我深刻地体会到了自己知识面的狭隘。
后面的问题就比较奇怪了,或者说是……闻所未闻,见所未见,包括:如果让你敲代码敲到60岁你愿不愿意,给出理由;如果你的产品有一百万的用户量,你会不会为它24小时工作;如果你一直努力工作而且你的技术实力已经很强的情况下却一直得不到晋升你会怎么办……(这些问题都不是突然提问的,是在特定问题下的引申)这些问题我个人觉得确实很新颖,也综合考察了面试者的很多方面(之前就听说IBM对学习和思考能力有独特的要求)。在这一块儿,我觉得自己回答得还不错。
最后感觉就是和面试官的闲聊环节,问了我所学的专业,又问了一次对实习地点的要求,甚至还问到了我有没有女朋友😂。
总结一下这次面试,总体感觉还是不错的,两位面试官都很Nice,技术问题中穿插非技术问题,使我一直保持着比较放松的状态,当我有问题回答得不是很完整时面试官会给出他自己的答案,也让我在面试中学习到了很多知识。不管面试结果怎样,这一次的面试经历,都足够精彩。而IBM,也足够让我向往。