如何当一个好的技术面试官?
从 09 年开始,我自己做了十一年的研发工作,大概在2011年起就开始做技术面试官,这些年积累下来也有小1500余人的面试经验。一开始也是跟大家一样,甚至比候选人还紧张到后面略有心得。在这里跟大家分享一下经验。
开始前,我们先来回顾一下面试的核心目标是什么。技术面试的目标很明确:招聘到你自己部门或公司需要的人才,这个人才你很乐意与之共事,未来可以长期发展。
所以,面试的第一步,是弄清楚自己需要什么样的人才,把人才画像定义的越清晰,面试起来越有针对性。比如,我们公司预算有限,允许一定程度的培养,我们就需要去挖掘一些潜力性的人才,聪明好学的。如果需要马上能上手工作,就需要非常有针对性安排面试问题,把工作中一些内容抽离成问题进行面试。
平等交流是核心
面试最易犯的错误是利用面试官的主动优势,把对方考倒,甚至是刁难。因为候选人未来是要加入团队的,面试过程其实是双向的。你考察对方的同时,对方也在观察你们的表现,可以说也代表了公司的表现。所以,我们首先上要从态度上端正,尊重对方就是尊重自己。平和平等与对方交流相关问题。
引导挖掘对方的潜力
一场优异的面试,是一场让候选人把自己真实能力表达出来的面试。我们很容易利用自己的主场优势,不断就自己熟悉的技术问题进行提问。其实在一开场,一定要经历一个主动挖掘对方擅长技能的过程,比如以下几个问题就是很好的开端:
非常感谢来我司进行面试,可否先介绍一下自己近期的一份工作经历?
中间完成了什么工作? 你的工作职责是什么? 为什么选择某个框架作为主力开发?
你在编写你模块的时候,其中有哪些关键决策?决策的原因是什么?
大家可以看到,上面这些问题全是关于对方的思考决策的分析,这特别有助于推断候选人在入职后的表现及成长力。因为一个人除非经历大事件,否则认知决策能力不会发生大的变化。
开始结构化面试
通过上述信息,可以宏观了解候选人的综合情况,也基本上了解了对方擅长的技能方向。如果表现尚可,便可以进入实际的技术能力考察环节。这个环节对于技术人员来讲,占到70%以上的比重。
这里的考察原则,最好是对方了解,在工作中又比较重要的内容。常见的错误是,不管对方怎么样,全是一模一样的考察内容。对于咱们面试官来说,这个时候掌握更多技术和深度就比较有意义,可以尽可能多的了解对方的表现。
考察的方式,一般是先从某一个工作中的问题开始,逐步深入到底层原理,了解对方解决具体的问题能力,并且对原理理解到什么层次。
以此为基础,不断从编程语言,框架,计算机原理,算法等进行询问交流,值得注意的是,一定要以平等、平和的方式进行交流,就算总是无法正确回答你的问题,在最终放弃之后,也需要认真想一想和试一试,对方是否还有擅长的优势技能没有发挥出来。
这里我提几个技术工程师的重要判断点:
编程语言的掌握程度(语法、语言特点)、编程框架的掌握情况、编程基本功(建议通过编程白板查看)、计算机基础(进程/线程、锁、数据库、网络编程模型等)
值得提一下,不要过于纠结某一个问题是否答的正确,而是看整体的系统理解力,借此判断对方的成长能力。
其他软技能
下面这个能力也很重要,一般不需要技术面试官进行专门考察,但也非常值得从细节上留意观察。
沟通和理解能力:通过跟对方沟通某一个具体的问题中感受,技术工程师只要能够准确理解和表达问题,就可以了。反而要留意那些特别能讲的人,除非是技术布道师,否则太能讲反而要减分。
学习能力:了解对方最近学习的内容和深度,是否爱好分享。如果能从侧面了解到对方的学习能力最好。因为刻意的询问,反而让对方有了包装自己的机会。
个人动机:了解对方的成长动力,判断对方的潜力。
个人价值观:一定要是一个以诚信为本,相信一分努力一分收获的人。
总结
通过以上维度,可以比较准确考察候选人的能力,平等、平和沟通是最重要的。永远要记住,你在面试别人的时候,别人也要面试你所在的团队。
最后,适当选择一些面试工具,也可以明显加强在技术面试中的准确率。目前在线技术面试日益兴起,如果约面比较难,可以先用一些专门的在线技术面试工具约一轮,后续面试效果可以提升很多。对于候选人来讲,到公司做一场面试,时间成本极高,一场更有可能的面试机会,才值得专门跑一趟。