处女面试小结

感谢老大给机会我去体验当面试官,虽然没给我多少心理准备,虽然我当时还在training……

看了看时间,每人40分钟。趁面试开始前翻了一下feedback的Check list,看看有哪些需要考察的。总归是三大项,专业技能,研究领域,个人性格。于是根据这几项分配时间。目前觉得如下分布比较合理。

开始阶段

自我介绍。建议让讲点简历上没有的东西,可以看出应变的能力,能传达出一种淡定干练的感觉就非常好了。1分钟
简单的交谈,问一些开放性问题。平时会看什么书?上什么网站啊,等等。(我今天在这样问的时候,HR姐姐过来在我耳边说,我们一二面主要考察代码能力。囧。好吧我争取干到以后能随便问开放性问题)1分钟

正式面试

Linux / shell / Editor usage (看candidate的简历选择,不要超过2个),完成日常工作中常用的系统管理和自动化的操作等等,知道就知道,不知道就问别的。无需展开。2分钟
OS / Database (根据简历选,同上,2 分钟)

编程题 / 特定领域知识 (二选一)
10 分钟
编程题
代码实现尽量不要超过30行,15行左右为佳。就不要让写CLRS上的算法啥的了,没意义。
主要考察一下简单编程功底,包括

  • 指针的使用
  • 动态分配内存的释放
  • 边界条件的处理
  • 编程风格
    今天我把这个demo展示出来,提供了某些画图函数,让写了个遍历二叉树 ,应该不难吧……

特定领域知识(假如你对这个领域有一定了解的话,不妨试试这个)
例如,熟悉ML/NLP的,就可以问问如何实现垃圾评论/邮件过滤;熟悉MapReduce的,就设计一个大数据运算用例。
可结合系统设计同时询问。在面试者提出系统设计的时候,需要不断找到系统的盲点,让面试者不断完善。这对面试官的要求就比较高了。

算法题
15-20 分钟:5-10分钟讨论算法,10分钟写(伪)代码
不要难到ACM水平才能解出。提示、帮助面试者得到思路和结果。

防AK
最后预留一条数学题避免题目被AK。

结束阶段

让candidate问问题, 3-5分钟。传达公司最大的善意以及自己对面试者的建议。

交流阶段

不要忽视后续各个面试官之间的交流。
1、交流面过的内容(避免知识性的问题重复出现)
2、简单交流优缺点(用于后续简单验证)
3、经验尚浅就不妨请教一下资深面试官的相关经验 : )

总结

  • 提前熟悉一下简历还是很重要的,在坐到面试者前面时才拿到简历会很被动(今天我就是这样)。
  • 40分钟时间略少,问不了多少code,能写完两道code的应该都是比较优秀的了。由于考察内容不多,导致最后给HR姐姐反馈的时候不是很确定。
  • 我出的题目都是基本源自各种游戏和来自实际工作,基本不用担心有重题。但目前还需要更广泛的涉猎去面对不同背景的面试者。假如熟悉他们的领域,上下文同步,会比较容易想到题目让面试者有更好的发挥。对于校招,还是要挖掘candidate的闪光点。
  • 预先设计好题目。每个环节准备三个不同难度的题目,这样就可以根据面试者的表现提高或降低难度来不断逼近面试者的真实水平。
  • 利用其它同事的总结。假如同事说某个方面强/弱,而你又觉得这项能力非常critical,简单验证一下。否则就可以选择别的领域继续了。
  • Don’t Dominant the Interview. 假如面试者最终仍不能给出有效的答案,跳过的时候点一点思考的方向即可,没有必要再详细解释解法(今天我给的答案都巨详细,应该耗费了不少时间)。还是应该留出更多的时间让面试者 Shine。

目前接触到的样本实在太少了,所以真的不知道哪种水平是average,那种水平是excellent。对于某些不是很突出的候选人,会犹豫给不给Hire。我只能根据自己的感觉了——Whether I want to work with him/her, or not. 初期这有可能导致门槛定得过高,不过我相信很快就会调整到一个合适的高度。

面试还是挺好玩的。

Share