先说我上个月遇到的一件事
上个月帮一个朋友内推,7 年经验,目标是大厂的 P7。算法题白板写了 18 分钟,边界条件都考虑了;系统设计聊的是他做过的订单履约,画了三张图,面试官点头点了七八次。面完他给我发消息,就俩字:稳了。
三天后 HR 给我的反馈只有一句话:技术没问题,但对业务的理解偏执行层,pass。
他不服,说订单履约不是业务?我说是,但你全程在讲「我怎么实现的」,没讲「这个系统为什么长这样」。他说那不重要啊,面试不就是看技术吗。
这就是我想写这篇文章的原因。我做过面试官,也帮人内推过,前后看过三百多份面试反馈。我越来越确定一件事:面试官写的不是能力清单,是风险清单。
评分表上写的不是「他会不会」,而是「招了他会怎样」
大部分公司的面试反馈表,格式都差不多。它不是给你打一个分,而是逼面试官回答一个问题:如果这个人入职,我最担心什么。
我见过最典型的一份反馈是这么写的:
编码能力:能独立完成中等难度的题,代码风格清晰。 沟通:表达有点跳,需要面试官引导才能回到主线。 建议:hire,但不要放在需要频繁和产品对齐的岗位。
看到没有,这条反馈里出现了「不要放在需要频繁和产品对齐的岗位」。这句话决定了什么?决定了后面的 leader 会把他放到一个偏基础架构的位置,或者干脆不给 offer——因为大部分岗位都要和产品对齐。
所以你技术强不强是一回事,面试官能不能在反馈里写出一句「我不担心他……」,是另一回事。我见过太多人把 80% 的精力花在算法题上。题当然重要,但它在一个 60 分钟的面试里只占 25 分钟。剩下的 35 分钟——自我介绍、项目、反问——才是最容易被写成「担心」的地方。
三类公司,用的根本不是同一张卷子
第一类,万人以上的大厂。 核心诉求是「可比较」和「防错」。阿里的 P 序列、字节的 2-1/2-2/3-1、腾讯的 T 序列,本质都是在做归一化,把你塞进一个人人都能对齐的坐标系里。这类面试有个没写出来的隐含问题:「如果这个人进来表现不好,我能不能解释清楚我当初为什么招他?」所以你要做的是让面试官容易转述你。你的项目要能被压缩成三句话:业务规模多大、你做了什么、结果是什么数字。做不到这一点,你在他脑子里就是一团模糊。
第二类,50 到 200 人的创业公司。 诉求是「明天能不能用」。面试官通常就是你的直属 leader,甚至是创始人。他们不关心你的算法有多优雅,他们关心「上周我们线上那个 P0 事故,你处理过类似的吗」。这类面试里,你讲技术深度反而有风险——你讲得越深,他越觉得你来了会嫌他们代码烂。正确的姿势是讲「在资源不够、时间不够的情况下,我是怎么做取舍的」。
第三类,外企。 他们评估的核心是「沟通成本」。谷歌有 hiring committee,亚马逊有 16 条领导力准则(官网公开可查),面试官每轮要对应几条准则写 evidence。这类面试里,「你为什么这么做」比「你怎么做的」重要十倍。有个很反常识的点:在外企面试里你说「我不确定」通常是加分项,在大厂面试里你说「我不确定」经常是减分项。
同一套项目经历,我在三类面试里讲的顺序、重点、甚至结论都不一样。这不叫撒谎,这叫匹配评价函数。
面试官的记忆只有两个点:最高光,和最后一个问题
卡尼曼的峰终定律(peak-end rule)说,人对一段经历的评价主要由峰值和结尾决定,中间过程影响很小。面试官也一样。
一场 60 分钟的面试,面试官可能同时开着电脑回两封邮件——我不是替他们辩解,这就是现实。所以别指望他记住你第三条回答里的那个精彩细节。你要做的是人为制造两个峰值。我的做法是准备两个「可伸缩的故事」,每个故事都能讲 30 秒,也能展开讲 3 分钟。30 秒版本放在自我介绍里埋钩子,3 分钟版本留给面试官追问。
比如钩子可以这么埋:「我们那个项目的 QPS 从 800 涨到 1.2 万的时候,我踩过一个坑,差点把主库打挂。」面试官只要问一句「什么坑」,这个故事就启动了。而这个问题是你准备好的,你当然答得好。这就是把不可控的面试,变成了可控的对话。
至于结尾那个峰值,就是反问环节,后面单独说。
一个具体的准备方法:建素材库,别建答案库
大部分人准备面试的方式是背答案。「最大的缺点是什么」「为什么离职」「讲一次你和同事冲突的经历」——这类题目在牛客网、Glassdoor 上能搜到几百道,你背不完,而且现在的面试官非常警惕背答案的人。我只要听到「我最大的缺点是太追求完美」这种话,心里的评分就已经下去了。
我的方法是建素材库。具体操作:拿一个 Excel,横轴挑 5 个你最有话说的项目,纵轴是 6 列——
- 业务背景,一句话,带规模数字(日活、QPS、数据量、团队人数)
- 你当时的角色,别说「参与」,说清楚「我负责哪块,另外哪块是谁做的」
- 关键技术决策,选了什么、放弃了什么、为什么
- 最难的一个问题,具体到某一天、某个报警、某个数字
- 带数字的结果,别写「提升了性能」,写「P99 从 800ms 降到 210ms」
- 如果重来一次,你会怎么做
5 乘 6,30 个格子。这 30 个格子能覆盖 80% 的行为面试题。面试官问「讲一次你主导的技术决策」,去第 3 列找;问「讲一次你解决的最难的问题」,去第 4 列找;问「你犯过什么错」,去第 6 列找。
第 6 列是我面试时最看重的。一个候选人如果说「如果重来,我会先在灰度环境压测两周再全量,当时我们是一天就全量了,虽然没出事,但现在想起来是靠运气」——这句话的分量,顶得上十道算法题。因为它在告诉我:这个人有复盘能力,而且不装。
说一个反常识的:回答要有边界
我面过的人里,挂掉的有个共同特征:问什么都说「我参与过」。
问他用过 Kafka 吗,说用过。问分区怎么设计,说得含糊。问如果分区数不够怎么办,说加分区。再问加分区会导致什么,就卡住了。
这里有个心理机制:候选人觉得「承认不会」等于扣分。但在面试官眼里,一个不知道自己边界在哪的人,比一个知道自己边界的人危险得多。因为前者会在生产环境里瞎改。
我现在面试会专门问一两个候选人大概率不会的问题,然后看他的反应。说「这个我没做过,但我的猜测是……我从 XX 原理推一下」——这种人我基本会给过。说「这个我们项目里用过,是这样的……」然后开始编——这种人我会在反馈里写一句「对知识边界不清晰」。
我自己面过六十多个人,明确说「这个我不了解」的人,最终通过率比平均值高。样本很小,方法也不严谨,但我信这个观察。
反问环节,不是客套环节
「你还有什么问题吗」。这句话在面试官那儿是个信号:面试到此结束,你可以放松了。但在评分表上,这一栏经常是有位置的。
大部分人问什么?「团队氛围怎么样」「平时加班多吗」「技术栈是什么」。这三个问题不是不能问,但它们不产生信息差——你在脉脉上、在面试前的 HR 沟通里都能拿到答案。
我推荐问的问题长这样:
- 「这个岗位未来半年最需要解决的问题是什么?」——听他怎么描述问题的颗粒度,你就知道这个团队的水平。
- 「你们团队现在最缺的能力是什么?」——直接问缺口,看你能不能补上。
- 「如果我现在入职,前三个月你会怎么判断我做得不错?」——把他的评价标准问出来。
第三个问题尤其有用。很多时候你挂,不是因为能力不够,是因为你不知道他手里那把尺子量的是什么。
最后
我不太相信「面试有标准答案」这种说法。但我相信一件事:面试是一次信息极度不对称的对话,你唯一的优势是——你可以提前想清楚对方真正要什么。
技术当然要练,题也要刷。但如果你已经刷了三百道题还是挂,问题大概率不在题上。回去翻一遍你的项目,看看能不能填满那 30 个格子。填不满,说明你要么做得太少,要么想得太少。这两个问题,都比算法题难解。