java面试编程面试题_编程面试题太难又太短

java面试编程面试题

查尔斯·特里希勒于2019年2月18日

tl; dr对面试问题进行编程可能会感到不必要的困难。 有时他们实际上是。 这不仅是因为他们使面试压力过大。 我们的数据显示,编程难的问题确实做的 比那些更容易预测最终结果 的工作。

在时间压力下编程很困难。 在采访中尤其如此。 在正常情况下,看起来似乎很简单的编码练习在面试室的明亮灯光下会成为一个巨大的挑战。 面试过程中压力荷尔蒙使您的思想蒙上了阴影(尽管可悲的是,无论是战斗还是逃避,都无法有效地应对威胁性编程问题)。 而且几乎可以感觉到问题被设计为反常困难。 实际上,我认为这不仅仅是一种感觉。

面试问题的设计很难。 由于聘用一名不良工程师的成本要比拒绝一名优秀工程师的成本高得多,因此公司被激励设立高标准。 对于大多数公司而言,这意味着要提出棘手的问题。 从直觉上讲这是有道理的,因为更难的问题似乎应该导致更严格的筛选过程。 但是,直觉在这里是一个很差的指导。 我们的数据表明,较难的问题实际上比相对容易的问题难预测。

面试问题太难了

困难的问题确实会过滤掉不良的工程师,但也会过滤掉好的工程师 (即,他们的假阴性率很高)。 相比之下,简单的问题产生的假阴性更少,但假阳性更多(因为更多的工程师正确地选择了它们,包括一些不好的问题)。 在为面试问题选择最佳难度级别时,要平衡这两个信号是您面临的核心问题。 试图不惜一切代价避免出现误报的公司倾向于向这一范围的更艰难的方向倾斜。

但是, 候选人是否正确回答了问题并不是面试中唯一的信号来源。 您还可以例如通过观察完成它们所需的时间,代码的清洁程度以及寻找解决方案时需要付出多少努力来评估他们的过程。 我们的分析表明,第二个信号源(过程)几乎与第一个信号源(正确性)一样可预测。

但是这里还有一个权衡。 携带最多过程信号的问题比携带最多正确性信号的问题要容易得多。 当您在寻找解决方案时将过程提炼成候选人要努力挣扎时,过程的原因就很清楚了(过程的方面与问题难度直接相关)。 如果一个问题很难传达出正确的信息,那么所有候选人都将为之苦恼(甚至最终回答正确的人也是如此)。 因此,斗争将不会有任何信号。

相反,带有强大过程信号的问题对于大多数应聘者来说很容易正确回答,因此就正确性信号而言几乎没有什么可提供的。 一个最困难的问题是平衡过程和正确性以从这两个因素的组合中提取最大信号的问题(这可能都不是任何一个的峰值信号)。

我们采访了成千上万的工程师,并从多个方面对他们的答案进行了评分,包括过程和正确性,并将这些评分与以后的性能进行了比较。 而且,通过回归分析(同时查看过程和正确性信号),我们的数据表明,最具预测性的问题实际上比我们预期的要容易得多(并且比许多公司提出的问题还容易)。

较难的问题最终会滤除太多合格的候选人,以至于无法达到最优。 因此,如果您想使招聘过程更加准确,则可能应该问一些更简单的问题。

但是,我想明确指出,这并不意味着您应该降低门槛并让更多的人通过。 提出更简单的问题并不一定意味着使您的采访变得更容易。 您提出的问题的难度级别以及在何处设置决策阈值是独立的决策。 您仍然可以通过提出相对简单的问题并进行苛刻的评估来实施极为严格的招聘过程。 我们的发现只是简单的问题提供了更多的信号。 但是,如何处理该信号取决于您自己。

容易的面试问题也减轻了压力,这是一个重要的优势。 压力导致候选人表现不佳。 但是,另一方面,当候选人更自在时,他们会表现出真正的最佳,这实际上使面试更具预测性。 我认为,面试官往往低估了压力对应聘者的影响,同时又高估了自己的能力。 当您问问题时,很容易忘记在30至60分钟内完成大量真实编程的难易程度。 为了消除这种偏见,我们在Triplebyte中采用了一条规则,规定面试官必须给候选人3倍的时间来回答他们认为自己解决问题所需的时间。 通常,这是正确的时间量。

面试问题太短

另一个重要的原因使问题变得更容易。 它们使您可以在访谈中增加更多内容。 这意味着您可以使用更长的,包含多个部分的问题,这些问题在预测方面具有更大的优势。 您可以提出随着时间的流逝难度逐渐增加的问题,而这些较长的,现实世界中的问题比它们的较短和较难的表亲更具预测性。[1]

部分原因是,较长的问题可以作为现实生活中编程的更好代理。 生产编程涉及长时间使用相对较大的代码库,而更长的问题可以更好地逼近这种情况。

此外,较长的问题可让您在候选人陷入困境时提供提示。 我认为这至关重要,因为即使是强大的工程师也可能在编码问题期间的某个时候被绊倒。 提出更长的问题可以使考生有机会从错误中恢复过来,并在以后的锻炼中炫耀自己的技能。 一次失误也不会破坏整个采访。 最后,能够提供帮助使面试的压力减轻了,这又使结果更加准确。

结论

当涉及到问题难度时,公司可能陷入恶性循环。 他们开始提出已经太难又太短的问题,这导致他们根据嘈杂的信号做出次优的雇用决策。 当他们遇到不良的结果时,他们可能会尝试通过使过程更加严格来进行纠正(这通常意味着要提出更棘手的问题)。 但是,这只会使他们的访谈不那么准确。 等等。 公司和候选人都受到这个周期的伤害。 我看到公司错过了人才,候选人错过了工作,每个人的压力都超过了他们所需要的。

我希望采访者会接受这一发现。 它不仅可以使他们的工作更准确,而且也更容易。 与简单困难的短期挑战相比,提出直接的,多步骤的问题所需的时间要少得多。

因此,这是我们的建议,如果您实际上想使面试更加准确,则可能需要开始提出更简单的编程问题。 这并不意味着降低标准。 这只是意味着要发出更好的信号,以便您可以雇用合适的人。

如果您决定在编程面试中提出更简单的问题,或者发现此帖子对您有其他帮助,我希望收到您的来信! 给我电子邮件charlie@triplebyte.com

[1] “关于某人工作表现的最佳预测指标是工作样本测试(29%)。 这需要给应聘者提供一份与他们在工作中类似的工作样本,并评估其绩效。”(有线杂志)

翻译自: https://hackernoon.com/programming-interview-questions-are-too-hard-and-too-short-ca6176da4ec5

java面试编程面试题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值