首页 > 程序人生 > 程序员面试技艺 > PHP 工程师面试的四个环节
2015
08-26

PHP 工程师面试的四个环节

一,自我介绍

任何一个面试的开始,我都会先对公司、所面试的职位以及我自己进行自我介绍,这一点我觉得很重要,而且这个也是很多面试都忽略的一点,别人来面试,可能对你的公司完全不了解,如果你不是知名的互联网公司的话,这一点很正常,对于职位的信息,面试者可能知道的就更少,如果面试了一场,别人都不知道自己处于公司架构中的一个什么位置,我很怀疑这种公司是否招人,面试官也是否真诚。最后应聘者对面试官的信息的了解估计就更少了,可以说是一无所知,而面试官已经从简历上知道了应聘者的大部分信息了,所以这个自我介绍就显得很有必要,而且必须是在面试开始的时候传递给应聘者。

二,应聘者的自我介绍

因为简历中已经有应聘者的基本信息,所以这个介绍并不是为了得到更多的应聘者的基本信息,只是从第一个环节转换到第二个环节——开始对应聘者的提问。自我信息介绍完了以后,我会开始让应聘者介绍他的工作经历、离职原因和各个公司大概的项目经历,这个环节就基本上可以考察出这个人的能力处于一个什么位置了。一般优秀的人在介绍他的项目经历都会显得比较自信,这个很关键,这就是所谓的成就。优秀的面试官这个时候就应该给对方以肯定,然后再在后面的环节中重点考察,不过有些遗憾的是大多数面试官的第一反应是怀疑,而且特别喜欢找出别人的破绽,然后发表自以为是的高见。如果对方所描叙的每个工作的经历都差不多,也没有什么值得大书特书的项目经历;如果这个人工作了比较长的时间了,那可以说明这个人并不是一个很有进取心,能力也一般的人,当然这并不是说就可以把别人pass掉了,最后是否招聘,需要考虑的还有这个职位需要什么样的人,以及这个职位能够提供多少薪水,别指望花少的钱招好的人,即使这样招过来了,别人也干不久的;如果应聘者工作的时间并不长,那么就可以考察一下对方是否有潜力了,我个人觉得招聘到一个有潜力的人是最成功的面试,因为这种人的薪水不会很高,而且有潜力意味着肯学习、积极,这会给整个团队带来很多正能量,并且如果他可以跟公司一起成长,那么假以时日,对公司而言就会是一笔相当可观的财富,对于对方而言也是一样,这是一种双赢。

三、能力考察

这个环节是最关健的。通过第二个环节了解了应聘者大概处于一个什么位置,那么这一步就是要考察对方是否真正的具有我们所认为和所需要的技术能力、潜力,除此以为还要考察沟通能力和团队协作能力。所有这些能力都可以归结为一点,那就是解决问题的能力,因为程序员的日常工作就是不断的解决一个又一个的问题,那怎么考察呢?我一般会以下面几种方式来考察:
1 、选取应聘者自认为所做的项目中最有价值、最有挑战性或者最有难度的部分,我首先会了解他是怎么解决这些问题的,然后在他的回答中进行互动,提出各种各样的问题和假设,考察对方如何应对。
2 、跟对方探讨他所最熟悉的技术,框架啊或者数据库之类的东西,或者是一些他在简历提到的或者是在第二个环节中提到的,注意这里主要的目的是探讨,因为有些技术我自己也未必熟悉,不过如果应聘者可以把某个他熟悉而你不熟悉的技术的特点讲清楚,这就相当不错了。
3 、我提出一个问题来探讨如何实现,然后在实现的过程中不断提出新的问题。

一般在一次面试过程中这几种方式都会用到,而且三个过程都会伴随着在纸上或者白板上画一些解题思路以及架构图,当然最重要的是,这里必然会有一个部分要求应聘者写代码。

对于上面的几种方式的结果,如果对方能够很好的理解我所提出的问题,以及对于各种问题都会有自己的见解和解决方案,并且对于某些问题还可以提出比较独到的见解,特别是可以对我所提出的问题进行批判,指出其中的不合理之处,那么很显然这会是一个很优秀的程序员,当然这并不是说招聘就应该招这种人,这需要面试官来判断,结合职位的要求和薪资水平来决定吧。

四、提问

一般面试的最后都会有这么一个环节,这个环节意义不大,不过我个人还是更喜欢应聘者会提出一些关于职位、团队和将来可能的工作相关的问题,不是很喜欢关于薪资、是否加班、以及福利的问题,这些都是跟人事相关的,至于加班,呵呵,做技术都会有一点,那些加班很多的公司估计也不会说得很明确吧。

最后说下我个人在面试中不是很关注的东西:

1 、学历,我之前面试过一个还不错的人,但后来这个人学历造假,入职没有通过,人事告诉我的时候,我告诉她我都没有注意到他的学历。不过这不是说学历不重要,只是我觉得学历不应该成为关注点,特别是对于应聘者,自己搞不定,就别怪学历。
2 、工作经历。这不是说工作经历好和工作经历坏都一样,很显然工作经历好的会加分,但这并不意味着工作经历坏就会减分,我们处于一个什么样的环境大家心里都清楚,一个人学历不好一毕业就很难进入那种知名的公司,去不知名的公司,碰到垃圾公司的概率很高,工资低、加班多、福利差,所以跳槽多一点,完全可以理解。
3 、死记硬背的东西。例如前面几个人的回答所说的那些问题,这些问题只有在我实在找不出什么问题问,而且所问的问题都得不到满意的回答,而且说不了1-2句就断了的情况下才会问,不过这种情况出现了也基本上意味着面试就结束了。


好了,就写这么多了,面试是一个动态的过程,而且要在1-2个小时的时间内就考察出一个人的能力这基本上是不可能的,所以很多时候是否能够招聘到合适的人面试官的面试能力才是最重要的,特别是在公司时间和成本有限的情况下,面试官的一次面试就要做出是否招聘的决定的时候,面试官的面试能力就显得更重要。不过我个人还是觉得面试应该制定一个制度性的流程,通过几轮不同的人的面试来决定。关于这个我推荐大家一本书,名字叫做《打造Facebook》,这是一个facebook的华裔技术人员写的,里面说到的facebook对工程师的面试方式还是很有借鉴意义的。

编程技巧