Behavioral 面试:不要背答案,要搭结构
大约一百道 behavioral 问题的分类,以及用四五个故事覆盖它们的方法——而不是准备一百个背下来的答案。
博士快毕业的时候,我面了一些码农和 research engineering 的岗位。相比技术面,BQ 是最难准备的一部分。技术面至少有明确的练习方式,BQ 则很抽象:问题是开放式的,什么算好答案都不清楚,而且到处都是「给每个问题准备一个故事」的建议。
这个建议是不成立的,至少不可执行。问题太多,你背不下来那么多答案;就算背下来了,听起来像背的比说得磕巴还糟。真正有用的是把准备时间花在结构而不是数量上:先搞清楚问题到底有哪些,分好类,然后挑少量真实故事,让它们之间正好覆盖所有类别。
下面的题库主要参考了 Google 和 Meta 的面经;后面的方法是我会告诉一个从零开始的人的东西。
一、这一轮到底在考什么
最有用的一次认知转变:面试官不是在收集故事,他是在找少数几种特质的证据,而每个问题只是通往同一栋房子的不同扇门。「讲一个你做过最难的项目」不是真的要你描述一个难项目,而是要看你能不能识别困难、拆解困难、并在困难下行动。
大致上被考察的特质是:
- Ownership——看到问题之后,你是否当成自己的事
- 约束下的判断力——不可能全做完时你怎么取舍
- 处理冲突——分歧让你防御,还是让你好奇
- 沟通——能不能把复杂的事讲给不在现场的人听懂
- 成长——经历是否真的改变了你的行为
下面十二类里的每一类,都对应其中一到几项。看清这层映射之后,一百道题就塌缩成可以管理的东西了。
二、题库:十二类
一级条目是主问题,缩进的是出现频率高到值得预判的 followup。默认你说的任何一句话都会被追问至少两轮。
1 · 项目与挑战
- 描述一个你做过的有挑战性或复杂的项目。
- 难在哪里?
- 遇到了什么问题?
- 怎么解决的?
- 影响是什么——指标、结果?
- 最近做的最有意思的项目是什么?
- 讲一次项目中出现意料之外情况的经历。
- 你当时的反应?
- 事后做了什么——文档、流程改进?
- 讲一次你给团队引入新东西的经历。
- 讲一次你做了超出预期的事。
- 讲一次你主动站出来支持团队。
2 · 冲突与分歧
- 讲一次你和别人意见不合的经历。
- 你怎么处理冲突的?
- 结果如何?
- 你一般怎么处理冲突?
- 和同事的冲突。和 manager 的冲突。
- 如果团队里有人很难合作 / 不配合 / 达不到预期,你会怎么做?
- 讲一次不同视角导致不同设计决策的经历。
- 最后怎么融合成更好的方案?
- 讲一次你听了别人的意见并改变了想法。
- 讲一次你在团队里为别人说话。
3 · 团队协作与领导力
- 描述在性格或背景差异很大的团队里工作的经历。
- 你怎么帮别人融入团队?
- 讲讲你的 onboarding 经历。
- 别人怎么帮你的?
- 你怎么帮新人的?
- 有什么收获?
- 如果队友错过 deadline 你会怎么做?如果你是 leader 要分配角色呢?如果团队遇到谁都不熟悉的问题呢?
- 讲一次你在工作中支持包容性的经历。
- 你怎么理解 inclusiveness?
- 什么样的人是好的 leader 或 mentor?
- 举一个你以前 manager 的例子。
4 · Ownership 与责任
- 讲一次你展现出强 ownership 的经历。
- 讲一次你主动做了职责之外的事。
- 发版前发现一个 bug,但没时间修了,你怎么办?
- 对比:bug 在你负责的项目里 / 不在你负责的项目里 / 和你当前工作没有依赖关系。
- 三种情况你分别怎么排优先级、怎么行动?
- 讲一次你的诚信受到考验的经历。
5 · 优先级、deadline 与工作量
- 讲一次活太多干不完的经历。
- 原因是什么?
- 你怎么处理的?
- 你怎么排优先级?
- 多个 deadline 撞在一起怎么办?deadline 非常紧怎么办?
- 讲一次你需要同时处理多件事的经历。
- 全都完成了吗?
- 有没有考虑过放弃某些?
- 有人要求把他的需求排到别人前面,你怎么回应?收到不合理的需求呢?
6 · 学习、成长与适应
- 讲一次你学了新东西并因此改变做法的经历。
- 讲一次你从别人身上学到并应用的经历。
- 过去一年你做了什么来提升自己?
- 讲一个你最近引以为豪的成果。
- 讲一次你意识到之前的方法是错的并纠正的经历。
7 · 反馈与沟通
- 讲一次你给别人反馈的经历。
- 对方是什么反应?
- 什么是好的反馈,什么是坏的反馈?举例。
- 讲一次你需要管理预期的经历——对 stakeholder,对管理层。
8 · 团队氛围与困难局面
- 如果有人把团队的功劳全揽了 / 有人不合群 / 团队士气低落,你会怎么做?
- 你怎么让一个松散的团队变得有结构?
- work-life balance 很差的环境你怎么应对?
9 · 产品与用户思维
- 如果要为差异很大的用户群做产品,你怎么设计、怎么权衡?
- 讲一次你改进产品或方案的经历。
10 · 职业、动机与个人
- 自我介绍。
- 为什么选这家公司?
- 短期和长期职业目标。
- 你的优点和缺点。
- 你对下一任 manager 有什么期待?
- 今年有什么计划?
- 最近有没有改变什么习惯或爱好?
11 · 假设与情景题
- 作为 team leader:怎么处理错过的 deadline?怎么分配角色?
- 在开始自己的工作前发现别的组项目里有 bug。同样的 bug 在你自己项目里呢?
- 产品要服务全球用户,你会怎么做?
12 · 复盘——通用 followup
这四个几乎可以挂在任何回答后面。如果你没想过,答案就是在这里散架的:
- 为什么选择那个做法?
- 你考虑过哪些替代方案?
- 下次你会怎么做得不一样?
- 你学到了什么?
三、搭建故事集
不要试图给每个问题准备一个故事。上面差不多一百道题,你背不下来,而且我个人感觉 BQ 本来就不需要过度准备。
有效的结构是一个核心故事 + 几个小故事:
- 核心故事是你真正做过的最重要的项目。它应该和简历内容贴合,最好有跟其他人的合作,而且复杂到可以从多个角度切入。一个好的核心故事不用改动就能回答第 1、4、5、6 类,通常连第 2、3 类也能覆盖。
- 小故事是三四个专门用来补核心故事覆盖不到的部分。通常缺的是冲突(第 2 类)、给反馈(第 7 类)、以及团队氛围(第 3 或 8 类)。
挑选标准是覆盖度,不是亮眼程度。一个「和合作者在分析方法上有分歧」的小故事,比第二个大项目有用得多——因为第二个大项目回答的还是第一个已经回答过的那些问题。
动笔之前先把覆盖表列出来:十二行,每类一行,标上你会用哪个故事。空着的行就是你要回自己经历里去找的东西。
| 类别 | 通常由谁覆盖 |
|---|---|
| 1 项目与挑战 | 核心故事 |
| 2 冲突 | 小故事——需要一次真实的分歧 |
| 3 团队与领导力 | 核心故事,或一个带新人的小故事 |
| 4 Ownership | 核心故事 |
| 5 优先级 | 核心故事 |
| 6 学习与成长 | 核心故事,换个角度讲 |
| 7 反馈 | 小故事——通常是最难补的一个缺口 |
| 8 团队氛围 | 小故事 |
| 9 产品与用户 | 任何故事,重新框成「为谁做的」 |
| 10 职业与动机 | 单独准备,不是故事 |
| 11 假设题 | 不需要故事——考的是推理不是回忆 |
| 12 复盘 followup | 每个故事都必须自带 |
四、怎么用 LLM,又不让它替你编
LLM 在这件事上确实有用,但只能扮演一个角色:一个从你嘴里挖细节的面试官。一旦让它起草,它就会开始编——编得合理的指标、合理的同事、合理的冲突。你不会察觉,然后你会被追问一个你从没经历过、也答不上来的细节。
所以规则是:它问,你答,它只组装你说过的东西。四个 prompt,按顺序用。
第一步 —— 圈定故事范围
把简历和题库都给它,要的是一张地图而不是文章。这一步真正的产出是缺口列表。
以下是我的简历,和一份 behavioral 面试题库。
[粘贴简历]
[粘贴题库]
先不要写任何故事。
1. 从简历里找出 4-6 段可能支撑回答的经历。
2. 对每一段,列出它能覆盖十二类里的哪几类。
3. 告诉我哪些类别没有被任何一段覆盖到。
只输出覆盖表和缺口列表,不要别的。
第二步 —— 让它反过来问你
这是真正干活的一步,也是最容易被跳过的一步。一次只做一个故事。「不要提示细节」那句是关键——没有它,模型会开始给你一个版本让你点头,而点头比回忆容易太多了。
我们来做一个故事:[一句话标签]。
你的任务是采访我,不是替我写。一次问一个问题,问真实发生了什么。
重点问:
- 我当时受到什么约束,还有谁参与
- 我具体做了什么,一个决定一个决定地讲
- 当时有哪些别的选项,我为什么否掉它们
- 可量化的结果是什么
- 现在回头看我会怎么做得不一样
不要提示细节。不要替我补空缺。不要给我一个版本让我确认。
如果我说「不记得了」或者「没有发生过」,就放弃那条线索,换下一个。
最多问 10 个问题,然后停下来,把你掌握的信息列给我看。
第三步 —— 组装,并标出来源
要三个长度,因为被问「简单举个例子」的频率和被问完整版差不多。[未核实] 这个标记是让整件事安全的关键——凡是被标出来的,要么你去核实,要么直接删掉。
只用我在这次对话里告诉你的事实,把这个故事写成三个长度:
- 30 秒:对方说「简单举个例子」时用的版本
- 90 秒:默认版本
- followup 素材:考虑过的替代方案、会怎么做得不一样、学到了什么
凡是你推断出来、而不是我亲口说过的内容,标上 [未核实]。
不要把空缺抹平,让它们露出来。
第四步 —— 复查覆盖度
全部写完之后再对一次地图。这一步专门用来抓那个很常见的结果:四个故事最后全在回答第 1 类。
以下是我写完的故事:
[粘贴]
以下是完整题库:
[粘贴]
对十二类中的每一类,告诉我我会用哪个故事,以及契合程度:
强 / 勉强可用 / 没有。
列出缺口。不要为了补缺口而编新故事。
五、回答时要升华,不要复述
最常见的错误是把每道题当成托福口语题——好像面试官问「你遇到过最困难的情况」,是真的要你忠实描述那个情况。不是的。每道题都是一次展示优点的机会,一个事实准确但什么都没展示出来的回答,是失败的回答。
所以每个回答的结尾都要有一次升华:故事从「一件事」变成「一个证据」的那个点。
- 挫折 → 你在压力下怎么运转
- 与同事的冲突 → 你的沟通能力
- 活太多 → 你怎么决定不做什么
- 你犯的错 → 你事后怎么改了流程
如果面试官听完之后写不下任何一个特质,这个回答就没有落地——不管它多真实。
升华应该是一两句话,而且要由故事本身挣来,不是硬安上去的。「这让我意识到沟通的重要性」是硬安的。「我现在会把分歧写下来、在见面之前发给对方,因为大部分看起来是分歧的东西,最后发现只是两个人在用同一个词表达不同的意思」是挣来的。
六、常见翻车方式
- 准备了数量而不是覆盖度。二十个故事全在回答第 1 类,反馈和冲突一个都没有。
- 让模型替你写故事。读起来很顺,第一个 followup 就崩。
- 没有数字。「快了很多」会招来一个你答不上的追问。要么知道确切数字,要么坦白说当时没测,以及现在会测什么。
- 「我一直是对的」型冲突故事。一个你从头到尾正确、对方最后想通了的冲突故事,什么都没证明。好的版本是你改变了想法,或者你是对的但仍然要和不同意的人把事情推进下去。
- 通篇没有「我」。大段描述团队做了什么。面试官考察的是你,不是那个项目。
- 听起来像背的。准备素材和升华点,不要准备句子。
这篇的早期简版曾发在一亩三分地。此处为扩充版,英文版同步扩充。