提示1:澄清问题。面试官是否注意了问题的范围?这个数字有多大,它可以是负面的吗?如果它是一种动态语言,那么“只考虑数字的情况?小数和分数怎么样?”大多数实际问题都是含糊不清的。挖掘基本问题并澄清范围非常重要。
技能2:讨论各种可行的方法,总结一般计划。良好的面试官将直接写代码而不出现。他们将解释自己的方法和思维模式。这意味着他们愿意在开始编写代码之前与他人合作探索可能的方式。此时,您可以使用白板或绘制纸张。大多数实际问题都需要团队协议。能够与他人传达您的想法并解释每种方法的优点和缺点是非常重要的。许多大问题没有正确的答案,你需要权衡利弊。能够做出统一的选择是很重要的。
提示3:使用熟悉的环境在白板上写代码实际上不好。与实际日常工作相比,白板上的算法非常不同。在http://coderpad.io中编写代码也非常麻烦,因为它们不会自动完成,而且格式不会自动组织。大多数工程师都有自己的IDE:vscode,sublime,vim等。我发现,通过允许面试官使用他们熟悉的环境,他们的性能往往会更好。当然,这种环境仍然致力于采访,他们仍然有时间压力,但这更接近实际工作。我做了一个/b考试。有关同样的问题,我要求受访者使用他们的计算机,分别使用http://coderpad.io和http://sandbox.io来分享屏幕。事实证明,在前端开发问题中,使用http://sandbox.io的面试官更好地执行,因为在尽快启动编程的问题较少。受访者使用自己的计算机,分享屏幕和克隆代码基础。这也是一种很好的技术。http://coderpad.io可以做得很少。通过让面试官克隆代码基础,我们可以看到面试官是否可以快速适应陌生的代码库。在谷歌面试中,他们让我在Google文档中编写代码。这种方法并不擅长。根据我的经验,Stripe的面试过程很好。在采访中,您可以查看GitHub代码库,然后用您喜爱的IDE打开计算机上的代码。
提示4:写代码->运行->调试在编写一个小型代码后,您应该尝试运行它,看看是否可以获得正确的结果。面试官可以通过这种迭代发现小错误,以便在面试中具有更好的表现。一些面试官一直在编写代码,直到采访结束到结束。因此,当代码上次运行时,代码没有编译或错误。表格测试也是一种非常好的技术。您可以编写一个数组:[[输入,输出],[输入,输出],[输入,输出],......],然后将其传递给简单的测试功能。面试官也很高兴看到测试用例和代码复杂性的变化。我们必须通过编程问题测试候选人,并靠近实际的工作环境。与此同时,我们应该更加关注以前的经验。所说,采访并非一切。有时它需要我们一两年或两个人深入了解整个代码,所以我们必须长期看。