编程面试问题越难越好?!架构师为你解答

  • 时间:2019-03-26 01:17 作者:我选C和CPP 来源:我选C和CPP 阅读:73
  • 扫一扫,手机访问
摘要:无论是在 BAT 还是在创业型的企业招聘中,应聘者总是要经过层层的考核才能被聘用。然而,在招聘时,设置有难又短的编程面试问题,真的有必要吗?如此就能考核出一位开发者的真实水平?以下为译文:很多时候面试程序员的编程问题设置得出奇困难。这会让候选人在面试过程中过度紧张,有时会适得其反,影响招聘人员的判断

无论是在 BAT 还是在创业型的企业招聘中,应聘者总是要经过层层的考核才能被聘用。然而,在招聘时,设置有难又短的编程面试问题,真的有必要吗?如此就能考核出一位开发者的真实水平?

以下为译文:

很多时候面试程序员的编程问题设置得出奇困难。这会让候选人在面试过程中过度紧张,有时会适得其反,影响招聘人员的判断。数据显示,相比那些更简单的编程问题,越难的编程问题越不能客观反映候选人的真实水平。

在设置好的时间范围内进行编程是很困难的。在面试过程中尤其如此。正常情况下本来可以轻松完成的编程问题,假如在你在面试房间里的聚光灯下进行那么这会是一项艰巨的挑战。在面试过程中压力荷尔蒙会淹没你的思路。而且你会有编程问题设计得过于困难的错觉。有时我都不认为这是错觉,问题确实太难了。

面试问题难度设计得太大。由于雇用一名不合格工程师的成本比拒绝一名优秀工程师的成本要高得多,所以公司会鼓励设置一个很高的面试标准。对于大多数公司而言,最直接的做法是提升面试题目的难度。人们的直觉大多认为更难的问题能够挑选出更优秀的人。但是这种直觉是错的,这种错误的直觉会让事情变得糟糕。我们的数据显示,相比于较难的问题,相对容易的问题更能客观地评判候选人的真实能力。

面试问题太难

困难的问题能够过滤掉糟糕的工程师,但同时也会过滤掉优秀的工程师(也就是说,其假阴性率很高)。相比之下,简单的问题产生的假阴性更少,但假阳性更多(由于更多的工程师能够答复正确,当然其中也包括少量本身比较糟糕的工程师)。在选择面试问题最佳的难度级别时,平衡这两个指标显得十分关键。寻求不惜一切代价避免误报的公司倾向于选择更难的面试问题。

但是,候选人能否正确答复问题并不是面试中唯一的能力评判标准。他们答复问题的过程也非常重要,比方,他们完成问题所需的时间、代码的整洁程度、以及他们寻觅处理方案时的努力程度。我们的分析表明,第二个指标(过程)与第一个指标(正确性)一样重要。

但这里还有一个额外的指标。包含最多过程信号的问题比包含正确信号的问题要容易得多。当你将处理问题的过程提炼到候选人在寻觅处理方案时遇到的困难(处理问题的过程与问题难度最直接相关)时,这一点就变得清晰了。假如一个问题很难传达一个强有力的正确性信号,那么所有候选人都只能通过处理问题的过程来反映自己的实力(即便那些最终正确答复它的人)。竞争毫无声息。

相反,带有强大过程信号的问题对于大多数候选人来说都很容易答复正确。面试官需要平衡过程和正确性,并从这两个因素的组合中提取最大值(这可能不是任何一个指标的峰值),这对于面试官来说颇有难度。

我们面试了数千名工程师,并在多个维度(包括过程和正确性)上对他们的面试体现进行了评分,并将这些分数与后期工作体现进行了比较。并且,在回归分析(查看过程和正确性信号)之后,我们的数据显示最能够反映候选人真实能力的问题实际上比我们预期的要容易得多(并且比许多公司提出的问题更容易)。

更难的问题最终过滤掉了太多合格的候选人才能达到最佳状态。因而,假如你想让你的招聘流程更加精确,你应该提出更简单的问题。

但是,我的明确指出,这并不意味着你应该降低标准并让更多人通过面试。提出简单的问题并不意味着让面试变得更容易。问题的难度级别与你设定的理想答案的阈值两者之间是独立的。你依然可以提出相对简单的问题,但是对问题的答案设置严格的高标准。我们发现,更简单的问题能够提供更多的信号给面试官,置于如何从这些丰富的信号中评判候选人,那取决于面试官本人。

面试问题更容易,压力也更小,这是一个非常重要的优势。压力会导致候选人体现不佳。但是,另一方面,当候选人更舒服时,他们会更真实地展示自我,这实际上使得面试更加客观。我认为面试官倾向于低估压力对候选人的影响,同时高估自己的能力。当你是那个问问题的人时,很容易不记得在30-60分钟内完成大量的编程是多么困难。为了应对这种偏见,我们采用了一条规则,即面试官必需给候选人3倍的时间来答复问题,由于他们认为自己需要处理问题。事实证实这个时间长度比较适当。

面试问题太短

更容易的问题有益于候选人在面试中更多地展示自己,呈现更多内容。你可以使用更长、有多部分组成的问题,这些问题能够更好地帮助你评判候选人能力。而后,你可以逐步添加问题难度,这些较长的、真实世界的问题比那些既难又短的问题更好。

较长的问题能够更好地反映候选人在真实编程场景中的体现。生产程序的设计,需要较长的时间,并且使用相对较大的代码库,而较长的问题可以更好地接近这样的真实场景。

此外,较长的问题允许你在候选人遇到困难时进行友情提醒。我认为这是至关重要的,由于哪怕再优秀的工程师也会在编码时遇到问题。提出更长的问题可以让候选人有机会从错误中恢复过来,并展现他们处理问题的能力。一个失误不能代表整个面试的失败。最后,面试官提供帮助可以减小面试压力,从而取得更精确的结果。

假如有想要学习C/C++的小伙伴,可以关注小编【C/C++企鹅群374890319】,wx公众号:CPP_cx 小编也有5年编程经验了,免费送一套比较系统的资料、教程和工作经验,就当是福利吧!21天速成加QQ群:374890319

总结

一旦面试问题设置得过于困难,公司很可能陷入恶性循环。面试官提出既难又短的问题,候选人的反馈信息很少,面试官只能从有限的反馈信息从判断候选人的能力。假如招聘结果不太理想,面试官可能会继续添加问题的难度。但这只会让面试效果变得更不好。公司和候选人都是面试过程的受害者。公司错过了很多优秀的人才,而很多优秀的候选人也错过这份工作,一切都源于面试过程设置了毫无必要的难度。

我希望面试官能够重视这一点。它不仅可以使他们的招聘工作更有效,而且也会让招聘工作变得轻松。与不恰当的短问题相比,提出简单、多步骤的问题要高效得多。

这是我们的建议,假如你真的想让你的面试更有效,你可能应该提出更简单的编程问题。这并不意味着降低标准。这只是意味着从候选人那里取得更多更好的反馈信号,从而帮助你找到合适的人。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】Discuz发布帖子时默认显示第一个主题分类的修改方法(2019-12-09 00:13)
【系统环境|软件环境】Android | App内存优化 之 内存泄漏 要点概述 以及 处理实战(2019-12-04 14:27)
【系统环境|软件环境】MySQL InnoDB 事务(2019-12-04 14:26)
【系统环境|软件环境】vue-router(单页面应用控制中心)常见用法(2019-12-04 14:26)
【系统环境|软件环境】Linux中的Kill命令(2019-12-04 14:26)
【系统环境|软件环境】Linux 入门时必学60个文件解决命令(2019-12-04 14:26)
【系统环境|软件环境】更新版ThreeJS 3D粒子波浪动画(2019-12-04 14:26)
【系统环境|软件环境】前台开发WebStorm常用快捷键,火速收藏!(2019-12-04 14:25)
【系统环境|软件环境】微博H5登录和发微博组件(2019-12-04 14:25)
【系统环境|软件环境】5分钟谈前台面试,小伙伴都惊呆了(2019-12-04 14:23)
手机二维码手机访问领取大礼包
返回顶部