Quant (Brian Teasers & Game Theory)
Brain Teasers & Game Theory 面试题全集
来源:Two Sigma 面经(192条)+ Citadel 面经(244条)+ 绿皮书(Chapter 2 Brain Teasers)
(共 20 道题,2 大分类,覆盖绿皮书 Chapter 2 的博弈论与逻辑推理核心题目 + Two Sigma 和 Citadel 面经中的 brain teaser 题目。)
频率标准:
- ⭐⭐⭐⭐⭐:必考核心题,多家公司反复出现(5+ 次),面试重中之重
- ⭐⭐⭐⭐:高频题,经常出现在面试中(3-4 次)
- ⭐⭐⭐:中频题,多次出现或作为重要知识点(2-3 次)
- ⭐⭐:偶尔出现或作为追问
- ⭐:罕见但可能出现,或作为加分题
一、博弈论与策略(Game Theory)
知识点
Backward Induction(逆向归纳)
从结局往前推。先想”如果只剩最后一步会怎样”,然后”倒数第二步会怎样”……一直推回起点。
适用场景: 多人轮流决策,每人理性且想最大化自己的利益。
例题
题目49:Screwy Pirates(海盗分金)⭐⭐⭐⭐⭐
来源: 绿皮书 2.1 + Citadel 面经
5 个海盗(A 最高级到 E 最低级)分 100 金币。规则:最高级的提方案,所有人投票,≥ 50% 同意就通过(提议者也投票),否则提议者被杀,下一个人提方案。每个海盗:首先想活命,其次想要更多金币,最后想杀人。
A 应该怎么提方案?
答案: A 提 98 : 0 : 1 : 0 : 1(A 拿 98,C 拿 1,E 拿 1)
解法(绿皮书,Backward Induction,一步步来):
如果只剩 2 个人(D 和 E): D 提 100:0。D 自己投赞成(1/2 = 50%),通过。E 什么都拿不到。
如果剩 3 个人(C, D, E): C 知道如果自己被杀,D 会拿 100,E 拿 0。所以 C 给 E 1 个金币(比 E 在 D 的方案中拿到的 0 多),E 会投赞成。C 提 99:0:1。C + E = 2/3 > 50%,通过。
如果剩 4 个人(B, C, D, E): B 知道如果自己被杀,C 拿 99,D 拿 0,E 拿 1。B 给 D 1 个金币(比 D 在 C 方案中拿到的 0 多),D 投赞成。B 提 99:0:1:0。B + D = 2/4 = 50%,通过。
5 个人(A, B, C, D, E): A 知道如果自己被杀,B 拿 99,C 拿 0,D 拿 1,E 拿 0。A 需要 3 票(包括自己)。给 C 1 个金币(比 C 在 B 方案中拿到的 0 多),给 E 1 个金币(比 E 在 B 方案中拿到的 0 多)。C 和 E 投赞成。
A 提 98:0:1:0:1。A + C + E = 3/5 > 50%,通过。
面试关键: 向面试官展示你从简单情况开始推,逐步增加复杂度。
题目50:Tiger and Sheep(老虎和羊)⭐⭐⭐
来源: 绿皮书 2.1 + Citadel 面经
100 只老虎和 1 只羊在岛上。老虎更喜欢吃羊,但吃了羊会变成羊(会被其他老虎吃)。所有老虎完全理性,首先想活命。羊会被吃吗?
答案: 不会(100 是偶数 → 羊安全)
解法(绿皮书,从小情况推):
1 只老虎: 吃。吃完变成羊,但没有其他老虎了,安全。
2 只老虎: 不吃。如果一只吃了变成羊,另一只会吃它(变成 1 只老虎的情况)。所以谁也不敢吃。
3 只老虎: 吃。吃完变成 2 只老虎 + 1 只羊。2 只老虎不敢吃(上面分析了),所以变成羊是安全的。
4 只老虎: 不吃。吃完变成 3 只老虎的情况,3 只老虎会吃,所以不安全。
规律: 奇数只老虎 → 吃。偶数只 → 不吃。100 是偶数 → 不吃。
直觉: 偶数只老虎形成了一种”恐怖平衡”——每只都想吃,但谁先动谁就变成被吃的。就像冷战中的核威慑。
题目51:Secretary Problem(最优停止)⭐⭐⭐
来源: Citadel 面经
$N$ 个候选人依次面试。每次看完必须立刻决定录不录(不能回头看之前的人)。怎么最大化录到最好的那个人的概率?
答案: 前 $N/e \approx 37\%$ 个人全部拒绝(只观察),之后录取第一个比之前所有人都好的。
成功概率 $\approx 1/e \approx 36.8\%$
解法思路:
设阈值为 $r$(前 $r$ 个人全拒绝)。最佳候选人在位置 $i$($i > r$)且被录取的条件是:前 $i-1$ 个人中最好的在前 $r$ 个里。
\[P(\text{成功}) = \sum_{i=r+1}^{N} P(\text{最佳在位置}i) \times P(\text{前}i-1\text{个最好的在前}r\text{个}) = \sum_{i=r+1}^{N} \frac{1}{N} \times \frac{r}{i-1}\] \[= \frac{r}{N} \sum_{i=r+1}^{N} \frac{1}{i-1} \approx \frac{r}{N} \ln\frac{N}{r}\]对 $r/N$ 求导令其为零,得 $r/N = 1/e$,最优概率 = $1/e$。
题目52:猜 2/3 of Average ⭐⭐⭐⭐
来源: Citadel 面经
$N$ 个人各猜 1-100 的数。最接近所有人平均值的 2/3 的人赢。最优策略?
答案: Nash 均衡是所有人猜 1。
推理过程:
- 如果大家都猜 50 → 2/3 × 50 = 33 → 应该猜 33
- 如果大家都猜 33 → 2/3 × 33 = 22 → 应该猜 22
- 如果大家都猜 22 → 2/3 × 22 = 15 → 应该猜 15
- ……不断迭代,最终趋向 1
面试中说: “通过反复迭代 best response,最终收敛到所有人猜 1 的 Nash 均衡。”
题目53:Two Envelopes Paradox ⭐⭐
来源: Citadel 面经
两个信封,一个是另一个的 2 倍钱。你打开一个看到 100。换的期望 = $0.5 \times 50 + 0.5 \times 200 = 125 > 100$,所以换?但对方也这么想,永远在换?
答案: 这是一个悖论。错误在于:你不能同时假设 $P(\text{大信封}) = P(\text{小信封}) = 0.5$ 对所有金额成立。
正确分析需要指定先验分布。 如果你知道金额是从某个分布里抽的,用贝叶斯就能正确分析。悖论产生于使用了不正当的”均匀先验”(不存在对所有正实数均匀的分布)。
面试中说: “The paradox arises from an improper prior. To resolve it, we need to specify a proper prior distribution for the amounts.”
二、Brain Teasers(逻辑推理题)
知识点
Brain teasers 不需要高深数学,考的是:
- 简化问题: 从小例子开始找规律
- 逻辑推理: 一步步推导
- 跳出框架: 不走寻常路
- 对称性和不变量: 找到在变化过程中不变的量
例题
题目54:River Crossing(过桥)⭐⭐⭐
来源: 绿皮书 2.2
4 人过桥,1 个手电筒,桥最多走 2 人(按慢的人速度走)。速度:A=10分钟,B=5分钟,C=2分钟,D=1分钟。最快多久全过?
答案: 17 分钟
解法(绿皮书):
关键洞察(绿皮书高亮): 10 分钟的人和 5 分钟的人应该一起过(这样只浪费 10 分钟而不是 10+5=15 分钟分开过)。但这不应该在第一轮,否则没人送手电筒回来。
最优策略:
- C(2) 和 D(1) 过 → 2 分钟。D 送手电筒回来 → 1 分钟。(累计 3 分钟)
- A(10) 和 B(5) 过 → 10 分钟。C 送手电筒回来 → 2 分钟。(累计 15 分钟)
- C(2) 和 D(1) 过 → 2 分钟。(累计 17 分钟)
为什么不能更快? 最慢的两人(A=10, B=5)必须过桥。如果分开过需要 10+5+回程 = 17+。让他们一起过只花 10 分钟(B 被 A 的速度”免费”带过去了)。
题目55:Burning Ropes(烧绳子)⭐⭐⭐⭐⭐
来源: 绿皮书 2.2 + Two Sigma + Citadel
两根不均匀绳子各烧完 1 小时。量出 45 分钟。
答案:
- 同时点:绳 1 两头 + 绳 2 一头
- 绳 1 两头烧完 → 30 分钟(两头同时烧,总时间减半)
- 此时绳 2 还能烧 30 分钟。立刻点绳 2 的另一头
- 绳 2 两头都在烧 → 再过 15 分钟烧完
- 总共 30 + 15 = 45 分钟
关键洞察(绿皮书): 一根绳子两头同时烧,烧完时间 = 原来的一半。虽然绳子不均匀(有的地方快有的慢),但两头同时烧保证了总时间减半。
题目56:Defective Ball(12 球问题)⭐⭐⭐
来源: 绿皮书 2.2
12 个球,1 个有问题(不知道比正常的重还是轻)。天平称 3 次,找出问题球并判断轻重。
解法(绿皮书,决策树):
第 1 次: 4 vs 4(剩 4 个不上秤)
如果平衡: 问题球在剩下 4 个中。
- 第 2 次:3 个嫌疑球 vs 3 个正常球
- 平衡 → 第 4 个是问题球,第 3 次和正常球比确定轻重
- 不平衡 → 标记”疑似重”或”疑似轻”,第 3 次两两比较确定
如果不平衡: 标记一边为”疑似重”(4 个),另一边为”疑似轻”(4 个)。
- 第 2 次:混合称(从疑似重中取 2 个 + 疑似轻中取 1 个 vs 正常球 3 个),通过结果缩小范围
- 第 3 次:最终确定
一般化(绿皮书): 如果已知轻重,$n$ 次称量可以找出 $3^n$ 个球中的问题球。如果不知道轻重,$n$ 次可以找出 $(3^n - 3)/2$ 个球中的问题球。
题目57:Horse Race(赛马)⭐⭐⭐⭐
来源: 绿皮书 2.2
25 匹马,5 条跑道(无计时器),最少几场找最快的 3 匹?
答案: 7 场
解法(绿皮书):
前 5 场: 分成 5 组各 5 匹,每组跑一场。得到每组的排名。
设 5 组的冠军分别是 $a_1, b_1, c_1, d_1, e_1$(组内排名最好的)。
第 6 场: 5 个冠军比赛。假设结果是 $a_1 > b_1 > c_1 > d_1 > e_1$。
分析:
- $a_1$ 确定是全场第 1。
- $d_1, e_1$ 的组全部淘汰(他们的冠军都排不进前 3,组内其他马更不行)。
- $c_1$ 组只有 $c_1$ 自己可能是前 3($c_1$ 最多第 3,$c_2$ 就不行了)。
- $b_1$ 组有 $b_1, b_2$ 可能是前 3。
- $a_1$ 组有 $a_2, a_3$ 可能是前 3($a_1$ 已确定第 1)。
第 7 场: $a_2, a_3, b_1, b_2, c_1$ 这 5 匹比赛。前 2 名就是全场第 2 和第 3。
题目58:Coin Piles(硬币分堆)⭐⭐⭐
来源: 绿皮书 2.4
1000 枚硬币在桌上,980 反面朝上,20 正面朝上。你被蒙眼(看不到也摸不出正反)。把硬币分成两堆,使两堆正面数相同。
答案: 随便拿 20 枚出来成一堆,全部翻转。
解法(绿皮书):
假设你拿出的 20 枚里有 $k$ 枚正面朝上($0 \leq k \leq 20$)。
翻转前:
- 这堆有 $k$ 枚正面
- 另一堆有 $20 - k$ 枚正面
翻转后:
- 这堆的 $k$ 枚正面变反面,$20-k$ 枚反面变正面 → 正面数 = $20 - k$
- 另一堆还是 $20 - k$ 枚正面
$20 - k = 20 - k$ ✓ 两堆正面数相等!
不管 $k$ 是多少都成立。 这就是对称性的力量。
题目59:Last Ball(最后一个球)⭐⭐⭐
来源: 绿皮书 2.3
20 蓝球 + 14 红球。每次取 2 个:同色放回 1 蓝球,异色放回 1 红球。最后一个球什么颜色?
答案: 蓝色
解法(绿皮书,找不变量):
每次操作红球数量的变化:
- 取 2 蓝 → 放回 1 蓝 → 红球不变(变化 0)
- 取 2 红 → 放回 1 蓝 → 红球减 2(变化 -2)
- 取 1 蓝 1 红 → 放回 1 红 → 红球不变(变化 0)
不变量:红球数量的奇偶性不变。 每次变化 0 或 -2(偶数)。
初始红球 = 14(偶数)→ 最终红球也是偶数 → 最小的非负偶数 = 0 → 最后一个球是蓝色。
题目60:Chameleon Colors(变色龙)⭐⭐⭐
来源: 绿皮书 2.7
岛上 13 红、15 绿、17 蓝变色龙。两只不同色相遇,都变成第三种颜色。能否全变同色?
答案: 不能
解法(绿皮书,Modular Arithmetic 不变量):
每次相遇:一种颜色 -2,另两种各 +1。三种数量的两两之差变化:
初始差:$15 - 13 = 2$,$17 - 15 = 2$,$17 - 13 = 4$
每次操作后,任意两种数量的差变化 $\pm 3$ 或 $0$。所以 差 mod 3 不变。
初始差 mod 3:$2 \mod 3 = 2$
全同色需要差 = 0,即 $0 \mod 3 = 0 \neq 2$。所以不可能。
题目61:Mislabeled Bags(标签全错的袋子)⭐⭐⭐
来源: 绿皮书 2.4
三个袋子标着”苹果”、”橘子”、”混合”。所有标签都贴错了。 最少取几个水果确定所有袋子的真实内容?
答案: 1 个
解法(绿皮书):
从标着”混合”的袋子取 1 个水果。因为标签全错,这个袋子不是混合的,只能是纯苹果或纯橘子。
- 如果取出苹果 → 这袋是苹果。标着”橘子”的不能是橘子(标签全错),也不是苹果(已确定),所以是混合。剩下标着”苹果”的是橘子。
- 如果取出橘子 → 同理推导。
关键: “标签全错”这个信息非常强——排除了很多可能性。只需要 1 个数据点就能确定一切。
题目62:Light Switches(灯泡开关)⭐⭐
来源: 绿皮书 2.3
门外 4 个开关,屋内 1 个灯泡。只能进屋一次。怎么确定哪个开关控制灯泡?
答案:
- 开关 1 打开,等 10 分钟
- 关掉开关 1,打开开关 2
- 进屋:
- 灯亮 → 开关 2
- 灯灭但灯泡热 → 开关 1(刚才开了 10 分钟)
- 灯灭且灯泡冷 → 开关 3 或 4(需要额外信息区分)
关键(绿皮书): 利用灯泡的温度作为额外信息维度。不只是看”亮/灭”(1 bit),还看”热/冷”(多 1 bit),所以能区分更多情况。
题目63:Infinite Power Tower ⭐⭐
来源: 绿皮书 2.2
$x^{x^{x^{\cdots}}} = 2$,求 $x$。
答案: $x = \sqrt{2}$
解法(绿皮书):
设无穷塔 = $y$,则:
\[\underbrace{x^{x^{x^{\cdots}}}}_{n \text{ terms}} = y \quad \text{当 } n \to \infty\]加一层 $x$ 不影响结果(因为已经是无穷了):
\[x^{\underbrace{x^{x^{\cdots}}}_{n \text{ terms}}} = x^y = y\]所以 $x^y = y$。已知 $y = 2$:$x^2 = 2 \Rightarrow x = \sqrt{2}$。
题目64:Calendar Cubes(日历骰子)⭐⭐
来源: 绿皮书 2.3
设计两个骰子,能显示 01-31 的所有日期(每个日期用两个骰子并排显示)。
答案:
- 骰子 1:0, 1, 2, 3, 4, 5
- 骰子 2:0, 1, 2, 6, 7, 8
解法(绿皮书):
- 两个骰子都要有 0(01-09 需要)、1(11, 1x 需要)、2(22, 2x 需要)
- 剩余数字 3-9 有 7 个,但只有 6 个空位(每个骰子 3 个空位)
- 关键:6 翻转可以当 9 用! 所以实际只需要分配 3, 4, 5, 6, 7, 8 六个数字到 6 个空位
题目65:Poisonous Wine(毒酒)⭐⭐⭐
来源: 绿皮书 7.2 + Citadel 面经
1000 瓶酒有 1 瓶有毒。有 10 个试毒者。24 小时后毒发。怎么 1 轮找出毒酒?
答案: 二进制编码
$2^{10} = 1024 > 1000$。给每瓶酒编号 0-999(二进制表示,10 位)。
第 $i$ 个试毒者喝所有编号的第 $i$ 位是 1 的酒。
24 小时后,死亡的试毒者编号组成一个 10 位二进制数 = 毒酒的编号。
例子: 酒 #5 = 0000000101(二进制)。第 1 和第 3 个试毒者会喝到。如果恰好是这两人死了,毒酒就是 #5。
信息论角度: 10 个试毒者,每人两种状态(活/死),总共 $2^{10} = 1024$ 种结果,足够区分 1000 瓶酒。
题目66:Quant Salary(算平均工资)⭐⭐
来源: 绿皮书 2.3
8 个 quant 想知道他们的平均工资,但没人愿意透露自己的工资。怎么办?
答案:
- 第 1 个人想一个随机大数 $R$,把 $R +$ 自己的工资传给第 2 个人
- 第 2 个人加上自己的工资,传给第 3 个人
- ……
- 第 8 个人加完后把总数传回第 1 个人
- 第 1 个人减去 $R$,除以 8 = 平均工资
没有任何人知道其他人的工资,但每个人都知道了平均工资。
题目67:Door to Offer(两扇门两个守卫)⭐⭐
来源: 绿皮书 2.3
两扇门(一扇通 offer,一扇通出口)。两个守卫(一个永远说真话,一个永远说假话)。你可以问一个守卫一个 yes/no 问题。怎么找到 offer 的门?
答案: 问任一个守卫:”如果我问另一个守卫哪扇门通 offer,他会说什么?” 然后选相反的门。
为什么?
- 如果你问的是真话守卫:他会如实告诉你假话守卫的回答(错误答案)→ 你选反的 ✓
- 如果你问的是假话守卫:他会谎报真话守卫的回答(把正确答案变成错误)→ 你选反的 ✓
两种情况你都选反的,都能找到正确的门。
题目68:Message Delivery(安全传信)⭐⭐
来源: 绿皮书 2.3
通过不可信的信使传递文件。你和收件人各有自己的锁和钥匙(但不能共享钥匙)。怎么安全传递?
答案:双锁协议
- 你把文件放进箱子,用你的锁锁上,寄出
- 收件人收到后,加上他的锁(现在箱子有两把锁),寄回
- 你收到后,用你的钥匙开你的锁(只剩收件人的锁),寄出
- 收件人用他的钥匙开锁,拿到文件
全程没有交换钥匙,信使打不开箱子。
Enjoy Reading This Article?
Here are some more articles you might like to read next: