一场面试四十五分钟,候选人讲了三段项目经历,都很完整:背景、方案、结果。面试官记录"表达清晰、思路完整",给了通过。入职后发现,那三段经历里有两段他只是参与者,方案是别人定的。
面试官最容易犯的错不是"问得难",而是问得让候选人可以照着准备好的稿子讲。准备好的叙述天然是光滑的:它没有犹豫、没有取舍、没有被否决的方案。而真实水平的痕迹,恰恰在那些不光滑的地方。
1. 三种问题类型的信息量
| 类型 | 候选人可准备程度 | 能看出什么 |
|---|---|---|
| 项目介绍 | 高(已演练多次) | 表达与概括能力 |
| 技术知识点 | 高(可背) | 记忆与广度 |
| 现场推演 | 低(无法预演) | 思维过程与判断依据 |
| 边界追问 | 最低(依赖真实经历) | 是否真的做过 |
两类题不能互相替代:推演题能看出思维质量,但一个准备充分的候选人可以背下常见推演题的答案;边界追问能验证真实经历,但看不出他在陌生问题上的能力。一场有效的面试通常两者都用,各占一半时间。
第三与第四类的信息量远高于前两类。"现场推演"考的是过程,"边界追问"考的是真实性。
2. 边界追问的五个方向
| 方向 | 问法示例 | 说谎者的破绽 |
|---|---|---|
| 数量 | 数据量、QPS、并发是多少 | 数字含糊或前后不一致 |
| 取舍 | 当时为什么选 A 不选 B | 说不出被否决方案 |
| 代价 | 这个方案带来了什么新问题 | 只讲好处 |
| 失败 | 出过什么问题、怎么修的 | 说"没出过问题" |
| 归属 | 你负责哪一部分 | 只讲团队做了什么 |
第二项最有效:真实做过的人一定有被否决的方案,因为取舍是真实决策的一部分。没做过的人只能讲被采纳的那条路。
边界追问还有个技巧:问"最近一次改动"。准备过的叙述都是"最终形态",而最近一次改动带着具体的动机与约束,很难预先编排。
第五项要问得具体:不是"你在这个项目里做什么",而是"这段代码是谁写的""这个决定是谁拍的"。前者允许模糊,后者逼出边界。
// 追问的递进示例(同一件事,四层深度)
L1:这个项目你的角色是什么? → 可准备
L2:你负责的那部分有多少代码? → 需要具体
L3:这块里最难的一个技术决定是什么? → 需要真实判断
L4:当时考虑过哪些别的做法,为什么不选?→ 需要真实经历
3. 现场推演题的设计
| 要素 | 好的设计 | 差的设计 |
|---|---|---|
| 起点 | 具体场景 + 明确约束 | 大而空("如何设计一个...") |
| 中间 | 允许候选人提问 | 要求一次说完 |
| 判据 | 看他如何获得信息 | 看他是否知道答案 |
| 干扰 | 中途改一个约束 | 一路顺利 |
第四项最能区分人:在中途改变一个约束(数据量涨十倍、不能加机器、只允许一次部署),看候选人如何调整方案。真实工作里约束总在变,能调整的人才是能干活的人。
推演题最容易犯的错是"用自己熟悉的领域出题":面试官熟悉的题,往往也是他能一眼看出对错的题,于是不自觉地用"是否与我的答案一致"来评分。好的推演题应当允许多种合理方案。
// 一个可用的推演题框架(15 分钟)
1. 场景:给一个具体接口,日请求 200 万,P99 要求 200ms
2. 让候选人先问三个问题(看他是否知道该问什么)
3. 听到方案后,加一条约束:数据库不能加索引
4. 看他如何权衡:改结构?加缓存?接受更慢?并说明代价
推演题里还要注意"提示的给法":卡住时给最小提示,看候选人能否顺着走。愿意接提示、并能在提示后继续推进的人,比"卡住就沉默"的人在协作中更好用——而这一点在标准答案里是看不到的。
// 提示的阶梯:一次只给一级,观察反应
L0:不给提示,等 30 秒
L1:指出一个方向("这里会有并发问题吗")
L2:指出具体位置("看这个写入路径")
L3:给出做法(仅在判断基础能力时使用)
// 记录他在第几级提示下能继续推进 —— 这比"是否独立解出"更接近真实工作
4. 评分要落到证据上
| 差的做法 | 好的做法 |
|---|---|
| "沟通清晰" | "能用自己的话说清取舍,且承认不确定的部分" |
| "技术扎实" | "被追问数据量时给出了具体数字与来源" |
| "有架构能力" | "改约束后给出两个方案并说明各自失效边界" |
| "不合适" | "第 3 层追问后无法说明自己负责的部分" |
评分维度也不必多,三个就够:
// 三维评分:少而可区分,避免"六项全能"式打分
1. 信息获取:是否知道该问什么(面对陌生问题的起点能力)
2. 方案质量:方案是否满足约束、是否说明代价
3. 真实性:追问后回答是否一致、是否能说明自己负责的部分
// 每维三档(弱/中/强)+ 一句证据,不做加权总分
第三项的差别在于是否留下可复核的记录。面试记录的价值不只是当下的判断,还包括"半年后有人质疑这个决定"时的依据。
// 面试记录:结论必须挂证据,且允许"不确定"
candidate: C-2026-118
signals:
- claim: "负责订单服务重构"
evidence: "能说明重构前后 QPS 与延时的变化,给了具体数字"
confidence: high
- claim: "设计过分库方案"
evidence: "追问分片键选择时说不出备选方案"
confidence: low
open_questions:
- "分布式事务部分未深入,若岗位需要需补一轮"
decision: "通过(偏中)"
5. 面试官的三个偏差
| 偏差 | 表现 |
|---|---|
| 相似性偏差 | 喜欢"和我像"的候选人 |
| 光环效应 | 某一点很强就推断整体强 |
| 松懈偏差 | 越到后面越容易放行 |
还有一类偏差值得提防:提问者偏差——同一道题反复问之后,面试官会不自觉地用"上一个候选人怎么答"作为参照,早面的人反而更吃亏(或更占便宜)。缓解办法是把评分锚点写下来,而不是记在心里。
第三项在一天面四场时最明显:最后一场的通过率通常高于第一场,不是候选人变好了,是面试官累了。缓解办法是固定评分表与固定追问层数,减少"凭感觉"的空间。
6. 排错:五种"面错了人"
| 现象 | 成因 | 处理方向 |
|---|---|---|
| 入职后能力与面试不符 | 只听了准备好的叙述 | 加边界追问 |
| 面试评价无法复核 | 结论没有证据 | 记录挂具体回答 |
| 同岗位不同面试官结论差异大 | 无统一判据 | 固定追问层与评分维度 |
| 优秀候选人被否 | 题目超出岗位需要 | 按岗位定难度 |
| 面完记不清细节 | 一天多场 | 当场写记录 |
排错时可以先问自己一个问题:如果这位候选人入职,我能不能预测他第一个月会卡在哪。答不出来,说明这次面试没有获得足够的信息,而不是"候选人不行"。
第四项同样重要:用架构师的标准去面一个执行岗,会否掉很多能干活的人。难度应当对齐岗位的真实要求,而不是面试官的兴趣。
7. 边界:什么情况不必深挖
| 场景 | 为什么 | 做法 |
|---|---|---|
| 明确的基础岗(按流程执行) | 判断空间小 | 考执行力与稳定性 |
| 内部转岗且已有长期观察 | 信息已充分 | 走简化流程 |
| 短期项目制合作 | 只看具体技能 | 用实操题代替 |
| 候选人已有多轮背书 | 信息已有交叉验证 | 聚焦岗位匹配 |
判断口径一句话:这次面试要回答的是"能力有多高"还是"经历是否真实"。前者用推演题,后者用边界追问——两者混着问,往往两件事都没答清。
8. 自测
- 四类问题中,哪两类的信息量最高?它们各自考什么?
- 为什么"当时为什么选 A 不选 B"最能区分真实经历?没做过的人会露出什么破绽?
- 现场推演题里,"中途改一个约束"为什么最能区分人?它模拟的是工作里的什么?
- 面试记录为什么要挂证据而不是写评价词?它对半年后的价值是什么?
- 三个面试官偏差中,哪一个在一天多场时最明显?缓解办法是什么?
- 判断"该用推演题还是边界追问"的那个问题是什么?