A 家和别家不一样的一点:备考信息不用到处扒小道消息,Anthropic 官方 Careers 页 自己就写了不少。Anthropic OA CodeSignal 考的是 CodeSignal Industry Coding Assessment 风格的多层级状态化系统模拟,和 Stripe 的 OA 极像。我做的这套题是 Cloud Storage System,四个 level 层层解锁。
做完的感受是:题不算难,但对代码组织能力和读题细致度的要求,比刷 LC 高一个档次。这篇把 Anthropic OA 每层的题目和解法完整写下来,CodeSignal 这类多级题没接触过的朋友可以直接对着练。

Anthropic OA 形式
平台是在线 IDE 环境,题目是一道多 level 的 design 题,标注 Medium。任务分若干 level,解出当前 level 才解锁下一个,且始终可以访问当前和之前所有 level 的数据。不要求最优实现,能通过单元测试就行,终端里可以跑单个测试用例调试。
题目要求实现一个纯内存的云存储系统,把文件映射到元信息(名字、大小等),不需要碰真实文件系统,题目保证查询不会造成文件和目录名的冲突。

Level 1:文件的增删查
要求支持添加新文件、检索文件、删除文件。
表面上一个哈希表就能过,但这层的真正任务是搭好架子。我的做法是把文件信息单独封装成一个结构,存储逻辑抽成一个类,所有操作走统一的类方法,而不是散装函数配裸字典。文件结构里我额外留了一个归属用户的字段,当时用不上,但直觉告诉我后面的 level 一定会引入用户概念——事实证明 L3 正好用上,省了一次重构。
这层的坑在返回值:重复添加同名文件、删除或查询不存在的文件,各自返回什么(布尔值、具体值还是空),题面写得很具体,必须逐字对照,测试卡得很死。
Level 2:最大文件排行
要求支持展示最大的文件,按大小取前 N 个。
题目明说不要求最优实现,所以完全不用上堆,每次查询时现排一遍就行,把省下来的时间花在正确性上。排序的关键在次级规则:大小并列时按什么顺序输出(通常是文件名字典序),题面会交代,读漏这句必挂一片测试。
另外两个细节:N 超过文件总数时应该返回全部而不是报错;输出格式是只返回名字还是”名字加大小”的拼接串,逐字对照题面确认。
Level 3:用户容量与合并
要求支持添加有容量上限的用户,以及合并两个用户。
这层是复杂度跃升点,引入了归属和配额两个概念。我的处理是用户单独一张表,记录每个人的容量上限和已用量;之前所有的文件操作全部补上容量校验——添加文件前检查归属用户的剩余空间,删除文件时把空间还回去。L1 留的归属字段在这里无缝衔接。
合并用户是这层的重头戏,边界条件密集:被合并的用户不存在怎么办、合并后总用量超过目标用户的容量上限怎么处理、被合并方的文件归属要不要批量改写、合并完成后被合并的用户是注销还是保留——每一条题面都有明确规定,每一条都有对应测试。我的建议是把 merge 的行为清单先列在草稿上,逐条确认后再动手。
Level 4:备份与恢复
要求支持备份和恢复用户的文件。
这层考的是状态快照的思维。备份的本质是把某个用户当前的文件状态做一份深拷贝存起来,恢复则是用快照覆盖现状。听起来简单,坑全在时序上:备份之后用户又添加或删除了文件,restore 应该回到备份那一刻的状态,中间的变更全部丢弃;恢复时如果某些文件名已经被其他操作占用,按题面规则处理冲突;一个用户多次备份,恢复的是最近一次还是可以指定版本,题面怎么说就怎么做。
实现上要注意拷贝的深度——如果快照只是引用了原来的文件对象而不是复制,备份后的修改会污染快照,这个 bug 测试一抓一个准。
通关心得
四层做下来,这道题真正考的四样东西:一是代码组织和增量迭代能力,L1 写得随意,L3、L4 就是灾难现场;二是数据结构选型的务实感,哈希表打底、需要就现排,不炫技;三是状态管理和边界条件,每个操作先想清楚”目标不存在、重复操作、状态非法”三种异常路径再写主逻辑;四是读题的细致度,题面每句话都是需求,每个 level 进场先逐句读两遍、列出操作清单再动手。
FAQ
Q:Anthropic OA 用什么语言?
主流语言都支持,Python 最常见。官方允许查资料,但基础语法和标准库要熟,时间才是这套题真正的约束。
Q:四个 level 必须全过才算通过吗?
不一定。评判看的是通过的测试总数和进度,普遍的经验是稳扎稳打做到 L3 全绿好过 L4 写一半但 L2 有测试挂掉。先保正确再推进度。
Q:没做过这类多级模拟题,从哪开始练?
CodeSignal 的 Industry Coding Framework 练习题是同款框架,Stripe 的面经题也高度同源。练三到五套,重点练”L1 就留扩展性”的写法,套路就有了。
Q:OA 过了之后是什么流程?
后续是技术电面加 VO,官方说明面试全程走 Google Meet,live coding 用 Colab 或 CodeSignal,风格延续 OA 的务实路线——工程实现和系统思维为主,不搞算法竞赛题。
Q:可以重复申请吗?
可以,A 家对再申请没有严格的公开冷却期限制,但建议间隔期内有实质提升再投。另外注意甄别招聘诈骗:官方 recruiter 只会用 anthropic.com 后缀的邮箱联系你,入职前索要任何费用或银行信息的都是假的。
备考建议
Anthropic 的 OA 不兴算法题,喜爱 OOD,准备方向要换轨。找 Stripe、CodeSignal Industry Coding Assessment 风格的多 level 状态模拟题练手,套路相通;练”可扩展的初版”,写第一层时就假设后面会加用户、加权限、加持久化;养成边界条件清单化的习惯;平时用单元测试驱动的方式写小项目,和 OA 的评判方式完全一致。总之它没那么难,勤加练习可达。
备考路上我参考了 InterviewShow 整理的 OA 题库,Anthropic 和 Stripe 这类多层级模拟题有专门的分类和练习集,从 OA 刷题规划到后续面试的模拟训练都有对应服务,有需要的可以去看看。