图: 明明 参加工作多年,找工作时参加过一些面试,经历过笔试,面试,电话面试等多种形式 。也作为面试官面试过很多人,也参加过公司的面试培训,观摩过其他同事的面试。最近系统学习了一下极客时间的《技术面试官识人手册》,课程介绍的东西虽然不能全盘拿来使用,但是还是有很多东西指的借鉴,今天想要从面试官的角度分享一下个人的学习体会以及个人对于面试的一些见解。

面试其实是一个公司与候选人进行双向交流的机会,也是双方进行双向选择的过程,公司通过面试官向候选人展示公司员工的风采以及介绍公司的业务技术等,候选人则是通过面试向面试官展示自己的技术素养,业务能力等。同时,面试的过程也是面试官和 候选人进行双向学习的机会。

公司和候选人双方都需要几轮面试过程中互相评估对方是否和自己匹配,公司需要确认候选人是否具有公司所需的技术能力(包括相关岗位必须的知识能力,软件编程能力,系统设计能力等),业务能力(对产品较好的理解能力,项目管理能力等),个人的综合软素质(学习能力,沟通能力,好奇心等)。

通常的招聘理念是招聘优秀的工程师而不仅仅是能干活的人,优秀的人常常是在他自己领域的技术知识是扎实的,能够把具体问题抽象成可解决的软件问题,并且能够使用软件工程的知识与技能去解决和实现他们。同时他有很好的代码设计实现能力和系统设计能力。在非技术层面 ,他能够有用很好的上面说到的一些软素质能力。

对于不同工作年限的人,面试的侧重点也会不同。对于刚毕业的学生或者工作一两年的新人,会更加关注他的成长潜力以及相关方面的软素质,比如会通过他以往的学习或者项目经历来考察他是否具有足够的学习能力,是否能够很好与人合作,用过的技术是否掌握扎实,有没有对于技术方面的热爱等等。对于一个经验丰富的老兵,通常会关注他的视野,以及他对于技术理解的深入,对于不同的团队来说,可能还会关注对于产品和团队的理解,软件系统的理解等。同时,不同的团队对于人的要求也是不一样的,有些团队也会寻找某些方面与团队比较互补的人选。

面试形式一般就是两人的对聊或者白板编程,想要对候选人进行评估 ,面试题的设计其实就很重要。好的面试题,应该是区分度、深度和覆盖范围都很好的。因此面试的过程当中,面试官可以根据候选人的表现来调整题目的难度,一是在候选人答不出来的时候给提示或者弱化要求来降低难度,二是可以通过追问和附加更多条件来增加难度,加大对于深度的延伸。

好的编程题或者系统设计题目,一般不会直接给一个抽象的问题(比如让候选人写出二叉树的前序遍历),而是一个实际问题。这样的问题,不仅仅可以考察编程能力,还可以对于实际问题的抽象能力以及需求分析的能力,同时面试官还可以观察候选人的沟通能力。对于这类问题,也便于面试官进行难度的调整。对于候选人,也应该多和面试官进行沟通,确认自己的理解是否正确,避免后续编程的实现完全错误。

对于软素质方面的考察 ,一般会通过面试的过程中进行考察,比如通过编程环节考察沟通能力 ,需求分析能力。以及会通过与候选人聊过往项目和经历来考察,因为一个人过往环境中解决困难问题时候所采取的行为在相当程度上决定了他未来会 怎样应对类似的问题。

好的面试官会有很好的面试礼节,在面试开始会握手问好,帮助候选人化解紧张气氛,进入到面试中。面试结束也会留给对方问问题的机会,并对于候选人表示感谢等。

最后再说一下,公司的面试通常不是为了把候选人考倒,而是发现对方的亮点和长处,能够为自己找到合适的人才。

2023年的第一篇文章,是个人写作能力的锻炼,也是输出的尝试,毕竟只有能够输出才算对所学内容有所消化。