Vibe Engines 是免费的交互式 AI 工程与系统设计课程——可直接在浏览器中运行。选择学习路径 →

FDE 面试准备/ Anthropic

Anthropic 应用 AI 面试

Anthropic 的前沿部署工作隶属于应用 AI 部门,其职位描述将 MCP 服务器、子 Agent 和 Agent 技能列为交付成果。Anthropic 并未公开其面试流程,因此以下阶段信息来自候选人的反馈。它公开的是在申请过程中希望你如何使用 AI,以及价值观对话假定你已阅读过的安全文档。

这个职位在这里是什么

Anthropic 的 前沿部署工程师 招聘描述了与战略客户深度合作,在 Claude 上构建应用程序,交付成果明确包括用于生产工作流的 MCP 服务器、子 Agent 和 Agent 技能,差旅比例为 25–50%,并要求具备生产级 LLM 和 Agent 经验。first-party61 Staff 级别的变体职位则负责跨客户账户的架构和咨询工作。

还有一个联邦政府方向的变体职位,涉及气隙隔离和 IL 级别的部署要求——这是一个真正不同的技术任务,需要在无互联网接入的情况下交付模型权重。first-party29

申请前请仔细阅读交付成果清单:这是前沿实验室中最具 Agent 特征 的 FDE 职位。能够流利地谈论工具 schema、子 Agent 分解、上下文管理以及 Agent 失效的场景,是直接相关的核心话题,而非加分项。Anthropic 也参与了更广泛的部署资本浪潮,包括 2026 年 7 月宣布的与 Blackstone 合作的 15 亿美元 Ode 风险投资项目。6

据报道的面试流程

来自候选人反馈和备考指南,而非官方公布的流程。各方说法存在出入;请将阶段列表视为大致情况,并与你的招聘人员核实。

招聘人员初筛

动机、应用 AI 经验,以及为什么特别选择 Anthropic。一份备考指南指出,即使在这一轮,候选人也会被追问安全推理相关的问题。aggregated23

限时编程测评

Anthropic 确认技术岗位会使用 Colab 和 CodeSignal 等实时编程工具,并表示如果你熟悉基本语法和标准库,可以随时查阅资料。first-party67 关于测评形式的反馈不一。一位解决方案架构师 / FDE 申请者在 2024 年的帖子中描述为 60 分钟内完成两道 LeetCode 风格的题目;anonymous first-hand22 一家 2026 年的备考机构则描述为约 90 分钟内完成一道分为四个等级的题目,每级需通过上一级才能解锁。low confidence68 请为两种形式都做好准备:快速的基础题,以及能经受住新增需求考验的设计题。

技术 / 应用 AI 对话

客户文档检索、Agent 设计、工具 schema、护栏、评测,以及你在生产环境中见过的失效模式。aggregated23

准备:准备一个关于某个 Agent 以有趣方式失败的故事,以及你做了什么改变。泛泛的热情在这里几乎得零分。

客户场景

一份指南描述了一场模拟的探索性电话,由面试官扮演持怀疑态度的买家,并称这是候选人最容易低估的环节。aggregated23 能拉开差距的回答是协商一个评测:先衡量专家之间的一致性,然后设定一个可辩护的目标。方法 →

价值观与安全对话

同一份指南在现场面试中列出了价值观面试,并表示候选人应从概念层面了解负责任扩展政策(Responsible Scaling Policy)和宪法 AI(Constitutional AI)。aggregated23 没有我能核实的来源统计有多少候选人挂在这一环节,所以把“失败率最高的环节”这类说法当作传闻。第 03 和 05 节对此有正确的介绍。

候选人使用 AI:Anthropic 的说法

与这个职位家族不同寻常的是,政策是公开的。在准备之前先读一遍,因为违反政策的代价比任何错误答案都大。

Anthropic 的指南(最后更新于 2025 年 7 月)按阶段对流程进行了分类:62

阶段Anthropic 的指南
简历与申请自己写初稿,然后用 Claude 来润色。不允许编造你没有的经历。
带回家的测评除非另有说明,否则不要使用 Claude 完成。Anthropic 表示,当允许使用 AI 时会明确说明,例如“你可以在此编程挑战中使用 Claude”。
面试准备鼓励:研究 Anthropic、练习回答、为他们准备问题。
现场面试除非他们另有说明,否则不得使用 AI 辅助。

它还要求候选人以透明回报,并表示 Anthropic 本身在招聘中使用 Claude 来撰写职位描述、面试问题、转录和搜寻候选人,但不让 Claude 做出招聘决定。62 与把 AI 融入面试的 Distyl 和 Sierra 形成的对比是很有用的教训:规则因公司和阶段而异,所以要主动询问。 如果招聘人员的邮件没有说明测评允许使用 AI,就假定不允许。

一个约束递增的问题,附解答

一道按所报道格式风格设计的练习题,不是 Anthropic 的真题:每一级都会推翻上一级的设计。

级别新要求它破坏了什么
1一个最多容纳 N 个条目的缓存,淘汰最近最少使用的条目。一次读取算作一次使用。目前还没有。按插入顺序排列的字典既是查找表也是最近使用列表。
2条目在 TTL 后过期。时间由外部传入,因此测试是确定性的。过期的条目仍占用一个槽位,可能把活跃条目挤出去。先处理过期,再淘汰。
3每个条目都有大小,预算是总大小。超过预算的条目会被拒绝。一次插入可能淘汰多个条目。淘汰会变成一个循环,且超大条目的情况不能白白清空缓存。
import heapq
from collections import OrderedDict
from itertools import count

class Cache:
    def __init__(self, budget):
        self.budget = budget        # level 1: max entries; level 3: max total size
        self.used = 0
        self.d = OrderedDict()      # key -> (value, size, expires_at), least recently used first
        self.expiry = []            # level 2: heap of (expires_at, seq, key); stale rows are skipped
        self.seq = count()          # tie-breaker, so the heap never compares keys

    def _drop(self, key):
        _, size, _ = self.d.pop(key)
        self.used -= size

    def _expire(self, now):         # level 2: dead entries go before anything else is decided
        while self.expiry and self.expiry[0][0] <= now:
            exp, _, key = heapq.heappop(self.expiry)
            if key in self.d and self.d[key][2] == exp:   # skip rows a rewrite made stale
                self._drop(key)

    def get(self, key, now):
        self._expire(now)
        if key not in self.d:
            return None
        self.d.move_to_end(key)     # level 1: a read is a use
        return self.d[key][0]

    def put(self, key, value, now, ttl=None, size=1):
        self._expire(now)
        if size > self.budget:      # level 3: it can never fit, so evicting everything is wrong
            return False
        if key in self.d:
            self._drop(key)         # a rewrite replaces; it is not an insert
        while self.used + size > self.budget:
            self._drop(next(iter(self.d)))                # level 1: evict least recently used
        expires_at = None if ttl is None else now + ttl
        self.d[key] = (value, size, expires_at)
        self.used += size
        if expires_at is not None:
            heapq.heappush(self.expiry, (expires_at, next(self.seq), key))
        return True

这个设计之所以能经受住这三个问题,是因为早期做出的三个决定:时间是参数而非全局变量,重写是替换而非插入,淘汰从一开始就是针对字节预算的循环。成本:

get

以及非淘汰的

put

操作是 O(1) 均摊的;每次过期操作花费一次 O(log n),且堆会跳过因重写而失效的行。大声说出你会为多线程做什么改动(一把锁,因为读操作会改变最近使用顺序),以及为扩展性做什么改动(按键分片)。

面向价值观对话的安全素养

这不是文化契合度闲聊,也不是走过场。把它当作考察判断力的技术轮次,去阅读原始文档而不是摘要。

他们不是要你背诵政策,而是要考察你是否真正思考过部署风险,所以你的回答应能准确引用真实文档。有四份文档值得各花一小时研读。

负责任扩展政策(Responsible Scaling Policy)

一个由“如果-那么”承诺组成的自愿性框架:如果模型跨越某个能力阈值,就适用更严格的安全保障措施,这些措施按 AI 安全等级(AI Safety Levels)分组。Anthropic 表示已于 2025 年 5 月对相关模型启用了 ASL-3 安全保障。3.0 版(2026 年 2 月 24 日)是一次全面重写,将 Anthropic 单独承诺的内容与其向行业建议的内容区分开来,新增了公开发布的前沿安全路线图(Frontier Safety Roadmap)和定期风险报告,并承认能力阈值在实践中被证明是模糊的。当前版本为 3.4(2026 年 7 月 8 日)。first-party6364

宪法式 AI(Constitutional AI)

这篇 2022 年的论文训练一个无害的助手,不使用任何关于有害输出的人工标注,只提供一份原则清单:先经过自我批评与修订的监督阶段,然后进行基于 AI 反馈的强化学习(RLAIF),最终得到一个能解释其反对理由而非回避问题的助手。65 参见论文详解。

Claude 的宪法(2026 年 1 月)

这份更新的文档用解释性说明取代了独立原则清单,理由是当模型理解“为什么”时泛化能力更好。它要求 Claude 做到广泛安全、广泛合乎伦理、遵守 Anthropic 的准则并真正有帮助,通常按此顺序排定优先级。first-party66

将其与工作联系起来

针对每份文档,准备一句话说明它对客户部署意味着什么改变:为什么存在护栏层、你为什么会拒绝某个用例、你会如何向利益相关者解释一次拒绝。

可能出现的问题形式

  • “客户想用这个系统做一件你认为很糟糕的事情。你会怎么做?”
  • “讲一次你犯了错且后果很严重的经历。”
  • “什么情况会让你拒绝发布某个东西?”
  • “描述一个你指出过的、让人不便的风险。”

通过与失败的区别是什么

  • 具体性。 一个有真实利害关系和结果的真实情境,而不是一条原则。
  • 一致性。 价值观问题的回答必须与你的技术回答相符。
  • 一次真实的观念转变。 一个从未修正过强烈观点的人,会显得未经考验。
  • 承认代价。 一次延期、一场艰难的谈话、一笔丢失的交易。

写下三个你因做正确的事而付出代价的情境,以及一个你做错了、并且能准确说出原因的情境。记住情境本身,而不是措辞——背出来的答案听起来就是背出来的。

针对这个面试环节需要特别过度准备的内容

领域为什么在这里重要练习
Agent 与工具设计MCP 服务器、子 Agent 和 Agent 技能是职位描述中明确列出的交付物。61Agent 模式 · MCP 演练场
评测企业部署的验收测试,也是在客户场景中最有力的可用答案。面向客户工作的评测 · 评测构建器
约束递增式编码已知的考核形式奖励能吸收下一个需求的设计。LRU 演进
受监管环境下的部署联邦政府版本涉及物理隔离交付和 IL 等级。29部署目标
安全文档准备指南要求对 RSP 和 Constitutional AI 有概念层面的熟悉。第 05 节。

在这个面试环节深入考察的地方做到熟练

Anthropic 的 FDE 职位是一线实验室中最侧重 Agent 的。这些就是练习。

全貌:put() 按顺序做了什么

缓存的复杂度与权衡

n

是活跃条目数;

h

是堆中的行数,其中包括重写和淘汰操作留下的过期行。

情形时间空间原因
getO(1),加上任何到期的过期处理无在 OrderedDict 上执行 move_to_end 是常数时间。
put,无 TTL,容量足够O(1)一个条目一次字典插入和一次大小更新。
带 TTL 的 putO(log h)一行堆记录堆的推入是 O(log n),页面将这一成本一次性计入每次过期。
淘汰 k 个条目的 putO(k),均摊 O(1)释放 k 个条目每个条目只被插入一次,因此最多只能被淘汰一次。
_expire 弹出 m 行O(m log h)释放最多 m 个条目每行只被弹出一次,因此成本计入推入它的那次 put。
总体内存O(n + 过期行数)以 1 小时 TTL 每秒重写一个热点键 1,000 次,堆中最多会积压 3,600,000 行过期记录。当过期行数超过活跃条目数时重建。

其他方案更差,而且差得值得一提。只在条目被读取时才过期是 O(1),但死条目会一直占着槽位,这正是第 2 级的 bug。每次调用都扫描所有条目检查过期是正确的,但每次调用是 O(n)。惰性删除堆是中间路线,其代价就是最后一行中的过期行内存。

升级缓存任务中的常见错误

  • 在类内部读取时钟在 get 中调用 time.time() 会让每个 TTL 测试都依赖于时间,而第 2 级是由测试来评分的。从第 1 级开始就把 now 作为参数传入,甚至在任何条目过期之前就要这样做。
  • 在过期之前先淘汰如果淘汰循环先运行,它可能会为了腾出空间而扔掉一个仍然有效的条目,而一个已过期的条目还占着位置。在 get 和 put 的开头都调用 _expire(now)。
  • 把重写当作插入写入一个已存在的键而不先删除它,会把它的 size 重复计入 used。缓存随后会淘汰本不需要淘汰的条目,而且这种偏差会随着每次重写不断累积。
  • 在超限检查之前先淘汰比整个预算还大的条目永远放不下。先做这个检查。否则循环会试图腾出空间而清空整个缓存,最后还是拒绝该条目。
  • 急切地删除堆中的过期行在堆中查找并删除某个键的旧行是 O(h) 的操作。留着它,当它被弹出时通过检查存储的过期时间是否仍然匹配来跳过它。这正是 self.d[key][2] == exp 所做的事。

自我检测

预算为 10。put a(size 4),put b(size 4),get a,然后 put c(size 5)。缓存里有什么,used 是多少?

a 和 c,used = 9。读取使 a 成为最近使用的,所以 b 是最久未使用的。8 + 5 = 13 超过 10,所以 b 被淘汰,剩下 4 + 5 = 9。一次淘汰就够了,循环随之停止。

在 t=0 时你 put x,ttl 为 5。在 t=3 时你再次 put x,ttl 为 100。在 t=6 时 get(x) 返回什么?

新值。在 t=6 时旧的堆行(过期时间为 5)被弹出,但存储的条目现在过期时间为 103,所以检查失败,该行被跳过。过期时间为 103 的那行仍留在堆中。

第一题中的缓存持有 a 和 c。你 put 一个 size 为 11 的 k。会发生什么?

put

返回 False,一切不变:a 和 c 保留,used 仍为 9。超限检查在淘汰循环之前运行。如果它在之后运行,循环会淘汰两个条目,然后仍然失败。

有人要求你把它做成线程安全的。使用读写锁,get 获取读锁,这样够吗?

不够。

get

写操作:它会把键移到最近使用顺序的末尾,并可能使条目过期。两个持有共享锁的读取者会同时修改 OrderedDict。按照该页面建议使用一把独占锁,如果这把锁成为瓶颈,再按键分片。

快问快答

Anthropic 应用 AI 工程师的面试流程是怎样的?

Anthropic 不公布具体结构。候选人的反馈和备考指南描述了大致五个阶段:招聘人员初筛、限时编程测评、涵盖检索、AI Agent、工具 schema 和评测的应用 AI 技术面谈、客户场景面谈,以及价值观与安全面谈。Anthropic 确认技术岗位会使用 Colab 和 CodeSignal 等实时编程工具。请把这份阶段列表当作大致参考。

在 Anthropic 的面试中可以使用 AI 吗?

Anthropic 公布的指引要求:自己撰写申请草稿,然后再用 Claude 进行润色;除非另有说明,不得使用 Claude 完成带回家的评估题;在实时面试中不得使用任何 AI 辅助,除非 Anthropic 明确允许。它鼓励使用 Claude 来调研公司并练习回答。如果评估邮件未明确允许使用 AI,请默认不允许。

关于 Anthropic 价值观面试环节的安全问题,我应该了解什么?

各备考指南都要求对负责任扩展政策(Responsible Scaling Policy)、宪法式 AI(Constitutional AI),以及对齐工作与能力工作之间的区别有概念性的了解。请阅读一手文档:RSP 及其第 3 版发布公告、Constitutional AI 论文,以及 Claude 2026 年 1 月的宪法。然后将每项内容与一个客户部署决策联系起来,例如你会在什么情况下拒绝某个用例。

Anthropic 会向前沿部署工程师提出哪些编程问题?

各方说法不一。一位 2024 年的申请者描述了 60 分钟内两道 LeetCode 风格的题目;一家 2026 年的备考机构则描述了一道在约 90 分钟内逐步加深到四个层级的问题。Anthropic 尚未确认其中任何一种。两者都考察基础功底,以及能够吸纳下一个需求的设计能力,因此请练习一个逐步增加过期机制和容量限制的缓存或内存存储。

Anthropic 对前沿部署工程师有什么期望?

该职位描述要求嵌入战略客户,基于 Claude 构建生产级应用,交付物包括 MCP 服务器、子 Agent 和 Agent 技能,需要频繁出差,并具备 LLM 和 Agent 的生产环境经验。这使其成为前沿实验室中最具 Agent 形态的 FDE 职位,因此熟练掌握工具 schema、子 Agent 分解和 Agent 失败模式正是面试的核心话题。

来源

本页上的每个数字都可追溯至以下来源之一。凡属自报或众包而非第一方的数据,均已在行内标注。

本页引用的来源

下一篇:Sierra Agent 工程师面试 → “如何被聘为 FDE”阶梯上的下一篇 · 第 8 级(共 9 级)

探索该主题

将该主题的所有内容——手册、系统设计、挑战和工具——汇集一处,一并查看。

更多手册