手撕代码面试:面试官到底在看什么

2026-08-18 · 11 分钟阅读

手撕代码面试,是你在别人注视下实时写代码、并且一边写一边讲的那一轮。关于它的建议大多是在讲之前几周该刷什么题,很少有人讲那四十五分钟本身——而准备程度相同的候选人,恰恰是在这四十五分钟里被拉开的。

这一轮具体是什么样的

你进入通话,面试官打开一个共享编辑器——CoderPad、CodeSignal、HackerRank,有时就是共享屏幕的 IDE——然后给你一道题。时间通常在三十到六十分钟之间。你们看到的是同一个光标。自动补全基本没有,测试往往要你主动要求才能跑,而每一次停顿都有人在看着。

它和在线笔试是两回事。笔试衡量你交出的代码,这一轮衡量你怎么把它写出来:会不会先问清楚再动手,能不能自己发现自己的错误,手在敲键盘的时候还能不能把话说清楚。最终答案的权重,比大多数人以为的低得多。

评分表上真正的四项

大多数公司的评分表可以归成四行:有没有先理解题目再解题,思路是否合理并且讲清楚了为什么,能不能在不被反复提示的情况下写出可运行的代码,被追问时能不能说出取舍。

注意,四项里只有一项和代码有关。这也是为什么一个安静写出完美解法的人,分数常常低于一个把较慢解法讲明白、再自己优化掉的人——面试官只能给"传达到他那里的东西"打分。

开场两分钟,权重高得不合理

本能是立刻开始敲,因为敲键盘看起来像在进展,而沉默让人心慌。这个本能是错的。开场应该用来复述题目、问清楚那一两个真正会改变解法的问题——数据规模、是否有序、有没有重复、能不能修改输入——然后说出你打算用的思路和它的复杂度。

这九十秒买到三样东西:你解的是对的那道题,面试官很早就拿到一个正面信号,以及后面卡住时你有一个可以退回去的计划。跳过这一步的人,往往在第二十分钟才发现数组本来就是有序的。

脑子一片空白的时候

有时候就是什么都想不出来。最可靠的脱困方式,是把最笨的解法说出口:"暴力解是两两枚举,平方复杂度。我先从这里开始,再看哪里在重复计算。"这不是认输——这正是面试官希望听到的,因为在一个说明白的基线上做优化,是一个看得见、可打分的过程,而说出基线本身通常就会暴露出优化点。

第二个办法是拿一个具体的小例子。取四个元素手算一遍,边算边说。你需要的规律往往在例子里是可见的,在抽象层面则不是。

第十五分钟:发现思路是错的

这一刻感觉像是面试结束了。处理得好,它反而是你能发出的最强信号之一——在别人指出之前先发现自己的错误,正是这份工作本身的内容。

要说得明确而简短:"这样走不通,一旦出现重复元素我的下标就乱了。我想换成以值为键的哈希表。"不要一边心存侥幸一边继续给死掉的思路打补丁,面试官看得见,并且会记成"无法自我评估"。也不要长篇道歉。一句话指出问题,一句话说替代方案,然后继续往下走。

那个看不见的 bug

压力之下,人会把同样的五行代码反复读,指望读出不同的结果。要用机械的方式打断这个循环:在你认为正确的位置把状态打印出来,看它是不是真的正确。面试里几乎所有的 bug 都是差一、初始值错、或者比较方向反了,而这三种,在你把中间结构打印出来的那一刻全都会现形。

调试也要讲出来。"这里这个 map 我预期有三个条目,我确认一下。"出声调试本身就是正面信号,盯着屏幕不说话不是。

沉默才是真正的失分项

面试官要填的评分表,只能用传到他那里的信息来填。思考三十秒完全没问题——只要你给它贴个标签:"让我想一下用什么数据结构。"不贴标签的沉默,会被记成"卡住了"。这是这份清单里成本最低的习惯,也是被拒的候选人身上最常缺的那一个。

为什么快捷键在这一轮行不通

市面上大多数实时面试辅助工具靠快捷键驱动:听到问题,按一下,拿到答案。这个模式默认你的手是空的。但在手撕代码这一轮,你的手不是空的——你在打字,面试官盯着你的编辑器,你伸手去按快捷键的那半秒,在这里是看得见的,而在纯对话的面试里不会。

所以这是唯一一轮:辅助要么自己运行,要么等于没有。Interview Copilot 对每一个说完的问题自动作答,不需要按任何键:它从通话音频里听到面试官,判断问题已经结束,然后在你继续打字的同时把答案的结构放到你屏幕上。不是一段照着念的稿子,而是机制、取舍,以及值得说出口的那个数字。

辅助在哪里有用,在哪里反而害人

实时工具真正有用的场景很窄:没听清的问题、明明知道却一时想不起来的库函数签名、以及这一轮不是用母语进行时的术语。这些都是"提取"问题,而高压之下的提取困难是一种真实存在的、与工程能力无关的额外负担。

反过来会害人的,是你无法辩护的答案。面试官一定会追问——为什么用这个结构、数据量翻十倍会怎样、有重复值会不会崩——而追问瞄准的正是你刚才说的那句话。给出一个漂亮的答案然后在追问上崩掉,比给一个慢一点但完全属于你的答案更糟,因为它把"不确定录用"变成了"确定不录用"。

可用的界线很简单:用它来听懂和想起,推理自己做,用自己的话讲出来——因为被打分的只有后面这一件事。

FAQ

手撕代码面试是什么?

面试官打开共享编辑器,你在他注视下实时写代码并讲解思路,通常三十到六十分钟。和在线笔试不同,它衡量的不是最终代码,而是你怎么得到它:有没有先问清楚、思路是否合理、能不能一边写一边解释。

手撕代码时可以运行和测试代码吗?

CoderPad、CodeSignal、HackerRank 上通常可以,而且应该用——跑一遍比在脑子里跟它较劲快得多。如果面试官没说,先问一句;有些会故意关掉,想看你能不能在没有运行结果的情况下推理正确性。

写不出最优解会直接挂吗?

通常不会。评分表里只有一项和代码有关。先写出能跑的暴力解、说清楚它慢在哪里、再自己优化,分数往往高于沉默地写出最优解。真正致命的是一句话不说。

卡住的时候应该怎么办?

把最笨的解法说出口,从它开始。或者取一个四个元素的小例子手算一遍,边算边讲。两种方式都能把"卡住"变成一个看得见、可打分的过程,而沉默不能。

应用在这里如何帮忙

继续阅读