结对编程面试:当你不是一个人时,他们在评什么
默认的假设是:你正在被观察。而现实是:有人正在和你一起干活。几乎所有能拿高分的做法,都是从意识到这个区别推出来的。
代价最大的那个误解
多数候选人上来就假定面试官是一个恰好在场的裁判,因此正确的行为是表演能力、避免暴露短板。在这个假设下你不会提问,因为提问看起来像不懂;你不会把思路说出口,因为半成形的想法看起来不够精致。
这正好反了。在结对轮里,面试官在这四十分钟里是你的同事,而被衡量的东西是“和你一起工作是什么感觉”。你的沉默不是沉稳——它意味着这个人很难结对。
把对方用起来,而且要出声
结对会话给了你一样单人轮没有的东西:一个已经知道答案的第二个大脑。用得好的候选人会反复做三件事。
他们在往上搭之前先核对假设。“我假设这些 ID 是唯一的——这个前提成立吗?”十秒钟,省掉二十分钟的错误方向。
他们给出选项,而不是瞎猜。“这里我可以用字典,也可以先排序。排序读起来更简单,字典更快。你这边更在意哪个?”这不是优柔寡断——真实工作就是这么推进的。
他们接受提示而不争辩。当对方说“如果列表是空的呢”,正确的回应不是辩护,而是“这个点好”外加一句守卫语句。
敲键盘不等于在干活
一个常见模式:候选人稳稳当当敲了三十分钟,产出一个差点能跑的东西,然后收到负面反馈。面试官没法跟上他的推理,于是除了成品之外没有任何可评估的东西——而成品还没做完。
相反的模式得分更高:代码更少,讲述更多,检查点更频繁。“好,主路径处理完了。在往下走之前——你想让我处理格式错误的输入,还是现在先把正常路径跑通就够?”
这个问题在真正做事。它表明你知道那种情况存在,它尊重时间,而且它把面试官变成了范围决定的参与者,而不是旁观者。
当你不同意对方时
这种情况会发生:面试官提了一个你认为不对的做法。两个极端都丢分。默默照做读起来像没有观点。死咬不放读起来像一个在团队里会让人精疲力竭的人。
正确的做法是把分歧变得具体而廉价。“我觉得输入已经有序的时候这里会出问题——我能拿那个用例试一下吗?”现在它变成了一个两分钟的实验而不是一场争论,而且无论最后谁对,你都已经展示了你怎么解决技术分歧。而这几乎就是这道题真正在问的东西。
最后五分钟
多数候选人把最后一段时间用来敲得更快,指望做完。没做完是常态,而且很少致命;没解释清楚才更糟。
更好的用法是:停下来,说清楚你现在在哪。“标准情况这样是通的。如果再给我十分钟,我会处理重复元素,做法是在这里维护一个已见集合。”
你现在已经证明了你知道还缺什么、以及你会怎么收尾——而这本来就是“做完”能证明的大部分东西。
他们在记什么
结对轮的面试官通常按一张很短的评分表打分,而上面很少是关于算法的。反复出现的条目是沟通、协作、对反馈的处理,以及压力下的调试。
沟通不等于口才。它指的是:旁边看着的人能不能预测你的下一步。能,你就是可读的;不能,那么你做的每一件事看起来都像在猜,哪怕其实不是。
对反馈的处理是候选人最低估的一项。面试官至少会打断你一次,而且往往用的是你本来就知道的东西。被记下来的是:这次打断有没有让你变得防御,以及对话多快回到了活儿本身。
调试才是他们希望看到的部分
结对轮几乎总会出现一个时刻:代码没有按你预期的那样运行。那个时刻不是面试里的挫折——它常常就是这一轮的重点。
弱的版本是乱改,改到输出看起来对为止。强的版本是在动任何东西之前先形成一个假设:“计数多了一个,而循环是从零到 n 闭区间——我觉得问题出在边界上。我拿 n 等于一来验证一下。”
先说假设,再去验证。两句话,你展示的就是方法,而不是条件反射。
开场两分钟怎么铺
动手写之前,出声做三件事:复述一遍问题、确认输入的形状、说出你打算先做什么。这要花九十秒,却会改变整场会话的基调。
它同时给了面试官一个早期纠偏的机会。只要你给出口子,他们通常会用——而第二分钟的纠偏是免费的,同样的纠偏发生在第二十分钟,你这一轮就没了。
如果题面本身含糊,那种含糊通常是故意的。就此提问不是拖延;它就是被考的第一件事。
这时候副驾能做什么
Interview Copilot 实时跟着这一轮,在对方还在说话的时候就把一个结构放到你屏幕上——这个问题真正在问什么、哪个约束是关键、哪个取舍值得说出口。不是让你照念的台词:是一个支架,你用自己的话从上面说下去。
FAQ
什么是结对编程面试?
在这一轮里,你是和面试官一起做一个东西,而不是被人看着解谜题。对方可能也写代码、提方向,或者扮演一个队友。被评的是协作:你会不会解释、会不会听、分歧提得有没有用、对方的输入有没有被你吸收。
结对编程轮到底在评什么?
评的是“和你一起工作效率高不高”。具体来说:你有没有讲出自己的意图、有没有用上搭档给的东西、反对时是给了理由还是直接服从或无视,以及你写的代码在实时状态下别人看不看得懂。
如果我觉得面试官说错了,该不该反对?
该,但要带理由和替代方案。“这样可行,不过它多扫了一遍列表——我们能不能一遍搞定?”就是他们想听的回答。默默照做和默默推翻,两种都得分很差。
我应该敲多少代码?
比你以为的少。被评估的不是敲键盘,而是决定。长时间沉默地敲字不产生任何证据,所以边写边讲你在写什么、为什么这么写。