从开发人员向一个管理人员的过度的必要过程就有招聘新人的过程。这是一个很有趣和有意义的过程。在历任工作中,我多次作为面试官来招聘技术人员,同时我也是一个面霸,总共经历了快上百次的技术面试了,所以在这里总结一些。
面试的核心问题是什么?
- 公司展示,职位展示。
- 面试者能否胜任这个工作。
- 面试者个性性格的基本判断
- 薪资的谈判
其中1,3,4比较通用,属于招聘人员的通用技术,请找HR学习。本文主要对第2条展开叙述。
最常见的通用技术职位面试流程:
- 填写面试资料
- 面试技术笔试题
- 技术主管面试
- HR面谈
- 技术经理(CTO)面试
- CEO面试
不同公司个别流程会省略,也和面试职位等级有关,高阶职位笔试很可能没有,直接与CTO开始谈,如果面试CTO当然直接和CEO谈。CTO面试和一般技术人员不同,这里不做讨论。我这里先专注与初级技术人员,技术主管,技术经理的招聘。
详细询问过往的开发经验,项目经验?
很多公司很看中面试者的过去经验,这点上我觉得需要区分公司对职位的需求目标。很多欧美公司,微软,惠普,Facebook招聘时要求很苛刻,经常会问算法题,而相对少问经验,更看中面试者个人素质,基础能力是否扎实。而国内公司就更多的问经验,我认为国内技术公司更看中面试者的即插即用
技术面试提问的注意项:
- 技术面试中问一些太宽泛的问题
请帮我讲一下数据库的索引?
如果我们打开一个站点页面很慢,如果优化?
太宽泛的题得到的答案要么也是很宽泛:索引可以让查询的速度变快……,这样的答案谁都可以说,可是不能证明他的层次。
还有可能文不达意或者只说到很小的一个细节点:开页面慢,增加服务器,做负载均衡
- 不要问太多太技术细节的问题
Date类型在C#中是值类型还是引用类型?
C#中所有值类型的基类是什么?
这类问题是知识性的问题,结果无非就是面试者知道或者不知道。如果知道,有可能是因为在工作中常用到,有可能是因为正好做了这类的面试题,有可能是偷偷baidu出来的。对于面试官来说,这类问题即使答对来,也很难区分他到底会不会,技术好不好。即使他没答出来,回去Baidu一下,也许第二天再来做一次一样的题,就能答的很好了,那么这就证明,这类题的区分度非常的有限。
如果是我,我会用到逐层递进的问法,一直问到面试者无法回答的情况,从而确认他的等级:
Date类型在C#中是值类型还是引用类型?
值类型是储存在堆上还是栈上?
在做大数据量的操作时,堆和栈哪个会更快?为什么?
GC是什么?如果我说GC只能释放堆上的东西,是不是正确?
举例说,哪些东西GC不能直接释放?那么又如何处理?
现场做题:
我最近一个用的很好的题:请现场写一个你认为最熟悉的设计模式的例子(除单例模式以外)
首先这样面试者无法作弊,无法通过网络或者其他手段(找枪手)找答案。
其次,只要是学过设计模式的人,用过设计模式的人,总能想到怎么写例子。
还有,这个题可以排除掉只会说,不会写代码的人,也可以顺便看看面试者的代码书写习惯等。
另外,可以直接的获得面试者的解题思路,并可以现场的进行引导。一个好的技术主管在面试时引导面试者的方式,其实也就是未来在指导新人解决技术问题的方式
要不要面试题?
要,特别是初级职位,面试题很有必要。
但现在网络太发达,很多经典面试题直接上网就可以找到,导致没有真正的区分度,所以最好是网络上找不到的题。
不要太多知识性的问题。
例如Http和Https的区别。
网络7层架构分别是什么?
请列举几种设计模式
面试者个性性格判断方法
谈话方式,微表情,动作
离开上一家公司的动机,他是如何做出这样一个决策的?(面试者的决策方式)
未来3-5年的规划
公司展示,职位展示
公司展示对于一些并不出名的企业尤为重要。一个好的公司展示会直接影响到面试者最终选择。BAT就不用说了,现在携程,美团等在一个领域称霸的公司,其实也不需要多做介绍。如果是C轮融资之前的公司就要好好考虑下该怎么介绍了。一个简单易用的方法是找公司的销售主管去问问,向客户简单介绍公司是如何进行的,一个1-2分钟的展示。这种展示是陈述式的,突出亮点,却不是书面上的那种,如公司1995年成立,由XXX出资,股东有XXX。
职位展示内容大概就如同在网站职位招聘的要求和职责,另外可以突出职位发展空间等。另外可以加入公司特有福利,如男性同享生育假,年终分红等
关于薪资
薪资谈判这个事其实也是招聘是否成功的一个关键因素,不过这个超出了本文的论述范围,一个简单建议就是把薪资的事交给HR处理更好。作为技术面试官只需要给出以下几点:
此人是否符合面试职位的基本要求
在符合要求的基础上,给面试者评级:优,良,中,及格(最好分别对应此工作职位的薪资范围)