乔尔测试 问题#11 是:“新候选人在面试时会写代码吗?”。要求新候选人在面试期间编写代码并据此做出决定的理由是什么?

有帮助吗?

解决方案

我看不到缺点。采访有很多部分,应认可候选人几次。

我面试〜每周10人。我真的非常非常感谢人力资源完成了所有背景工作,并给我提供了很多笔记。当他们到达我身边时,是时候让我进行测试了。

测试完全取决于位置。通常,我尝试探测:

  • 一般编程技能。您可以有效使用操作员吗?您可以构想一个没有10个radix的数值系统吗?

  • 您知道如何做我们要雇用的事情吗?

  • 评估您对您列出的任何开源项目的贡献

我试图保持简短和乐趣。当我进入办公室时,我抓住答案,看一下它们,然后进行次要采访。要获得录用,您通常必须进行三次面试。

我还评估了您将与将接收您的团队融合在一起的能力。那个团队指望我有效地做到这一点。

以meta形式回答问题是一回事,实际上产生代码是另一回事。如果我要雇用您,我真的需要看到您制作代码。

其他提示

向斯科特·惠特洛克道歉:

缺点:

  • 没有任何

优点:

  • 如果您防止雇用无法编程的人,可以节省大量时间和心痛
  • 要求您在面试中有一名技术人员

如果您打算雇用一名杂耍表演者,那就不要让他为您杂乱无章会很疯狂。或您要试镜的音乐家。否则您会得到像 很棒的溜溜球“大师” k strass.

程序员在白板上漫步的是快速演示杂耍。

我认为这是非常有用的,而且我总是这样做,但是由于涵盖了好处,因此我将仅讨论(明显的)负面因素。

我认为代码测试不太可能给您误报:很低的是,实际上无法编写代码的人会在面试中设法伪造它,至少如果您有越来越多的困难问题。 (也许最有可能的情况是他们通过问朋友而在作弊,是否不是面对面的面试。)

问题更多地在虚假的方面:代码测试是否会导致您拒绝实际是最好的候选人的人?

舞台恐惧

您可能有一个实际上是一个非常好的开发人员,但是对这次采访非常紧张,他们本质上会感到恐惧。在某种程度上,在压力下表现很重要,但是处理舞台惊吓并不是成为程序员的关键部分(与其他职业相比),不幸的是,拒绝受到严重遭受的人的拒绝。这可能会更复杂:如果该人无法回答他们知道应该回答的问题,他们可能会更加紧张。或者, 就像在这个问题中一样, ,他们觉得自己不能同时说话和编码。

缓解措施:首先要了解他们的背景,目标等问题,然后再涉及技术问题。也许从一些简单的技术问题开始,以便他们获得一些动力。在面试中不要成为鸡巴(关于半殖民地等)。

这是一个嘈杂的措施

有趣的代码问题可能有多个正确的答案。如果一个人写了一个正确的答案,另一个人写一个正确,更有效的答案,那么您应该承担多少重量?

在某种程度上,这就像一些“难题”问题的问题:该人要么具有洞察力,您会得到几乎二进制的结果。智力可能会影响获得这种见解的可能性,但是对采样仅几次就可以使您有一个粗略的措施。

这让我对代码问题感到困扰(尽管我仍然使用它们。)我能想到的最好的缓解措施是尽可能多地具有可能的解决方案:这个人至少可以写一个粗鲁的蛮力答案或答案问题的一部分。意识到这总比没有好,这是一个好兆头。然后,如果他们发现更多,他们可以使其更高效或更优雅的代码。尽可能避免提出获得二进制响应的问题。

这不是真正的代表

编程不是一个接一个地解决十分钟算法问题的工作:了解和设计更大的系统和长时间的集中精力,还有很多工作要做,以至于没有说什么。代码问题并不是真正的测试。

但是,代码问题并不是您要问的唯一问题:您可以查看他们的背景,他们的参考,开源工作(如果有的话),以找到持续努力,创造力,人际交往能力的证据。

知道如何解决小型算法问题以及如何将它们减少到代码是必要但不足的条件:如果您无法解决小问题并且无法编写非平凡的代码,那么世界上所有的大型思维都不是将使您成为一名富有成效的开发人员。

任何人都可以解决

不,显然不是。作为 著名的Fizzbuzz帖子 指出,您可能认为的问题不仅是新毕业生,而且是具有多年行业经验的人。我不知道为什么。代码测试是不良的措施(尽管我认为这是可能的)算法代码(这是可能的。)

值得承认的是,您确实可以在不编写任何算法代码的情况下完成很多工作。人们在图形或业务逻辑中的价值上赚了很多钱,而不是您所谓的“编程”,这很好。但是,如果您实际上需要程序员,那并不合适。

它可能无法很好地校准

如果您提出一个问题,答案对您来说似乎很容易。但是,如果您从蓝色中被问及任何其他可比的问题,或者一个没有偏向于您自己的特定利益和背景的问题,可能会更加困难。

缓解:对一些您已经知道的开发人员进行测试,并查看他们的工作方式。也许您的团队中已经很聪明的人会遇到麻烦,您可以考虑对其进行调整。也许他们会想到一个更好或不同的答案。

太像琐事

我认为,如果您坚持认为人们内心深知API,或者使语法变得完美,或者记住非琐事算法的确切定义,那么我认为代码问题肯定会进入琐事。这些都是合理的,可以依靠文档,网络搜索或编译器错误来拾取,并且与实际专业知识几乎没有相关性。甚至不知道API可能在哪里可能是该人最近没有使用过的线索,但这不一定是一个问题,只要他们不躺在履历上。

因此,答案非常简单:不要问琐碎的问题,也不要陷入琐碎的错误。提醒候选人称为API或让他们查找它;修复语法错误;不要测试人们记住数据结构定义的人。

您如何比较?

如果您有两个候选人,并且两者都很好地回答了问题,那么您如何选择它们?您可以选择最快完成的人,但也许在那里您开始挑选野兔在乌龟上。您可以再做一次,问更难的问题,但我也不确定这一点。也许您只是给他们一个A+,然后尝试根据其他条件进行选择(或试图找到雇用两者的钱。)

我能想到的一个缺点是,很难在其他人面前“大声编码”。我发现即使有人在我背后看着我打字也很困难,而且我并不孤单。我注意到,当有人叫我到他们的工作站帮忙做某事时,他们突然开始犯错,选择错误的代码完成,甚至犯下彻头彻尾的错误——如果我没有坐在那儿,他们就不会犯这些错误。天哪,我见过人们开始使用菜单进行剪切和粘贴操作,只是因为他们受到观察。这不是正常行为,我所说的程序员都是优秀的程序员,而且还非常聪明。

我最近接受了一次采访,面试官问我如何编码特定的操作,他说:“只要给我看数学。”好吧,我必须先考虑一下这个问题,然后才能达到数学的数学,所以这让我陷入困境。一开始我在白板上写的东西很尴尬,那一刻我觉得我输了。我最终得到了顿悟时刻并找到了答案(实际上当我终于意识到他是谁时) 真的 询问),但是我到达那里之前弄的“乱七八糟”让我感觉很不舒服。尽管如此,我还是得到了这份工作,但如果面试官不那么耐心,我可能就得不到这份工作。

我认为,如果你给受访者一项编码任务,请给他们一些时间在计算机上单独完成该任务,甚至可能在他们熟悉的 IDE 中完成。让他们为你编写代码,然后讨论。询问他们为什么以某种方式做事,另一种方式是否会更好。与让他们(打个比方)在你面前的杯子里撒尿相比,你会从这种过程中发现更多的信息。

缺点:无。每当您花费设置PC,设计代码测试并进行审查时,将来会节省无数的头痛。

优点:“信任,但验证” - 罗纳德·里根(Ronald Regan)。我已经很多次见过和听说过人们终于从一个位置放开了,在采访中,您会认为自己正在得到摇滚明星。证据在布丁中;我想看看他们能做什么。一旦您花费时间和金钱雇用某人并将新项目贴在他们面前,它将代表发生的事情。

缺点:

  • 要求您在面试中有一名技术人员

优点:

  • 如果您防止雇用无法编程的人,可以节省大量时间和心痛

当我采访当前的工作时,招聘人员为我提供了一些问题来编写代码的列表。我给我留下了深刻的印象,因为这些问题显然是由对SQL有深刻了解的人撰写的,因此这是双向工作的。

真的 想要让人在面试中写代码 - 甚至更好,让他们与团队中的成员配对X的时间(无论您在时间/人力上都能舒适地负担得起)。

这几乎是您可以判断该人是否可以编码的唯一方法之一。

我有点更喜欢配对编程,因为它将显示他们的团队合作,使他们真正与他们一起工作,并让他们解决一个“真正的”问题(这对夫妇中的另一个人可以指导他们超越受访者的任何环境细节永远无法合理地知道)。

我们已经开始使用这项招聘政策,我们对结果感到非常满意。

您可以根据其羽毛和程序员的代码来判断一只鸟。

当我从当前工作的公司开始时,他们要求我编写一些C代码,以生成或检查一些二进制输入的奇偶校验(取决于您是编码还是解码)。这是一个面试问题,因为这类问题在工作过程中得到了解决。当然,我正在考虑不要奇偶校验检查,而是要进行低级工作。

到目前为止的所有答案(我读过)还没有解决这样的事实 乔尔测试不是(仅)企业家的最佳实践清单 但是检查清单可以放松您的 对雇主的评估.

事情是...如果他们彻底测试候选者,那么他们可能会雇用知道自己的东西的人...这意味着 为你

  1. 少头痛 并且
  2. 增加的机会 学习 您的同事的东西

而不是追随他们的错误 ...

我会说:

优点

  • 证明候选人至少具有可传递的编程知识,因为可以制造/点缀简历
  • 如果访调员与候选人讨论代码,而不是更像书面测试,则可以很好地表明您在社交上“网格”的方式,如果候选人非常适合公司/公司,团队和团队都很好适合候选人

缺点

  • 如果问题是死记硬背/琐碎的废话,可能会侮辱候选人,而在工作中永远不会出现的问题(例如,当所有现代框架都在工作中使用的所有现代框架都内置了分类时,“写泡泡排序”,“反向字符串” “当有一个内置的时候 Reverse 方法或类似的书面测试,例如“对 Foo 方法的方法 Bar “当任何白痴可以用谷歌搜索或使用文档)的班级,而不是显示候选人可以的建筑/设计问题 把事情做完解决业务问题.

一个专业人士是,它表明某人确实具有编程或其他任何内容(我上次遇到的时候,我感到惊讶的是SQL问题是多么基础)。它还可以作为技术讨论的基础,询问候选人为什么这样做以及如何改进。

面试确实需要时间,可以用于其他事情。此外,在白板上编写代码不是自然环境,有些人会遇到越来越多的严重问题。它可能会导致您错过一个没有普通工具或参考的开发人员。

编程是一项技术技能,具有一堆清晰的“可交付成果”。候选人可以或不能交付他们。因此,提出技术问题没有“缺点”。这完全是为了说:“向我展示此应用程序的一些代码,或“向我展示您已经编写的应用程序的代码”。

不这样做可能会导致以下结果:一个有钱人采访了一位导师,教他的孩子们下棋(作为一种伸展思维的练习)。导师打开了一个方格板,开始谈论64个正方形,但没有碰到国际象棋。随着时间的流逝,父亲还是雇用了导师。导师教孩子们扮演跳棋。

许可以下: CC-BY-SA归因
scroll top