# Anthropic FDE 面试：把岗位描述当成每一轮的复习大纲

> 把岗位描述当作教学大纲来读。每一条要求都说明了该练哪项技能，也暗示了哪一轮最可能考到它。

原文: https://fdetimes.net/zh/guides/anthropic-fde-interview-prep-guide/

打开 Anthropic 在伦敦招聘前线部署工程师（FDE）的岗位描述，有一行很容易一眼扫过：25%–50% 的时间要出差到客户那里，与客户一起直接构建。乍看这只是出差安排，其实它说明这个岗位要的是能当着客户的面把东西做出来的人，而不只是擅长算法题的人。

所以，最有效的准备方法是把岗位描述本身当作教学大纲，把每条要求对应到最可能考它的那一轮。

## 岗位描述是教学大纲，不是广告

根据岗位描述，这个岗位隶属 Applied AI 团队。FDE 在客户自己的系统里用 Claude 构建生产级应用，交付物很具体：MCP 服务器、子智能体（sub-agent）和智能体技能（agent skill）。这是一份你必须能亲手做出来的清单，而不只是叫得出名字。

任职要求同样直白。候选人需要 4 年以上面向客户的技术岗位经验，例如 FDE。

还需要 LLM 的生产环境经验，包括高级提示工程和智能体开发；需要扎实的 Python；岗位描述还希望候选人高度自驱，能在规模大、层级多、情况模糊的组织里找到方向。

每条要求都能对应到最可能涉及它的那一轮。所以第一件事不是打开刷题网站，而是先把这张对应表做出来。

## 四轮面试，每轮考一项能力

Exponent/Aced 的一份面试准备指南列出了这个岗位的一个示例流程。第一轮是 30 分钟的招聘方电话，聊你的背景、动机、推荐人以及适合你的职级。

接下来是技术面，围绕一个真实场景展开：用 MCP 工具部署 Claude，并在上下文变得很长时保持系统稳定。

据同一份指南，编码轮是在类似 CodeSignal 的平台上完成的分步实操题，每一步追加一个新需求。

终面包含两部分：方案设计，即为客户设计 Claude 系统的架构；以及关于行为和公司价值观的问题。

这只是示例流程，并非固定安排，具体轮次顺序请向你的招聘方确认。

| 岗位描述中的要求 | 最可能考察的轮次 | 准备方法 |
|---|---|---|
| 交付 MCP 服务器、子智能体、智能体技能 | 技术面 | 搭一个把 Claude 接入真实数据源的小型 MCP 服务器 |
| 高级提示工程、智能体开发 | 技术面、设计轮 | 准备一组测试用例，用来对比两个版本的提示词 |
| 扎实的 Python | 增量编码轮 | 练习写小而易扩展的函数，每一步都配测试 |
| 在情况不明时找到方向 | 设计轮、行为面试 | 练习在画架构之前先提澄清问题 |
| 4 年以上与客户合作的经验 | 招聘方电话、行为面试 | 准备三个故事，每个都包含客户、冲突和结果 |

## 示例：每一步追加一个需求的编码题

设想下面这道题。这是练习题，不是真实面试题。第一步：输入一组 JSON 格式的支持工单，按客户分组。第二步：去掉内容重复的工单。第三步：发送给模型之前做裁剪，让每个客户的总长度不超过某个阈值。

陷阱在于把第一步写成一个长函数。到了第三步，你只能在计时中把它拆开重写。更稳妥的做法是让每个需求都是一个纯函数，这样新需求只需在链条上多加一环：

```python
from dataclasses import dataclass
from collections import defaultdict

@dataclass(frozen=True)
class Ticket:
    id: str
    customer: str
    created_at: str  # ISO 8601，例如 "2026-03-01T09:30:00Z"
    text: str

def load(rows: list[dict]) -> list[Ticket]:
    return [Ticket(r["id"], r["customer"], r["created_at"], r["text"].strip())
            for r in rows]

def dedupe(tickets: list[Ticket]) -> list[Ticket]:          # 第 2 步
    seen, out = set(), []
    for t in tickets:
        key = (t.customer, t.text.lower())
        if key not in seen:
            seen.add(key)
            out.append(t)
    return out

def group(tickets: list[Ticket]) -> dict[str, list[Ticket]]:  # 第 1 步
    groups = defaultdict(list)
    for t in tickets:
        groups[t.customer].append(t)
    return dict(groups)

def budget(groups, max_chars: int):                            # 第 3 步
    trimmed = {}
    for customer, items in groups.items():
        total, kept = 0, []
        # 最新的优先：同一时区的 ISO 8601 字符串按字典序排序即为时间顺序
        for t in sorted(items, key=lambda t: t.created_at, reverse=True):
            if total + len(t.text) > max_chars:
                break
            kept.append(t)
            total += len(t.text)
        trimmed[customer] = kept
    return trimmed

def pipeline(rows, max_chars=4000):
    return budget(group(dedupe(load(rows))), max_chars)
```

第三步按工单创建时间排序，而不是按 id，因为 id 大不一定代表工单更新。如果数据里没有时间戳字段，先把你的假设说清楚，再退而使用 id。

真正得分的是你边写边说的内容，而不是代码本身。把取舍讲明白：你保留最新的工单，是因为假设它们更相关；如果这个假设不成立，你会去跟客户确认。

这个上下文预算问题，也很接近技术面核心的长上下文稳定性问题。

## 设计轮：先提问，后画图

岗位描述强调在情况不明时找到方向的能力，因此设计题很可能故意省略大量细节。要养成先问再画的习惯。

假设面试官说：“一家保险公司希望员工能向 Claude 询问保单条款。”不要马上画一张带向量数据库的架构图，可以先问几个问题。

可以从这三个问题开始：“谁会使用它，是呼叫中心员工还是理赔部门？保单存在哪个系统里，有没有访问控制？如果 Claude 答错了，后果是来电者不满，还是赔付出错？”

问完这三个问题之后，再提出架构：一个遵循现有访问控制的 MCP 服务器，一个专门负责引用保单条款的子智能体，以及一组基于员工真实提问构建的测试用例。

**要点:** 画架构之前，先问清楚谁会用这个系统，以及它答错时会发生什么。

## 行为面和深挖轮：真实的故事胜过漂亮的故事

Educative 关于 Anthropic 工程岗位招聘流程的一份通用指南指出，技术深挖环节青睐真正理解自己所建系统的人。在行为面试中，面试官往往更看重诚实、自我认知和反思，而不是包装精美的成功故事。

具体来说，至少准备一个自己的部署失败的故事：讲清技术原因、你当时的决定，以及之后做了哪些改变。如果被追问两层之后你仍然讲得清楚，这一个故事比十个只停留在表面的项目更有分量。

这也是修改简历的好时机。不要写含糊的“有 LLM 相关经验”，而要写清你搭建了一个 MCP 服务器，把模型接入了哪个系统，为谁运行，以及如何衡量它的质量。

这类具体的描述并不能替代岗位要求的 4 年以上经验，只是让读简历的人一眼看出你这几年做了什么。

## Claude 使用规则：提前了解

Anthropic 发布了关于候选人使用 AI 的官方指引。你可以用 Claude 润色申请材料，但初稿必须自己写。你可以用 Claude 研究公司、练习回答、准备向面试官提的问题。

界线划在评估本身。现场面试“全靠你自己”，除非面试官另有说明，否则不能借助 AI。带回家完成的作业同样不能用 Claude，除非得到许可。

对于一个整天和 Claude 打交道的岗位，这听起来有些矛盾，但合理的理解是：他们想看到你在没有助手时的真实底子。

## 让优秀候选人落选的错误

第一个常见错误是备错了考试类型：花几周刷算法，而按示例流程，技术面其实是一个用 MCP 部署 Claude 的场景题。其次是把代码写成一整块，导致每来一个新需求都得重写。

还有一个是设计题还很开放时就直接进入架构，恰好跳过了岗位描述中明确写出的在模糊中找方向的能力。

剩下两个错误与人有关。一是讲的故事太完美，听的人找不到你真正学到东西的地方。

二是在不允许的场合使用 Claude，比如未经许可在带回家的作业中使用。这会让你失去信任，而在一个依赖客户信任的岗位上，失去信任就等于失去一切。

本周练习：请一位同事扮演面试官，只给你一个故意含糊的设计题，比如“一家医院想在前台使用 Claude”。

设一个 30 分钟的计时器。前 10 分钟只能提问，不能画任何东西。结束后问同事，你的哪个问题最能把问题弄清楚。

**本周动手试试:**

- 把 Anthropic 的 FDE 岗位描述抄一遍，划出每个动词和技术名词，在每一行旁边写下能证明它的一个自己的项目。留空的那几行，就是要最先准备的内容。
- 给自己出一道三级编码题：第一级按客户对工单分组，第二级去掉重复工单，第三级限制发送给模型的数据长度。每级限时 20 分钟，并把你的取舍大声讲出来。
- 亲手写下一次自己部署失败的经历：原因、你做了什么、之后改了什么。写出初稿之后，再请 Claude 给反馈。

## 信源

- [Forward Deployed Engineer - Anthropic (General Catalyst job board)](https://jobs.generalcatalyst.com/companies/anthropic/jobs/93102649-forward-deployed-engineer)

- [Guidance on Candidates' AI Usage \ Anthropic](https://www.anthropic.com/candidate-ai-guidance)

- [Anthropic Forward Deployed Engineer Interview Guide (Exponent/Aced)](https://www.aced.io/guides/anthropic-forward-deployed-engineer-interview)

- [Anthropic interview process guide for 2026 (Educative)](https://www.educative.io/blog/anthropic-interview-process)
