目录
正在加载目录...

Anthropic OA 最新题复盘|Inference Engine + Extra Trees Debug

刚做完 Anthropic 最新 OA,感觉很有意思,两道题都是工程向的, Anthropic OA 不考纯算法套路,而是考你对 AI 系统本身的理解和 debug 能力。

题做的过程中几次卡壳,最后都是通过理解题意、分析边界情况才扭转的。把整个过程和坑都写下来,给后面的同学参考。

Anthropic OA 最新题复盘|Inference Engine + Extra Trees Debug

整体情况

  • 平台:在线评测
  • 题量:2 道
  • 风格:偏工程 + ML 落地,不考纯算法套路
  • 关键:正确性、边界处理、代码可读性

第一题:Inference Engine(Request Scheduler)

Anthropic OA 最新题复盘|Inference Engine + Extra Trees Debug

题意

简单说,这题让你写一个「GPU 请求调度器」。

有一堆用户请求进来,每个请求都要先处理 prompt(叫做 Prefill,用来建立 KV Cache),然后再一个 token 一个 token 地生成内容(叫做 Decode)。

GPU 每个时间片能处理的 token 数量是有限的(有 batch capacity 限制)。你需要决定:在当前这一步,该让哪些请求上 GPU 跑。

核心就三点:

  • Prefill 和 Decode 是两个完全不同的阶段,不能搞混
  • 请求做完了要及时清掉,不然后面会出问题
  • 不能超过 GPU 的容量上限

注意:这题不需要你实现一个完整的 vLLM,重点是调度逻辑要对,状态转换不能乱。

解题思路

这题本质是 request scheduler 设计。代码里最容易挂的地方:

  1. 状态转换不能乱 每个 request 必须有清晰状态(Waiting / Prefilling / Decoding / Finished),Prefill 做完才能进 Decode。
  2. Finished request 要及时移除 做完的请求如果不及时清掉,后面的 hidden test 很容易出错。
  3. 严格遵守 batch capacity 不能无限往 batch 里塞 request,超出容量的必须排队到下一 timestep。
  4. 不要过度模拟真实 LLM engine OA 重点是 scheduler 的 correctness,保持逻辑清晰、状态机干净就够了。

建议实现时用一个清晰的状态机 + 队列管理当前活跃请求,每一步先处理能完成的 prefill/decode,再更新状态并清理 finished 请求。

第二题:Debug Extremely Randomized Trees

Anthropic OA 最新题复盘|Inference Engine + Extra Trees Debug

题意

这题给你一份「有 bug 的 Extra Trees(极端随机树)」代码,你的任务是把 bug 修掉,让所有测试用例都通过。

它不是让你从零实现一棵树,而是读懂别人写的代码,找出哪里会挂。

最常见的坑就三类:

  • 空数据、只有一个样本、没法再切分的节点,这些边界情况没处理好,直接 crash
  • NumPy 的 shape 问题,(10,) 和 (10,1) 看起来差不多,实际完全不一样,很多隐藏 bug 都在这
  • Extra Trees 是随机选划分点的,有可能切出空的子节点,如果不处理就会出异常

解题思路

正确的打开方式是:先看 test,再定位代码。

  1. Edge Case 空数据、单样本、无法 split 的 node,这些最容易直接 crash。需要在 split 前判断样本数、特征是否还能继续划分。
  2. NumPy Shape (10,) 和 (10, 1) 看起来差不多,但实际完全不同。注意 squeeze / reshape,保持维度一致。
  3. Random Split 导致的 Empty Child Extra Trees 随机选 threshold,有可能出现空的子节点。必须处理这种异常情况,否则递归会出问题。

建议流程:先跑所有 test,记录失败的 case → 从最小的 edge case 开始修 → 每修一处就重新跑 test → 保持改动最小化。

FAQ

Q:第一题必须用某个特定语言吗?

没有,支持 Python、C++、Java 等主流语言。我用的 Python,状态机逻辑比较清晰,但 C++ 如果对指针和内存管理熟的话也能写得很快。

Q:第一题有没有需要实现的 LLM model?

不需要。重点就是 scheduler 逻辑,不用实现真实的 forward pass 或 token generation,用简单的模拟就行。很多同学在这里浪费时间,以为要实现一个完整的推理引擎,其实完全没必要。

Q:第二题如果找不到所有 bug 怎么办?

不用找齐,一般找到大头的几个就能过掉大部分测试。从简单的 edge case 开始,一个一个修,能通过多少就通过多少。完整度高于完美度。

Q:90 分钟够吗?

有点紧,但如果不纠缠细节的话够的。建议第一题花 40-50 分钟,第二题花 40-45 分钟,留 5-10 分钟做最后的 sanity check。

Q:第二题的 bug 数量大概有多少?

通常 4-6 个,大小不一样。有的是一行代码的修复,有的需要重构一个函数。题目设计得比较梯度化,难的 bug 通常在深层递归或者复杂的数据转换里。

Q:可以用 AI 工具吗?

一般 OA 不让用,要检查的就是你自己的代码能力。有些公司会明确允许或不允许,看邀请邮件的说明。

Q:OA 过了之后是什么流程?

一般一周内会安排 VO,Anthropic 的 VO 通常是 2-3 轮,一轮深度 coding,一轮 research / system design,一轮 behavioral。OA 过了已经是很大一步了,VO 的压力相对小一些。

最后

Anthropic 的 OA 是我见过最”接近真实工作”的题。不考花哨的算法,不考什么脑经急转弯,就是考你能不能理解复杂系统、快速定位问题、写出可靠的代码。

如果平时有关注 vLLM、TensorRT 这类 inference 框架的实现细节,或者对树模型的训练细节有过深入研究,做这两道题会轻松很多。

最近很多 AI 公司(Anthropic、xAI、Google DeepMind 等)的 OA 题目有明显趋势——越来越偏工程、越来越贴近真实系统。提前了解 LLM Inference、ML 系统设计、NumPy 数据操作这些方向,比盲目刷题管用。

我们最近带了不少同学过 Anthropic 这类 OA,重点就是帮你把状态机逻辑和边界坑点提前踩一遍。Interview Show 对这类 AI 公司题型比较熟,有需要可以直接问。

END