Agent 面试指南

Coding Agent 要如何设计?

这题不要答成“让 Agent 读文件改代码”。资深答案要覆盖大型 repo 定位、上下文选择、patch 策略、测试选择、flaky、CI、代码审查、风险和回滚。

SCOPE本章边界

本章专门讲 coding agent。通用的 ToolPipeline、ContextProjection、Permission 和 Reliability 已在前面章节讲过;这里把它们落到软件工程任务:repo map、search、edit、test、CI、review、merge 和 large repo context。

30 SEC面试开口版

Coding Agent 的核心不是会写代码,而是有一个稳定的 Agent-Computer Interface:它能在大型 repo 里定位相关文件,生成小而可审查的 patch,选择合适测试验证,并把证据交给用户或 CI。我会先建 repo map:目录、符号、imports、call graph、recent changes、test ownership;定位时结合 ripgrep、symbol search、历史错误和少量 embeddings,不把全仓库塞进 prompt。修改时走 atomic diff、format/lint/test gate;测试按风险分层,从相关单测到模块测试再到全量/CI。flaky test 要有重跑和历史 flake rate,不能把一次 flaky pass 当强证明。最终输出要包含 changed files、why、test evidence、risk 和 rollback。

理解与记忆 · 术语、解析、关联知识点
专业术语Repo Map:仓库结构、符号、依赖、测试和最近变更的索引。
Patch Strategy:如何生成、应用、审查和回滚代码 diff。
Test Selection:根据变更范围和风险选择要跑的测试。
Flaky Test Policy:不稳定测试的识别、重跑和证据权重策略。
Review Evidence:给审查者看的变更原因、测试结果、风险和证据引用。
为什么这样回答先把 coding agent 从“代码生成器”提升为“软件工程运行系统”。面试官会追 large repo、测试慢、patch 冲突、flaky、CI 和 review 风险,回答要让每个环节都有 runtime 对象。
小白解析写代码只是其中一步。真正难的是知道该改哪里、别改错依赖、改完怎么证明没坏、测试失败是不是自己的锅、给审查者怎么解释。
关联知识点前面章节的 Context、Tool、Reliability、Eval 都会在 Coding Agent 里被放大:文件上下文会过期,shell 有风险,测试是 verification gate,CI artifact 是证据。

1 MIN一分钟口语版

我会把 Coding Agent 的闭环拆成六步。第一步理解任务:从用户问题、错误日志、issue、PR 反馈中抽出目标和验收标准。第二步定位:用 repo map、ripgrep、符号搜索、测试 ownership 和最近变更找候选文件,而不是把 repo 全塞给模型。第三步建上下文:只读相关文件片段、接口、调用链、测试和配置,所有片段带 hash,写后要 read-after-write。第四步 patch:生成最小 diff,避免无关重构,应用前后记录变更和冲突。第五步验证:先跑相关单测和格式化,再按风险升级到模块测试、端到端或 CI;flaky 要重跑并标不确定。第六步交付:输出变更摘要、测试证据、残余风险、回滚路径和后续建议。这样 Agent 才像一个可审查工程师,而不是一次性补全工具。

理解与记忆 · 术语、解析、关联知识点
专业术语Read-after-write:写文件后重新读取当前内容,避免基于旧上下文继续推理。
Atomic Patch:一次可审查、可回滚的最小变更。
Test Ownership:文件、模块或功能对应的测试集合。
Risk Scoring:按公共 API、迁移、安全、并发、生成代码等给变更评风险。
CI Artifact:远端构建、测试日志、覆盖率和截图等证据。
为什么这样回答一分钟版按真实修 bug 流程讲,能自然引出 ACI、context、patch、verification、review。它不是炫工具,而是说明 Agent 如何降低软件工程风险。
小白解析像资深工程师修 bug:先复现或读日志,再找相关代码,小改一处,跑测试,最后写清楚改了什么和还有什么风险。
关联知识点SWE-agent 强调 ACI 会影响软件工程任务表现;Guga 的工具管线和 artifact store 可以承载 diff、测试日志、CI 证据和 replay。

FLOW从 bug 到可审查 patch

UNDERSTAND目标、复现、日志、验收标准、风险。
LOCATErepo map、rg、符号、调用链、test owner。
PATCH最小 diff、冲突处理、格式化、read-after-write。
VERIFY相关测试、模块测试、CI、flaky policy。
REVIEW原因、证据、风险、回滚、后续。

Coding Agent 的工程闭环

Coding Agent 要如何设计? Mermaid diagram 1

DESIGN关键策略表

环节设计要点常见错误
定位rg + symbol search + repo map + recent changes + test ownership。只靠 embedding,召回相似但无关文件。
上下文文件片段带 hash/version,写后重读,冲突显式标记。基于旧文件片段继续改,覆盖用户变更。
Patch最小 diff、保留风格、避免无关重构、可回滚。顺手重构大片代码,让 review 难以接受。
Test先相关单测,再模块/集成/CI,失败分类 deterministic vs flaky。测试太慢就不跑,或 flaky pass 当强验证。
Reviewchanged files、why、evidence、risk、rollback、open questions。只说“修好了”,不给证据。

INTERVIEW高强度追问

面试官:大型 repo 里第一步怎么定位?

我会先用低成本信号缩小范围:错误栈、文件名、符号、接口名、日志关键字、最近变更、目录约定、测试 ownership。然后用 rg 和 symbol search 找候选,再读少量关键文件。embedding 可以辅助,但不能替代结构化搜索和代码索引。

面试官:repo map 里应该有什么?

至少有目录模块、symbols、exports/imports、call graph、dependency graph、test mapping、generated files 标记、ownership、recent changed files、CI commands、lint/format commands。它不是一次塞给模型,而是帮助 runtime 选择上下文。

面试官:上下文太大怎么办?

不把全仓库塞进去。先给任务目标、相关符号、文件摘要、关键片段、调用链、测试和最近 diff。每段带 source path、line、hash 和为什么包含。需要更多细节再按需读取,避免旧片段和无关代码污染模型。

面试官:Agent 修改文件后还用原来的上下文继续推理,会有什么问题?

会基于旧世界推理。写后要 read-after-write,更新 file hash、diff 和 context source;如果用户或另一个 Agent 同时改了文件,要检测冲突。否则模型可能覆盖用户变更,或继续引用已经不存在的代码。

面试官:Patch 应该多大?什么时候允许重构?

默认最小可验证 patch。除非 bug 根因在抽象层或重复导致风险,否则不做无关重构。重构要单独 plan item、单独风险说明和更宽验证。面试里我会强调可审查性:小 patch 更容易验证和回滚。

面试官:测试太慢,Agent 怎么选测试?

按风险分层。先跑改动文件对应单测和失败复现测试,再跑模块测试;公共 API、迁移、安全敏感、并发或跨模块变更再升级到集成测试或 CI。Test selection 要记录为什么选这些、为什么没跑全量。

面试官:测试失败了,怎么判断是 bug 还是 flaky?

看失败是否稳定复现、是否和改动相关、历史 flake rate、失败日志类型和重跑结果。确定性失败要修;疑似 flaky 要标 uncertain,重跑有限次数,不能把一次 pass 当强证据。最终报告要说明验证可信度。

面试官:CI 集成怎么做?

本地先跑快速验证,远端 CI 负责更完整环境。Agent 要能读取 CI status、日志 artifact、失败分类和截图;如果 CI 失败,回到定位/patch 循环。PR 说明里引用本地和 CI 证据,不只贴最终状态。

面试官:怎么处理 patch 冲突?

冲突不是让模型盲目覆盖。runtime 要保留 base hash、current hash、agent patch 和 user changes,做 three-way merge;无法自动合并时给模型和用户看冲突 hunk。高风险文件进入人工 review。

面试官:哪些文件不应该让 Agent 随便改?

密钥、生产配置、迁移、权限策略、支付、安全敏感代码、生成文件、lockfile、大规模公共 API、法律文本都要更高风险等级。可以允许提案,但执行要审批、diff preview、额外验证和 rollback plan。

面试官:代码审查输出应该包含什么?

包含变更摘要、根因、changed files、关键 diff、测试命令和结果、未跑测试原因、风险、回滚方式、开放问题。给审查者的是证据链,不是“我觉得可以”。

面试官:Coding Agent eval 怎么做?

看 task success、patch correctness、regression rate、test pass rate、review acceptance rate、unrelated diff rate、time to fix、cost per accepted patch、flaky misclassification、security-sensitive false edits。SWE-bench 类任务有价值,但内部真实失败集更重要。

面试官:Agent 要不要自动提交或开 PR?

可以,但要分层。低风险小 patch 可以生成 PR draft;合并、发布、迁移和生产配置改动需要人工确认。提交信息要引用 trace 和 test evidence;自动提交不是绕过 review,而是把可审查材料准备好。

面试官:MVP 先做哪些工具?

先做 read/search/edit、git diff/status、shell with sandbox、test runner、artifact store、patch preview、context projection 和 verification gate。先不做全自动 merge、跨 repo 大规模重构、无监督生产发布和复杂多 Agent 写同一 repo。先把定位、最小 patch、验证和审查跑稳。

PRINCIPLE我总结的核心范式

Coding Agent 的原则是“少读但读对,小改但可证,验证先于完成”。真正的价值不在生成代码,而在把定位、补丁、测试和审查证据放进可恢复的工程闭环。