经历过面试的求职者,大都会有一个感受,在面试之前如果没有好好准备,贸然去一家公司面试,除非硬实力超群,否则结局会很悲催。同样作为一名面试官,在面试之前,也应该要做好一些准备,明确自己需要什么样的partner,如何才能快速发现候选人的真实水平。一次良好的面试,不仅是对候选人的负责和尊重,同样也是对自己和公司的负责及尊重。
面试前的筛选准备
简历筛选
收到投递的简历之后,我们一般在邀请候选人过来面试之前,应该先要仔细的筛选下简历,很多人可能会觉得先叫人过来试试,其实这样不仅浪费求职者的时间,同时也耗费自己的精力和时间。所以我们在面试之前,最好先阅览下求职者的简历,看下求职者和岗位是否匹配,如果简历中有附带博客链接或者开源项目的话,可以抽出一部分时间去看下别人文章,一方面可以通过文章内容了解求职者的研究方向,另一方面也可以看出作者对技术的理解和深入程度。
准备面试的问题
在了解清楚候选人的基础背景之后,我们还需要根据简历,准备一些针对性的问题,可以是他简历中提到的一个技术框架,也可以是他项目过程中某个技术难点细节的实现方式,抑或你当前项目中遇到的一个难题,可以探讨下有没有更好的解决方案。
面试过程中主要考察哪些点
简历是否真实
筛选简历只是做好了第一步,面试的过程才是甄别简历是否属实的过程,无论求职者简历上描述的有多么的天花乱坠,通过面试过程,和有针对性的提出几个问题,求职者的实力瞬间会被展现出来,从初级的问题开始问起,逐步深入,可以考察一个求职者真实的水平有多高。
我们可以从他简历里面提到的项目开始聊,问他在项目中主要负责哪块,让他详细描述下他负责那块的内容,然后针对里面用到的某个技术深入提问,可以问他实现方式,或者是技术的原理,然后从他的回答中发现是否和简历中描述的能力一致,是否有夸张,夸大,造假的成份。
技术的深度
很多人可能只是对某项技术只是停留在使用的基础上,然而却在简历里面大肆吹捧自己各种精通。我们可以针对简历中描述的各种"精通"技术,选择其中一两项技术进行深入提问,从接入方式,到技术的实现原理,逐步深入提问,看他是否可以准确的回答问题。毕竟一个人对他所做的事情了解的越深,他能把这件事情做好的概率越大。
一个人要同时掌握那么多知识并且都深入几乎不可能,那都需要拼学习效率和工作年限了,而你曾经做过的东西,正在做的东西,是绝对可以了解的更深入的,一个对技术有好奇心,有技术热情的人,都不会仅仅停留在这个东西好用,而是会忍不住去探究它背后的技术原理,即便不是亲自去看源码,也会花点时间了解别人整理过的东西,所以单凭考察技术上的深度,就可以考察一个人是否对技术有热情,是否有技术好奇心等等这些,是否具有"优秀程序员的特征"。
技术的广度
深度是必要条件,广度是加分项目
同样有技术好奇心的优秀程序员,也不会满足于仅仅局限于自己的一亩三分地,工作之余,也要去尝试一些其它的领域和方向,因为投入的问题也许不够深入,但很多领域知识你知道或者不知道,对你个人知识体系的形成关系很大。
逻辑思维能力
通过交流观察,可以判断一个人在表达观点的时候,逻辑是否清晰,回答问题是否有章法,比如让候选人介绍描述一个框架的时候,是否会从框架的定义,概述,使用方式和实现原理,逐层递进的来介绍和讲解框架。
另外我们在问问题的时候,可以从下面三个角度来观察候选人的逻辑思维能力:
- 问他做过什么,如果有成品的话,我能看看更好。
- 从他做过的东西里面,找到问题进行提问。
- 具体的问题看情况,可以是界面或效果的实现方式、相关bug的排除、该部分原理的分析。
面试总结
面试是个技术活,其本质上是一次沟通的过程。候选人要在限定的时间和条件内向面试官展现自己的才能,而面试官同样也要在有限的时间和条件内发现候选人是否适合该职位。
准备好问题
面试前提前针对候选人简历和岗位要求,提前准备好一些问题,在面试过程中可以用来考查候选人的真实水平。
找到合适自己的
有时候招人和找对象很相像,不一定是非要找一个技术能力特别强的,很多时候需要找一个适合自己公司岗位要求的。
保持良好的素养
面试是最好的传播公司品牌和文化的机会,在成功失败可能性不可控的面试过程中,把面试者发展成为对公司抱有良好映像的传播者。用比较佛系的说法,可以理解成广结善缘,把面试者当作朋友,坦率平和的交流。