Skip to content

面试时应该聊什么

面试时应该聊什么

为了招人最近在不停地面试,在刚开始面试的时候,我犯了很多错误,直到最近我才开始明白应该如何进行一场面试。一场好的面试可以让面试官可以了解到候选者的能力,候选者也可以了解到自己的不足,双方都有好处。糟糕的面试则相反,面试官不了解候选者能力,录取错误的人,候选人为了面试准备无用的东西,浪费自己的时间。

你希望考察什么能力?

在面试之前一定要先搞清楚你希望考察候选人哪方面的能力,以程序员来说,首先是一些计算机基础知识,项目经验,代码能力等等,一些不同岗位也会要求对特定领域知识有一定了解,比如嵌入式,音视频,搜索等会额外考察相关领域内的知识。

除了这些之外,评价一个候选者的时候,还会经常说这个候选者是否有潜力。那么什么是潜力?应该如何考察呢?潜力是候选者在未来会提高进步的空间,当然首先是和年龄相关,但我不想谈这个。一般而言,我会从两个方面来判断一个候选者是否有潜力,一个是发现问题,另一个是解决问题的能力。其实两者是有顺序的,你必须发现问题,才能去解决问题。

每当一个候选者介绍完自己的项目,或者自己了解的一些知识时,我都会提问他能发现这其中那些不合理的地方,应该如何去处理它。如果没有相关的思考,那么我不认为这个人有多大潜力。

多进行引导而不是固定的提问

对于程序员而言,现在的面试已经非常套路化了,首先介绍一些项目经历,然后进行一些基础知识提问,最后留一道算法题。很多面试官根本不去关注面试者的信息,每次面试都提问重复的内容,这样面试就完全看运气,面试者恰好背了某个知识点,恰好刷了某道题,就被录取,或者相反。你在很多地方都能看到人们对于这种面试的吐槽,面试完全变成了一门玄学。

正确的做法是先了解面试者的信息,按照面试者项目经历或者掌握的技能准备一些问题,在面试开始的时候,不要先问问题,将主动权交给面试者,让面试者介绍自己的项目经历,和自己掌握的一些技能。如果面试者紧张,或者在一些地方不知道如何继续,你可以给出一些引导。如果面试者思路不是很清晰,你可以帮他进行一些总结。尽量不要去打断面试者,你可以在他介绍完一个部分时,提出一些自己的疑问。

在我这么做了之后,我发现我能更清晰的了解面试者的水平,而面试者一般也可以更多的展现自己的不同方面的能力,而不仅仅受制于我。在每次面试结束后,无论结果如何,双方都会为进行了一次友好的交流而心情愉悦。

不要考察无关的内容

思考清楚你希望考察的能力,引导面试者展现自己的能力,那么你应该就不会犯这个错误。不过这个问题在现在面试中其实很常见。

典型的就是考核算法题,我在没毕业之前,以为程序员能力的高低就是写算法题能力的高低,于是疯狂的刷题。毕业后发现,工作中基本用不上刷题时学的那些东西,我不否认可能有些工作会与这些有关,但是大部分程序员的工作都与其无关,而现实则是大部分面试都会考这个。我理解这是因为希望考核一下写代码的能力,但我认为应该更多从实际出发,并且应该尽可能在日常工作中用到。比如 Golang 中,goroutine 的使用, channel 的使用,都可以简单的考察面试者的代码能力。

还有一些已经被问烂的题, HTTP 的底层实现,MySQL 的索引结构,如何设计一个秒杀系统,设计一个限流器等等。明明候选者是 AI 相关的,上来就问 HTTP 的底层实现,根本没有任何意义。

按照你希望考察的能力范围以及候选人的个人情况来确定考察内容,不要考察无关的内容,这会影响你的判断,并且浪费双方的时间。