搞定白板面试的5个简单步骤

无论你对白板面试有什么看法,它都是几乎所有公司开发人员招聘过程中不可避免的事实。如果你从未经历过,这可能是一个可怕的前景。即使是老手也会对这种前景感到有点紧张。

白板面试的核心都是相似的,你可以遵循一个过程,使你从面试官的提示顺利地进入面试官的批准

1.用你自己的话重申问题

“如果我只有一个小时来解决一个问题,我会用这一小时的三分之二来试图定义问题是什么。——爱因斯坦、某位耶鲁教授和亚伯拉罕·林肯(虚构的

工程师不只是解决问题。他们与利益相关者一起努力工作定义问题的核心他们记录了很多细节。所以在你做任何事情之前,你要向自己和面试官证明你明白他们在问什么。

巧合的是,通过陈述、重申和回顾一个问题,你的大脑就会准备好去解决它。这一步骤将帮助你完成后续的每一个步骤。最后,如果面试官没有把问题大声写出来,那么核实一下他们问的问题是否正确是很有必要的。面试官也会犯错误。像检查你的工作一样检查他们的工作。

2.组合预期的输入和输出,特别注意边缘情况

从长远来看,工程师只有一小部分时间是花在编写生产代码上的。您会发现您自己的手动和自动测试都要花费更多的时间。由于来回的沟通,让别人发现你的bug是很困难的更糟糕的是对你和公司都有好处。这是一个向面试官指出把测试用例的列表放在一起可以并且应该形成自动化测试的基础的好时机。特别是,您需要确保涵盖了所有容易绊倒您或显著改变问题行为的边缘和特殊情况。问问你自己:

  • 是否有任何参数是空的或不同于您期望的类型?

  • 如果你和数字打交道:

    • 像-1、0和1这样的情况的行为是什么?

    • 你需要担心积极的还是消极的整数溢出?

  • 如果你正在处理字符串:

    • 在参数中可以找到哪些字符?

    • 空字符串或只有一个字符的字符串呢?

3.用手解题

所有的编程都是自动化的。但在实现自动化之前,你必须能够手工完成任务。举一个例子,在黑板上算出来。

例如,面试官要求你编写一个函数,该函数接受一个字符串,当且仅当该字符串是回文(忽略大小写和标点符号)时返回true。假设您有一个测试用例,“Eva,我能在山洞里刺蝙蝠吗?”把那个例子写在黑板上。把一只手的手指放在第一个字母上,用另一只手的手指指着最后一个字母;比较两者,然后将手指向中间移动。这是一个有效的过程(算法)。或者,您也可以用小写的正反写这个单词,不加标点符号,然后比较两者。这也是一个有效的程序!

4.写出你使用的过程

一旦你知道如何解决这些例子,你应该能够看到共同的模式。尽可能详细地写出这个模式。我建议尽可能使用通俗易懂的英语。与代码类似,目标是在这些指令中没有模糊性。

一旦你适应了这个版本的解释,就值得停下来复习了。如果您将您的一些示例放入该过程中,它们会产生预期的输出吗?你在做什么不必要的工作吗?如果你知道算法复杂性,回顾计算和空间复杂性,并与你的面试官讨论。不要害怕想出一个与你第一次尝试完全不同的方法。用多种方法解决同一个问题表明你对它的掌握程度。

5.转到编码?

有些面试官并不关心你是否写了语法完美的代码,他们只想看到你得到一个好的算法。如果面试官想看实际的代码,问你是否首选语言会为他们工作。如果他们要求你使用一种你不太熟悉的语言,只要要求他们在语法和标准函数方面多一点原谅就可以了。如果你要写代码,记得测试代码。一旦你让它具有功能性,重构它以清理风格,并向面试官询问任何类似代码审查的反馈。

完成了!

恭喜你!你刚刚解决了开发人员面试中最伤脑筋的部分之一。退一步,深呼吸。向面试官寻求反馈。如果您以前从未见过这个问题,请询问是否可以拍一张电路板的照片,并将代码发布到您的GitHub.在面试的最后,感谢面试官付出的时间、努力和反馈。他们也投入了大量的工作。对好工作相互表达感激之情你会是一个多么棒的同事