查看原文
其他

编程面试问题越难越好?!

CHARLESTREICHLER CSDN 2019-03-31

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

作者 | CHARLES TREICHLER

译者 | 安翔

责编 | 屠敏

出品 | CSDN(ID:CSDNNews)

以下为译文:

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

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

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


面试问题太难


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

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

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

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

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

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

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

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


面试问题太短


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

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

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


总结


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

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

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

原文:https://triplebyte.com/blog/interview-questions-are-too-hard-and-too-short

本文为 CSDN 翻译,如需转载,请注明来源出处。

【End】

 热 文 推 荐 

☞ “5G 将是一个彻底的失败通信技术” 

☞13 岁少女因几行 JS 代码被逮了!

☞ 埃航黑匣子已找到;移动 3G 开始退网;首条智能高铁今年开通 | 极客头条

☞ Java 跌落神坛!Python 正式登顶世界第一编程语言

☞ diss一时爽, 打脸啪啪响! "05年互联网不如传真机", 如今区块链也是一种肮脏的...

☞ 7行Python代码,搭建一个可以识花的机器学习APP | 视频教程

☞ 权威预测:未来一年,企业云服务将会如何发展?

☞ 没有一个人,能躲过程序员的诱惑!

☞ 12 岁学编程,18 岁拿下斯坦福和剑桥双 Offer,这个 00 后学霸做对了这件事!

System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“好看”吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存