据我所知,白板代码中有错误(甚至是错字或“;”错字)通常会花费您一些面试分数。避免这种情况将不可避免地使一个校对代码一次又一次地(浪费时间,并可能浪费神经能量/集中力),甚至使用更简单(因而效率较低)的算法-这两种方法都再次“昂贵”!
因此,为什么不只是快速编写出像拥有一个(单元)测试框架一样又优雅又有效的代码,然后正常地对其进行测试(仅在白板上)呢?
有没有人尝试过/见过这种方法?整个想法值得吗?
[当然,这也适用于笔和纸的情况]
据我所知,白板代码中有错误(甚至是错字或“;”错字)通常会花费您一些面试分数。避免这种情况将不可避免地使一个校对代码一次又一次地(浪费时间,并可能浪费神经能量/集中力),甚至使用更简单(因而效率较低)的算法-这两种方法都再次“昂贵”!
因此,为什么不只是快速编写出像拥有一个(单元)测试框架一样又优雅又有效的代码,然后正常地对其进行测试(仅在白板上)呢?
有没有人尝试过/见过这种方法?整个想法值得吗?
[当然,这也适用于笔和纸的情况]
Answers:
我绝对希望您测试要求您编写的白板代码。我希望您在编写代码时大声说出来,仔细检查一下,找出大部分的语法错误,并指出如何提高效率。实际上,这就是在白板上执行此操作的目的。这不是一次写完就写出来的,呃,你会得到70/100的东西。这是一次对话,由代码进行调解,并在白板上而不是在我的桌子上进行。
这是通过“白板编码”测试失败的一些好方法:
(例如:用Fortran编写,将“显示”或“打印”解释为“写入事件日志”之类。如果您事先告诉我这些是您的假设,我可能会允许它)
(我们在这里是顾问。我正在测试顾问的行为,就像在编码一样。在任何主题上打上您的烙印,但是对于特定的“您正在雇用X程序员,但我不想为您编写X”,您现在有了两个大黑标。)
(您以为我很夸张,但是我有个大胆地推广我的问题的人-坚持上面的例子,让我们说他的解决方案可以处理任意整数序列(而不是1到5)(从哪里获得?我想知道),当时是5的时间是其他人的两倍-他忘记了实际调用完成该功能的函数。反复提示并建议他像调试器一样遍历该函数,这并没有导致他意识到从未调用过该函数。
我总是说“你喜欢吗?” “你能改善吗?” “带我走过去”之类的。通常,在该对话中会发现缺失的半冒号或一一分离。如果没有,我通常会不胜其烦。
在白板上您可能认为不重要的其他事情对我来说很重要:
我强烈建议在白板上练习编码。我总是警告受访者,他们会被要求这样做。如果您可以使用实际的白板,请为自己设置一些简单的问题,然后在此处进行练习。这将有助于您的表现和信心。
抱歉,我知道我处于TL; DR领域,但在白板上编码不只是编码。这不仅是对语法的掌握,更是对您的测试。您对这项任务的反应证明了许多好的程序员的行为。如果您认为这仅与编码有关,那么您将错过这一点。
在其他有关白板测试的对话中,人们告诉我我可能会拒绝一个好的候选人。老实说,这是我愿意承担的风险。每个招聘回合都包含我可以雇用的几个人。有些简历不错的人在面试的问答部分做得很好,却在白板上分崩离析,显然不能(经过任何提示)用他们声称知道的语言编写简单的代码。我可能已经雇用了其中一些。任何阻止它的工具都是我将继续使用的工具。我从来没有结束过没有人租船的事,因为我所有的候选人都把白板弄乱了,而且我不希望自己会。
我认为您在这里做出了错误的假设。我无法期望候选人在白板上编写代码能够获得每个“;”。完美到位。如果您在某个会因此受到惩罚的地方进行面试,那么我建议他们不是您想要工作的组织:-)。
纸或白板测试非常无效。我记得一次采访时,我不得不在纸上寻找某些代码中的错误。其中之一是该类继承自接口,但缺少成员的实现。我知道这很可能是错误之一,我一直在寻找它,并且无论出于什么原因我都看不到它(尽管我确实提到我一直在寻找它是问题之一)。
碰巧的是,我仍然得到了这份工作,但这确实让我思考发生了什么。在这种情况下,在一个现实的场景中,我将在出现问题(在Visual Studio中为C#)且事情无法编译的那一刻,变得混乱不堪。我从来没有在现实生活中检查过它,因为它永远不会发生(这是不可能的),因此我不愿看到这种事情。缺少分号是一个更极端的例子-在现实世界中,这是完全不现实的,除非您在记事本中编写并将代码通过电子邮件发送给其他人进行编译!
如果有人要求在面试中使用白板来支持他们想说的话,那太好了,但我绝对不会这么做。
我已经做到了。在一次采访中,我被要求在白板上实现游程长度编码,并且在简化一些代码(解释我的缩写)以适合白板时,我仍然为该单元提出了一系列测试,并通过其中的一个来验证我的解决方案,并展示测试将如何提供帮助。我被提供了这个职位,所以我认为测试是有帮助的,或者最糟糕的是不会令人讨厌。
要求候选人在白板上编码是很愚蠢的。有一些现代的工具,例如片段,jsfiddle和intellisense。另外,不需要工程师记住语法。查找并引用了语法。如果要记住代码,则可能没有在职业生涯中花费任何时间来学习如何在多租户环境中进行编码,优化语法甚至是在托管环境中进行编码。
白板编码很难。在接受迪士尼采访之前,我从未被介绍过。不知道会发生什么,也无法调试它,我偶然发现了它,一直在讨论并解决问题,但是以一种伪代码的方式。当他们问到它可以运行时。
我的意思是,您可以只需要纠正语法错误就可以了。我相信,如果因为白板而没有被聘用,他们将失去一个非常好的候选人。我看的是资历,看来我有资格担任该职位并且可以胜任。我擅长于当前的工作,希望我能和他们一起工作。
感谢您的输入,凯特,我读了每个字。作为一名程序员,对我来说,白板真的并没有显示您的技能。我是一位出色的程序员,可以使用多种语言。我知道要求我编程的语言,但在白板上我突然忘记了。
我建立了复杂的集成和信用卡处理程序,但是在白板上,我什至不记得如何执行正确的语法,也没有提示。
作为雇主,我喜欢白板测试。但是,我正在招聘一名程序员,如果他们愿意的话,我想看看他们的实际技能。他们可以沟通很好,但是我需要看到他们能够解决问题。