如何进行一场有深度的技术面试
程序员文章站
2022-05-27 13:51:47
...
首先简单说一下面试,一场面试,候选人和面试官,对立的双方,在进行一场几乎是自己智商极限的对决,面试官初始占据一些优势,但是一旦在面试的过程中把握不好,错失掉自己的主动,往往也会被人指责没有能力,技术一般的字眼。而如果在面试的过程中用力过猛,则往往打的候选人信心全无,没法具体看出来一个人水平的高低。所以说,面试对于候选人来说可能仅仅是一场挑战,但是对于面试官来说,则是一个擂台,一方面你要守住擂,一方面你还要发现出来真正的人才,当然有些时候还需要你个人能够抓住候选人的心思,对候选人构成吸引。
我们是做技术的,面试不是我们的专业,但是同时,我们是做技术的,是世界上最理性最具备学习的一群人,所以我们可以以程序的方式,用if-else来进行我们的面试。
首先,了解一下我们的面试流程,一个面试一般包含,自我介绍,技能问答和互问互答几个阶段,在每个阶段,作为面试的发起方,我们面试官都应该有方法能够引导和推进一次面试。
面试三板斧:
第一板斧,自我介绍,如同任何的会面都会以简单的介绍作为铺垫,面试的开端往往都以候选人的自我介绍开始,这里面往往就存在一个问题,有经验的面试者会在自我介绍的时候自然不自然的影响面试官,让接下来的面试往自己的方向走,这个其实特别的好,因为我们面试要发掘的就是候选人好的一方面,但是,这时候应该特别的注意一点,作为面试官在被候选人带走的同时,不要忘记自己总有一些点儿是需要考察的,比如一个人的基础编程能力,基本的逻辑思维能力,沟通的能力等等,如果候选人带你走了一圈之后这些东西并没有被表现出来,那么这时候我们就需要把自己的问题塞入面试者的沟通过程中,来得出自己的结论。但是往往的,我们的面试对象都是普通的程序员,大部分都不太会自己组织面试,自我介绍往往仅仅包含学校,工作经历这些流程,其实对于技术面试是没多少用处的,所以这里要提到的就是自我介绍的第一板斧,学会发问。从应聘者的简历的侧重点来划分的话,大部分的面试者都可以被分为两类,一类是展现技术的,大量的技术名词被堆砌在简历里面,经验里面也充斥着不同的技术以及体验,这种候选人是我最喜欢的类型了,因为他的这些技术关键字给我们提供了无数的提问的空间,所以,针对这种类型的候选人,我都不会让候选人的自我介绍单纯的按照自己的思路来,一般会提出一些要求,比如,要说出来自己工作的内容以及团队构成,或者使用的开发管理模式等等,你可以看出来这个是偏离了技术的,原因很简单,对于一个展示自己技术很多的人,我们将会在技能问答的环节获取大量的信息来判断这个人的技术如何,但是任何软件开发都不是一个个人行为,所以我选择在自我介绍这个环节让这一类型的候选人更多的来描述自己是如何工作的,以查看候选人的团队合作能力和沟通能力,如果这些方面存在问题,人员也是无法使用的。现在来说另一类,这一类的面试者的简历里面除了在自己的技能部分简单的罗列了一系列的技术名词之外,剩下的内容主要说明了自己所参与过的项目以及项目的介绍,其实这一类的候选人更加难以甄别一些,因为留给我们的发问点儿并不多,所以需要在自我介绍的阶段让对方暴漏出来更加多的可以在后面阶段发问的内容,一般我都不会让对方自我介绍,而是说介绍一下最近一份工作的内容,不如你们用了什么样的技术,解决了什么样的问题,如果自我介绍阶段继续没有拿到我想要的内容,我会补充一个问题,介绍一个自己解决的比较得意的问题,以方便自己切入到提问环节。
第二板斧,发问的艺术,兵无常势,水无常形,所以说面试也不存在一成不变的套路,自我介绍环节,面试官只需要一两句话然后就去聆听和观察即可,但是在发问阶段则需要花更多的心思,问的好了,不然候选人的能力跃然而出,同时还能对候选人直接形成技术吸引力,问的不好,不着边际,候选人往往会对你的问题不以为然,比如明明一个人没有做过数据库相关的内容,但是你面试的问题三句不离数据库,那么不论候选人的真正能力如何,已经很难面试出来真正的水平了。那么在提问的环节,具体的我们应该怎么去发问呢?还是要回到前面说的两类人,一类人已经给了你充足的发问空间,那么就问吧,对方罗列的技术,首先简单的问一遍理解,然后问一下项目的使用程度,最后再问一下技术的原理,这时候有人问了,候选人全答上来了怎么办?当然是内心欢欣鼓舞,表面默不作声喽,的确是个不错的人才,但是要想让人进来,一定不能让对方过于得意,接下来为了后面面试的需要,需要简单的打压一下,问一些比较深入的问题,问一些难一些问题的解决方案,如果对方依然对答如流,那么恭喜你,人真的很不粗,试试问问算法和计算机原理,操作系统这些level的内容,如果依然可以,那么就结束这个环节算了,对方是个高手。(高手毕竟很少,所以勿需担心)。经过前面的一通发问,这个人对于自己的技术的领悟能力,以及学习的能力和态度就已经出来了,只是粗枝大叶的知道的可以直接过滤掉,不能说出来技术原理的建议进入下一环节查看但是最好是多个人之间进行对比,既能说出来原理,又能不停深入的,这个嘿嘿,真的不需要犹豫了,直接进入下一环节。OK,说完了比较好面试的,现在来说一下简历里面没有留下多少技术点儿的,往往的这种人要么是对技术不是很有信心所以规避,要么就是另一种极端,技术真的很好,对于软件的认知很全面,知道技术不是重点,后一种人真的是可遇不可求,所以我们还是针对前一种来说。对于这种面试我们只能走套路,什么叫做套路,就是把我们工作中所用到的技术一个个拿出来发问,先从基础开始,然后数据库,并发,服务器,网络以及解决问题的思路,最后别忘记考察一下具体的代码思维能力,比如简单的描述一个小算法或者设计模式都是不错的选择。其实这一类人是最难面试的,因为没有把自己最擅长的方面表现出来,所以往往会有一些人错失掉,这个我们只能表示默哀。
第三板斧,总结以及相互交流,一般能进入最后这个环节的人都是我比较满意的,所以一般我都会多说两句,或者是针对刚才的面试的简单总结,或者是分享一些在某些方面自己的心得,简单的吸引一下候选人,然后偷偷的抛出来最终的杀器,你有什么想问我的么,这个表面看起来是一个比较无厘头的问题,但是如果对方是在那种可选可不选的人上面,如果对方无法问出来针对刚才的短板相辅相成的问题,那么基本就错失掉这次机会了,怎么讲呢,比如一个候选人技术一般,但是交流起来还可以,那么我期望对方问出来一些自己的技能应该怎么和工作匹配相关的问题,这说明对方自己了解自己的长处,价值还是比较大的,而如果对方问出来的是一些比较偏僻的技术问题或者简单的问一下你们使用的技术,那么基本已经无法作为加分项了。同理如果一个技术面试还可以但是感觉交流存在一些问题的人,如果问出来的问题继续偏执于技术,那么这时候往往会让我心生疑虑,这个候选人会不会过分偏执而导致团队合作的问题。当然了在问这个之前一定要提前说明白对方的一些问题,如果一个人当时就反省了,那么人嘛,有些短板是自然的,毕竟作为面试官,进来之后我们还负责培养不是?
我们是做技术的,面试不是我们的专业,但是同时,我们是做技术的,是世界上最理性最具备学习的一群人,所以我们可以以程序的方式,用if-else来进行我们的面试。
首先,了解一下我们的面试流程,一个面试一般包含,自我介绍,技能问答和互问互答几个阶段,在每个阶段,作为面试的发起方,我们面试官都应该有方法能够引导和推进一次面试。
面试三板斧:
第一板斧,自我介绍,如同任何的会面都会以简单的介绍作为铺垫,面试的开端往往都以候选人的自我介绍开始,这里面往往就存在一个问题,有经验的面试者会在自我介绍的时候自然不自然的影响面试官,让接下来的面试往自己的方向走,这个其实特别的好,因为我们面试要发掘的就是候选人好的一方面,但是,这时候应该特别的注意一点,作为面试官在被候选人带走的同时,不要忘记自己总有一些点儿是需要考察的,比如一个人的基础编程能力,基本的逻辑思维能力,沟通的能力等等,如果候选人带你走了一圈之后这些东西并没有被表现出来,那么这时候我们就需要把自己的问题塞入面试者的沟通过程中,来得出自己的结论。但是往往的,我们的面试对象都是普通的程序员,大部分都不太会自己组织面试,自我介绍往往仅仅包含学校,工作经历这些流程,其实对于技术面试是没多少用处的,所以这里要提到的就是自我介绍的第一板斧,学会发问。从应聘者的简历的侧重点来划分的话,大部分的面试者都可以被分为两类,一类是展现技术的,大量的技术名词被堆砌在简历里面,经验里面也充斥着不同的技术以及体验,这种候选人是我最喜欢的类型了,因为他的这些技术关键字给我们提供了无数的提问的空间,所以,针对这种类型的候选人,我都不会让候选人的自我介绍单纯的按照自己的思路来,一般会提出一些要求,比如,要说出来自己工作的内容以及团队构成,或者使用的开发管理模式等等,你可以看出来这个是偏离了技术的,原因很简单,对于一个展示自己技术很多的人,我们将会在技能问答的环节获取大量的信息来判断这个人的技术如何,但是任何软件开发都不是一个个人行为,所以我选择在自我介绍这个环节让这一类型的候选人更多的来描述自己是如何工作的,以查看候选人的团队合作能力和沟通能力,如果这些方面存在问题,人员也是无法使用的。现在来说另一类,这一类的面试者的简历里面除了在自己的技能部分简单的罗列了一系列的技术名词之外,剩下的内容主要说明了自己所参与过的项目以及项目的介绍,其实这一类的候选人更加难以甄别一些,因为留给我们的发问点儿并不多,所以需要在自我介绍的阶段让对方暴漏出来更加多的可以在后面阶段发问的内容,一般我都不会让对方自我介绍,而是说介绍一下最近一份工作的内容,不如你们用了什么样的技术,解决了什么样的问题,如果自我介绍阶段继续没有拿到我想要的内容,我会补充一个问题,介绍一个自己解决的比较得意的问题,以方便自己切入到提问环节。
第二板斧,发问的艺术,兵无常势,水无常形,所以说面试也不存在一成不变的套路,自我介绍环节,面试官只需要一两句话然后就去聆听和观察即可,但是在发问阶段则需要花更多的心思,问的好了,不然候选人的能力跃然而出,同时还能对候选人直接形成技术吸引力,问的不好,不着边际,候选人往往会对你的问题不以为然,比如明明一个人没有做过数据库相关的内容,但是你面试的问题三句不离数据库,那么不论候选人的真正能力如何,已经很难面试出来真正的水平了。那么在提问的环节,具体的我们应该怎么去发问呢?还是要回到前面说的两类人,一类人已经给了你充足的发问空间,那么就问吧,对方罗列的技术,首先简单的问一遍理解,然后问一下项目的使用程度,最后再问一下技术的原理,这时候有人问了,候选人全答上来了怎么办?当然是内心欢欣鼓舞,表面默不作声喽,的确是个不错的人才,但是要想让人进来,一定不能让对方过于得意,接下来为了后面面试的需要,需要简单的打压一下,问一些比较深入的问题,问一些难一些问题的解决方案,如果对方依然对答如流,那么恭喜你,人真的很不粗,试试问问算法和计算机原理,操作系统这些level的内容,如果依然可以,那么就结束这个环节算了,对方是个高手。(高手毕竟很少,所以勿需担心)。经过前面的一通发问,这个人对于自己的技术的领悟能力,以及学习的能力和态度就已经出来了,只是粗枝大叶的知道的可以直接过滤掉,不能说出来技术原理的建议进入下一环节查看但是最好是多个人之间进行对比,既能说出来原理,又能不停深入的,这个嘿嘿,真的不需要犹豫了,直接进入下一环节。OK,说完了比较好面试的,现在来说一下简历里面没有留下多少技术点儿的,往往的这种人要么是对技术不是很有信心所以规避,要么就是另一种极端,技术真的很好,对于软件的认知很全面,知道技术不是重点,后一种人真的是可遇不可求,所以我们还是针对前一种来说。对于这种面试我们只能走套路,什么叫做套路,就是把我们工作中所用到的技术一个个拿出来发问,先从基础开始,然后数据库,并发,服务器,网络以及解决问题的思路,最后别忘记考察一下具体的代码思维能力,比如简单的描述一个小算法或者设计模式都是不错的选择。其实这一类人是最难面试的,因为没有把自己最擅长的方面表现出来,所以往往会有一些人错失掉,这个我们只能表示默哀。
第三板斧,总结以及相互交流,一般能进入最后这个环节的人都是我比较满意的,所以一般我都会多说两句,或者是针对刚才的面试的简单总结,或者是分享一些在某些方面自己的心得,简单的吸引一下候选人,然后偷偷的抛出来最终的杀器,你有什么想问我的么,这个表面看起来是一个比较无厘头的问题,但是如果对方是在那种可选可不选的人上面,如果对方无法问出来针对刚才的短板相辅相成的问题,那么基本就错失掉这次机会了,怎么讲呢,比如一个候选人技术一般,但是交流起来还可以,那么我期望对方问出来一些自己的技能应该怎么和工作匹配相关的问题,这说明对方自己了解自己的长处,价值还是比较大的,而如果对方问出来的是一些比较偏僻的技术问题或者简单的问一下你们使用的技术,那么基本已经无法作为加分项了。同理如果一个技术面试还可以但是感觉交流存在一些问题的人,如果问出来的问题继续偏执于技术,那么这时候往往会让我心生疑虑,这个候选人会不会过分偏执而导致团队合作的问题。当然了在问这个之前一定要提前说明白对方的一些问题,如果一个人当时就反省了,那么人嘛,有些短板是自然的,毕竟作为面试官,进来之后我们还负责培养不是?
上一篇: 哎,我这暴脾气
下一篇: 一个人没有自信是什么样的表现