← 全部文章

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 就崩。
  • 没有数字。「快了很多」会招来一个你答不上的追问。要么知道确切数字,要么坦白说当时没测,以及现在会测什么。
  • 「我一直是对的」型冲突故事。一个你从头到尾正确、对方最后想通了的冲突故事,什么都没证明。好的版本是你改变了想法,或者你是对的但仍然要和不同意的人把事情推进下去。
  • 通篇没有「我」。大段描述团队做了什么。面试官考察的是你,不是那个项目。
  • 听起来像背的。准备素材和升华点,不要准备句子。

这篇的早期简版曾发在一亩三分地。此处为扩充版,英文版同步扩充。