pdf版下载链:https://pan.quark.cn/s/9cc742e9c2a8
18 国内大厂 AI 工程师:高频面试题与回答框架
更新: 2026-10-12
定位:整理国内互联网公司 AI 应用、RAG、Agent 与推理方向常见考法。
使用说明:厂名标签用于区分面试风格,不代表官方题库或保证原题复现。回答中的项目指标必须替换为本人真实、可解释的数据。
目录
一、面试风格与准备重点
| 方向 | 常见关注点 | 准备方式 |
|---|---|---|
| 算法与模型 | Attention、位置编码、训练/推理差异 | 能写公式、算复杂度、讲工程影响 |
| AI 应用 | RAG、Agent、评估、数据闭环 | 准备完整链路和一条 badcase 排障案例 |
| Agent 工程 | Harness、Tools/MCP、Skills、长任务 | 能讲状态、恢复、取消、验收和边界 |
| 平台工程 | 模型网关、限流、缓存、可观测、多租户 | 用指标说明稳定性、延迟、成本和权限 |
| 安全治理 | Sandbox、最小权限、审批、审计 | 能画信任边界并解释 Prompt Injection |
| 项目深挖 | 个人贡献、技术取舍、失败复盘 | 用 STAR 结构,区分团队成果与个人工作 |
| 手写与设计 | 检索、工具调用、并发、状态机 | 先明确接口和约束,再写核心逻辑 |
二、Transformer 与注意力机制
Q1:Self-Attention 如何计算?为什么比 RNN 更适合并行训练?
核心公式:
Q = XW_Q,K = XW_K,V = XW_V
Attention(Q, K, V) = softmax(QKᵀ / √d_k) V
回答要点:
- 输入先线性映射为 Q、K、V。
QKᵀ计算每个 token 与其他 token 的相关性。- 除以
√d_k防止维度增大后点积过大、softmax 饱和。 - softmax 得到权重后,对 V 加权求和。
- 训练时所有位置可并行计算;RNN 需要按时间步递归。
- 标准全注意力的时间、显存复杂度都包含
O(n²)项,长上下文成本高。
面试话术:
Self-Attention 的优势不是“天然理解一切长距离关系”,而是任意位置之间只有一跳且训练可并行;代价是注意力矩阵随序列长度平方增长。工程上通常结合 FlashAttention、窗口/稀疏注意力、KV Cache 和序列并行优化。
Q2:位置编码有什么作用?RoPE 相比绝对位置编码有什么特点?
纯 Attention 对 token 顺序具有置换等变性,因此需要注入位置信息。
| 方法 | 核心思路 | 优点 | 局限 |
|---|---|---|---|
| 可学习绝对位置 | 为每个位置学习向量 | 简单、训练内效果稳定 | 超出训练长度时外推较弱 |
| 正弦位置编码 | 不同频率的 sin/cos | 无额外训练参数 | 相对位置表达较间接 |
| RoPE | 对 Q/K 按位置做旋转 | 点积自然包含相对位置信息 | 长度外推仍需缩放策略 |
| ALiBi | 给注意力分数加距离偏置 | 简单、长序列友好 | 表达能力与适配模型有关 |
高频追问:
- RoPE 通常施加在 Q、K,而不是 V。
- 长度外推不等于“把最大长度参数改大”;还要关注训练分布、缩放方法、注意力退化和显存。
Q3:MHA、MQA、GQA 有什么区别?如何影响 KV Cache?
| 结构 | Query Head | KV Head | 特点 |
|---|---|---|---|
| MHA | 多个 | 与 Query 数相同 | 表达能力强,KV Cache 最大 |
| MQA | 多个 | 1 组 | KV Cache 最小,可能损失部分质量 |
| GQA | 多个 | 少量分组 | 在质量、带宽与显存之间折中 |
近似 KV Cache 大小:
2 × batch × sequence_length × num_kv_heads × head_dim × bytes_per_element × num_layers
其中 2 表示 K 和 V。回答时要说明:模型是否采用 MLA、是否量化 KV、张量并行切分方式等都会改变实际占用,不能只背一个固定数值。
三、RAG 与 Agent 系统设计
Q4:如何设计一套可上线的企业级 RAG 系统?
建议按七段链路回答:
数据接入
→ 解析与清洗
→ 分块与元数据/权限标注
→ Embedding 与索引
→ Query 理解、混合召回与 Rerank
→ 上下文组装与生成
→ 引用、评估、监控和 badcase 回流
关键设计:
- 数据层:文档版本、增量更新、删除同步、权限标签。
- 检索层:向量 + BM25 混合检索,必要时做 Query Rewrite、Metadata Filter。
- 精排层:Cross-Encoder 或 Late Interaction;候选数由离线评估和延迟预算确定。
- 生成层:要求基于证据回答,保留 chunk 到原文的引用映射;证据不足时拒答。
- 评估层:分别评估检索召回、排序质量、忠实度、答案相关性和端到端任务成功率。
- 生产层:监控 TTFT、总延迟、Token、缓存命中率、空召回率、权限拦截和错误率。
排障顺序:
先看正确答案是否进入候选集;若未进入,检查解析、分块、Embedding、过滤和召回。若进入但排名低,检查融合与 Rerank。若证据正确但答案错误,再检查上下文组装、Prompt 和模型。
Q5:如何设计代码审查 Agent?怎样限制风险?
比“堆一个 ReAct Prompt”更可靠的方案:
读取变更(只读)
→ 加载项目 Rules/AGENTS.md 与审查 Skill
→ 静态分析/测试/安全扫描(受控工具)
→ 汇总证据
→ 生成分级问题
→ 校验行号与证据
→ 人工确认后再建议修改
最小伪代码:
def review_change(diff, repo):
findings = []
findings += run_linter(repo, timeout=60)
findings += run_tests(repo, changed_scope(diff), timeout=300)
findings += run_security_scan(repo, changed_scope(diff), timeout=120)
report = llm_generate_review(
diff=diff,
tool_evidence=findings,
rules=load_review_rules(repo),
)
return verify_file_and_line_references(report, repo)
生产约束:
- 默认只读;写文件、执行网络请求和读取密钥需要单独授权。
- 命令使用 allowlist、超时、CPU/内存限制和 workspace/container 沙箱;默认关闭不必要网络。
- 限制最大步数、最大 Token、最大重试次数,避免死循环。
- 工具结果必须携带来源;LLM 结论与证据分开记录。
- 长审查任务要持久化 checkpoint,支持 resume/cancel;多个 Agent 使用独立 worktree,避免并发写冲突。
- 以“发现率、误报率、有效评论采纳率、修复后回归结果”评估,而不是只看生成文字质量。
Q6:智能客服 Agent 如何设计?
推荐链路:
鉴权与会话恢复
→ 意图/风险识别
→ 知识检索或业务工具调用
→ 结果校验
→ 生成回复
→ 人工兜底
→ 评价与 badcase 回流
需要讲清的工程点:
- 查询订单、退款等操作必须二次确认并做幂等。
- 知识问答与交易操作分开授权;模型不能直接拼接 SQL 或绕过业务 API。
- 负面情绪只作为升级信号之一,不能替代业务优先级与合规规则。
- 对话、工具调用、模型/Prompt 版本和用户反馈要能关联到同一 trace。
- 可复用流程可封装成 Skill;Skill 是指导,不是权限,执行仍受 allow/ask/deny、sandbox 和业务鉴权约束。
- 效果指标至少包括任务完成率、转人工率、首响、解决时长、误操作率与单会话成本。
Q7:A2A、MCP 和普通多 Agent 编排有什么区别?
截至 2026-10-12,A2A 已有 v1.0 正式规范。它最初由 Google 推动,当前回答应以 A2A 官方规范为准,而不是以厂商新闻或二手文章为准。
| 概念 | 解决的问题 | 典型对象 |
|---|---|---|
| Function Calling | 模型如何按 schema 请求调用一个工具 | 模型 ↔ 应用代码 |
| MCP | Host 如何发现并连接工具、资源和 Prompt | Agent/Host ↔ 工具服务 |
| A2A | 独立 Agent 如何发现能力、委托任务和交换状态 | Agent ↔ Agent |
| 编排框架 | 应用内部如何控制节点、状态、重试和并发 | 工作流内部组件 |
注意事项:
- A2A 不等于必须去中心化;生产环境常保留编排器、策略引擎和审计层。
- A2A v1.0 的常见对象包括 Message、Task、Artifact;Task 有 working、input-required、auth-required、completed、canceled、rejected、failed 等状态。
- Agent 间通信仍要处理身份、授权、超时、幂等、重复消息、任务取消与补偿。
- 简单任务优先单 Agent + 明确工具;只有职责、权限或扩缩容边界明显时才拆多 Agent。
四、生产问题与排障
Q8:大模型应用常见问题如何系统治理?
| 问题 | 先看什么 | 常用治理 |
|---|---|---|
| 幻觉 | 证据是否召回、回答是否忠实 | RAG、引用、拒答、结构化校验、人工兜底 |
| 延迟高 | TTFT、TPOT、检索/工具耗时 | 流式、并行工具、缓存、模型路由、推理优化 |
| 成本高 | 输入/输出 Token、重试、缓存命中 | 上下文裁剪、语义/前缀缓存、小模型路由、预算 |
| 工具误调用 | schema、参数、权限与轨迹 | 参数校验、最小权限、确认节点、补偿事务 |
| 死循环 | 重复状态、步数和失败模式 | 最大步数、状态去重、超时、熔断、人工接管 |
| 长任务中断 | checkpoint、task 状态、artifact | 持久化、resume、cancel、幂等和 TTL |
| Skill 漂移 | Skill/脚本版本与依赖 | 版本锁定、回归 eval、审批发布 |
| 输出不稳定 | 模型/Prompt/采样参数版本 | 固定版本、结构化输出、回归集、灰度发布 |
| 数据泄露 | 检索权限、日志、第三方调用 | 检索前鉴权、字段脱敏、审计、租户隔离 |
回答框架:
先用 trace 把输入、检索、Prompt、模型、工具和输出串起来,再按层定位;修复后加入回归集,并通过灰度和指标观察验证,不能只改 Prompt 后直接上线。
Q9:模型为什么会“复读”?如何排查和缓解?
常见原因:
- 解码参数过于确定,局部高概率 token 形成循环。
- Prompt 或历史上下文包含重复结构,模型继续模仿。
- 长上下文截断、模板拼接或停止条件错误。
- 模型量化、微调数据重复或训练不稳定导致退化。
- 流式客户端重连、重试或拼接 bug,让同一片段被重复展示。
排查顺序:
确认是模型重复还是客户端重复
→ 保存原始 token 流与 request_id
→ 用固定输入复现
→ 检查 Prompt/历史/stop
→ 调整 repetition penalty、temperature、top_p
→ 对比模型版本、量化版本与微调前后
注意:repetition_penalty 过高会损害专有名词、代码和需要重复的格式。参数只能缓解症状,若根因是数据、模板或客户端重放,应修复根因。
五、回答模板
系统设计题建议使用以下顺序:
- 明确约束:用户量、数据规模、延迟、成本、安全、是否多租户。
- 给出主链路:用 5~8 个节点讲清请求如何流动。
- 展开关键取舍:为什么选该方案,替代方案何时更好。
- 说明异常路径:超时、重试、幂等、降级、人工兜底。
- 给出评估指标:质量、延迟、成本、安全分别怎么量。
- 结合个人经历:只使用本人能解释、能复盘的真实数据。
项目题建议用 STAR + 复盘:
S:什么业务问题,影响谁?
T:你的职责和成功标准是什么?
A:你做了哪些设计、取舍和排障?
R:结果如何,指标口径是什么?
复盘:失败过什么,如果重做会改什么?
六、2026 技术栈更新速记
面试中优先讲稳定能力,不背产品新闻:
- 工具调用:严格 JSON Schema、参数校验、幂等和业务再鉴权。
- MCP:以
2026-07-28规范为准;Streamable HTTP;Tasks/Skills over MCP 为可选扩展;Sampling、Roots、Logging 已 Deprecated。 - Agent Skills:
SKILL.md+ 可选 scripts/references/assets,渐进披露;Skill 不是权限边界。 - Harness:context、tools、state、sandbox、permissions、approvals、verification、budget、tracing。
- 长任务:durable task、checkpoint、resume、mid-flight input、cancel、artifact 和 TTL。
- 评测:业务任务集 + 轨迹 + 安全 + 延迟/成本;公开榜单必须注明模型、Harness、版本和预算。
- Coding Agent:独立 workspace/worktree,测试驱动验收,PR 前人工 review。
官方来源(核对日期:2026-10-12)
- MCP 2026-07-28 Specification: https://modelcontextprotocol.io/specification/2026-07-28
- MCP Changelog: https://modelcontextprotocol.io/specification/2026-07-28/changelog
- Agent Skills Specification: https://agentskills.io/specification
- A2A v1.0 Specification: https://a2a-protocol.org/v1.0.0/specification/
- OpenAI Function Calling: https://developers.openai.com/api/docs/guides/function-calling
- OpenAI Agents SDK Guardrails: https://openai.github.io/openai-agents-python/guardrails/
- OpenAI Agents SDK Sandbox: https://openai.github.io/openai-agents-python/sandbox/guide/
- Anthropic Claude Agent SDK: https://docs.anthropic.com/en/docs/claude-code/sdk
- Anthropic Permissions and Sandboxing: https://docs.anthropic.com/en/docs/claude-code/permissions