AI 岗位预备 · 深入

白板上的 Agent:现场手写,比背概念更能过

五道手撕题,考的都是"你会不会让它停"
近一年大厂 Agent 岗的手撕题权重明显上升,而且不是算法题 —— 是「脱离任何框架,把 Agent 的骨架写出来」。高频五道:① 最小 ReAct(工具注册/循环控制/终止条件/异常处理)② 上下文压缩或滑动窗口摘要(给定消息列表与 token 上限,决定保留、摘要还是卸载)③ 从解析参数到执行、回传结果的完整工具调用链路 ④ 多 Agent 消息路由器(按角色 / 能力分发 + 超时与失败重试)⑤ 死循环检测器。共同考点只有一个:你有没有把「停」写成代码
追问现场 · 面试真题
面试真题
“脱离任何框架,手写一个 ReAct 模式的最小 Agent —— 工具注册、循环控制、终止条件、异常处理分别怎么实现?”
大多数人的第一反应:回答"用 LangChain 的 AgentExecutor 配一下就行",或者只写出 Thought / Action / Observation 的提示词模板——只会调框架,没见过循环本身
手撕考的不是框架熟练度,是四件兜底 —— 终止条件、异常处理、超时、死循环检测,是四件兜底 —— 终止条
先说结论
一句话:这五道题的共同内核是「怎么安全地停」。会写循环的人很多,能把循环写停的人才是他们要找的。
基础层 · 行业方案
① 最小 ReAct:工具注册(名字 → schema → 执行函数)· 循环控制(message 追加)· 终止条件(出现最终答案或达到最大轮数)· 异常处理(工具抛错要回灌成 Observation,而不是中断整个循环)
② 上下文压缩:给消息列表和 token 上限,按「该保留 / 该摘要 / 该卸载」三分法处理 —— 系统提示与最近 N 轮原文保留、中段摘要、工具大输出卸载到外部按需取回
③ 工具调用链路:解析参数 → 校验 schema → 执行 → 回传结果;参数不合法的分支必须显式写出来
执行层 · 我们的增量
④ 多 Agent 消息路由器:按角色或能力分发,并处理超时与失败重试 —— 消息要带 trace_id / task_id / attempt / schema_version / 权限 / Deadline,长任务用可靠队列与持久化状态
⑤ 死循环检测器:给出调用轨迹(工具名 + 参数指纹),工程上通常要求"同一工具连续 N 次且参数几乎不变"才算命中,而不是简单计数
真实事故(事后回看):生产环境的四类典型故障不是"模型不够聪明",而是思考链错误传播、工具幻觉、JSON 格式崩坏、无限循环 —— 四类里三类都能被手撕第一题的兜底挡住
事后补的防御(避免重演)
把"最大轮数 + 超时 + 同一工具重复阈值"三个数值当成必填配置;任何一项缺失,就不许让它跑真活
面试官想听什么
工具注册能说出「名字 + 参数 schema + 执行函数 + 权限标记」四件
终止条件给的是可判定的(有最终答案 / 超轮数 / 超时),不是"模型说完了"
工具抛错回灌成 Observation,循环不崩
上下文压缩说清「保留 / 摘要 / 卸载」的判据,而不是只说"摘要一下"
多 Agent 消息带齐 trace_id / task_id / attempt / schema_version / 权限 / Deadline
加分项:主动说"死循环检测不要用简单计数,要用工具名 + 参数指纹 + 阈值",并说明理由(合法重试与空转在简单计数下无法区分)
面试官让你手写最小 Agent,别答"用框架配一下"——按四件兜底写:工具注册(名字 / schema / 执行函数 / 权限)· 循环控制 · 终止条件(最终答案 / 最大轮数 / 超时)· 异常处理(工具报错回灌成 Observation)。加分项:主动补一句"死循环检测用工具名 + 参数指纹 + 阈值,不用简单计数"。
[C级]面灵AI《AI Agent 面试题与八股文汇总:155 道大厂真题按主题拆解(2026 面经)》——「Agent 手撕代码」一节(五道手撕题清单) [C级]CSDN《2026大厂Agent开发岗面试真题全解析:Agent 基础与设计,11 大类 107 道高频题》 同类:写进简历的 Agent 项目,会被深挖到第三层 · Agent 陷入死循环,怎么让它停下? · 多个 Agent 吵起来,听谁的?