代码面试技巧

作者 Aaron Cao · 更新于

写代码前先澄清问题和限制条件,大声说出你的思路,先做出可运行的方案再优化,用边界情况测试,并说明时间和空间复杂度。面试官评估的是你的推理和沟通方式,而不仅仅是最终代码能否运行。

写代码之前:先澄清,再规划

如果你在压力下的本能反应是立刻开始打字,这一节正是为了纠正这种本能。最优秀的候选人往往会先花几分钟完全不写代码,面试官会注意到这一点。

先用自己的话复述问题,并向面试官确认理解无误。询问限制条件:输入规模、取值范围、输入是否已排序、如何处理空输入或格式错误的输入。然后在动手写任何代码之前,说明你打算采用的方法及其复杂度。这一短暂的规划步骤能及早发现理解偏差,并展示结构化思维,而这正是评分的重要部分。

写代码时:边思考边说,逐步构建

沉默是能力很强的解题者显得能力不足的最常见方式。持续讲解你正在写什么以及为什么这样写,这样面试官才能跟上你的思路,并在你偏离方向时提醒你。

先得出正确答案,再追求巧妙。一个能运行的暴力解法,价值高于一个从未编译通过的精妙想法,等有了可运行的方案之后再优化。以小而可测试的片段编写代码,使用清晰的变量名;如果卡住了,说出你正在考虑的思路,而不是陷入沉默。面试官经常会给提示,但前提是他们能听到你当下的想法。

代码跑通之后:测试、边界情况与复杂度

代码编译通过并不代表完成;只有当你尝试过让它出错之后才算完成。先用一个普通输入走一遍代码逻辑,再故意用一些刁钻的输入:空输入、单个元素、重复元素、负数、限制条件允许的最大规模。

设想一位应聘中级职位的前端工程师,写出了一个可运行的双指针解法,然后主动、不需要提示地用空数组和单元素数组走一遍逻辑,并说明其运行时间为 O(n)。这最后一分钟的自我测试和复杂度分析,往往是决定录用还是待定的关键,因为它表明这名工程师在实际工作中也会发现自己的 bug。即使没有被要求,也要主动说出时间和空间复杂度。

在真正的面试之前,把技巧变成习惯

阅读技巧很容易;在紧张状态下做到却不容易。解决办法是在接近真实场景的条件下反复演练:计时器在跑,解法大声说出来,中途不查资料。每做完一道练习题,不仅要检查是否解对了,还要检查自己是否做到了澄清问题、讲解思路和测试,因为这些正是被评分的习惯。

与 AI 面试官进行限时口头模拟是培养这种反应的一种方式;你可以在模拟面试工具中练习。有一点值得再三提醒:真正的代码面试环节往往在被监控的共享编辑器上进行,或会被录制,因此任何实时助手在其中都不安全,练习的目标正是让你不再需要它。更多关于代码面试的解答见面试类型主题中心,练习指导见模拟面试主题中心

常见问题

代码面试中最重要的技巧是什么?

先澄清问题,再边写边讲。面试官评估的是你的推理和沟通能力,因此一个解释清楚的思路胜过一个沉默完成的正确答案。先确认问题和限制条件,然后大声说出你的思考过程。

我应该一开始就写出最优解吗?

不需要。先得出任何正确的解法,即使是暴力解法,然后当着面试官的面进行优化。一个能运行的简单答案,比一个从未跑通的精妙想法更能得分。

卡住了该怎么办?

大声说出你正在考虑的思路,而不是陷入沉默。面试官经常会给提示,但前提是他们能听到你的想法。重新复述问题,并尝试一个更小的例子来帮助自己突破。

需要说明时间和空间复杂度吗?

需要,即使没有被要求也应主动说明。分析 Big-O 表明你理解其中的权衡,这一点面试官会非常看重。请在编码前后都说明你方法的复杂度。

相关问题

← 更多关于 面试类型