面经 | Agentic AI / SDE | 🔥🔥 | Amazon
2026(9月) Software Development Engineer, AWS Agentic AI @ Amazon | Bellevue, WA · Virtual · 3 轮 | 😐 Neutral | Medium-Hard | Withdrew
Recruiter 加两轮技术面。写代码的只有第一轮技术面,第二轮差不多全是 BQ。第二轮技术面之后还在等下一步,另一家的 offer 先到了 deadline,我跟 recruiter 说撤了,Amazon 这边的结果没等到。
Round 1 — Recruiter Screen
很短。组是做 agent 创建和执行的,内部叫 AgentZ,对外挂在 Quick Suite 下面,JD 上写的就是这些,她也没多讲。
问我 Java 和 Python 哪个更顺手。Python 多一些,Java 写过。又确认了地点是 Bellevue。
Round 2 — Technical Interview 1
面试官让我自己挑语言,我选了 Python。
Coding:把流式 tool call 拼回来
模型流式输出时,tool call 是一片一片来的。输入是一串 chunk,每个 chunk 带 index。同一个 index 的第一片带 id 和 name,之后的片只带一小段 arguments 字符串。几个 tool call 的片会交叉着到。
要求流结束后返回完整的 tool call 列表,arguments 解析成 dict。哪个 call 的 arguments 解析不了,就把那一个标成失败,别的照常返回。
用 dict 按 index 存,arguments 先当字符串往后拼,流结束再统一 json.loads。这部分写得快。
出问题的是无参数的工具。arguments 拼出来是空串,json.loads("") 直接抛错,我把它标成了失败。他问:这个工具本来就不需要参数呢?改成空串按 {} 处理。他给的两个例子都过了,空串这个 case 是他自己提出来的。
follow-up:arguments 还没收完,前端想先把已经确定的字段显示出来。思路是维护一个括号和引号的栈,截到最后一个完整的 key-value,再把右括号补上。只讲了思路没写,时间不够了。他没说行不行。
几百个工具怎么选
后半段换成设计。客户可以给一个 agent 挂很多连接器,加起来可能几百个工具,不可能全塞进 prompt。
我的第一版:工具描述做 embedding,拿用户这句话取 top-k,再让模型从里面挑。
他问这样为什么不够。我说不同连接器里有名字很像的工具,都叫 search、create ticket 之类,光看描述分不开,那就先选连接器再选工具。他又问,用户这句话根本没提是哪个应用怎么办。我的办法是把这个对话里用过的工具默认留在候选里。
最后问怎么发现候选集把对的工具漏掉了。我说看模型是不是回了“做不到”,或者挑了一个明显更差的工具。他没接,直接换了题。
改了 prompt 之后
很短的一问:客户改了 agent 的 prompt 或工具列表,怎么确认新版本没变差。
拿历史对话回放,新旧版本各跑一遍对比,没有标注就用另一个模型当 judge。他问 judge 自己有偏好怎么办。没答上来。
Round 3 — Technical Interview 2
技术面一之后 recruiter 说要再约一轮,没说为什么。
这轮基本是 BQ。第一个是需求只有一句话、工期又紧的项目。我讲了一个,他一直追“具体砍了什么”“谁同意砍的”。我嘴里全是 we,说不清最后是谁拍的板。Amazon 那种抠 ownership 的追问,基本都落在这儿了。
第二个是和别人意见不一致。我讲的故事最后是对方改了主意,他问要是对方没改呢。这个没接好。
最后几分钟问了一个技术题:现在的 function calling 有什么明显的局限,你会怎么改。我列了三点:schema 表达不了参数之间的约束,并行调用的顺序,工具太多。每个都是一句话带过。他让我挑一个最想改的展开,我挑了第一个,讲到一半自己卡住了。
这轮之后 recruiter 没提反馈,也没说下一步是什么。