进入软件开发这个行业差不多10年,做为候选人被面试过,也做为面试官面试过别人。这几年做为后者的角色越来越多,慢慢总结出来了一些技术面试的原则,也是自己在实践的一些原则。

Should

  • 让候选人介绍自己拿手的项目或者模块,考察其问题描述能力、沟通能力。
  • 根据简历上写的的项目经验,考察候选人对用过的东西有没有消化、掌握的深度,判断其是否是一个善于思考、主动学习的人。
  • 计算机科学基础知识,考察候选人的计算机基本功,能达到的上限有多高。尤其是对于实习生或者应届生来说是最最重要的一点。社招可以适当放宽要求,但起码要对常用的计算机基础知识有大概的印象。
  • 实际工作中需要的知识,考察候选人能否胜任职位要求的工作。
  • 开放性问题(算法或者实际场景下的问题,是候选人没有接触过或者接触不深的)考察候选人是否聪明,思路是否活跃。
  • 问候选人觉得自己相比其他人的优点是什么,具体的实例。可以基于这个优点出一些题目。从而考察候选人对自己是否有明确的自我认知。

Shouldn’t

  • 不要抱着证明自己比候选人强的心理进行面试。包括一直试图找候选人的缺点、问自己拿手的而候选人没有接触过或者接触很浅的点(除非是职位的关键技能点)。面试的目的是看候选人是否能够胜任职位,而不是挑剔候选人。
  • 不要问候选人没有接触过的RTFM问题。这类问题,查阅手册/文档就能知晓,并不是什么核心竞争力。
  • 不要问脑筋急转弯式的问题。
  • 不要太看重面试人已经会的,多看一下候选人的基础素质、学习能力、学习欲望、上进心等决定上限的点。