DeepSeek Agent开发岗三面,再面一轮就offer啦!!!
AIGC小白入门记 | 08-03 21:48
标签:我的求职进度条、大厂实习后,我收获了什么...
来源:https://www.nowcoder.com/discuss/913902338543259648
DeepSeek Agent开发岗三面,再面一轮就offer啦!!! DeepSeek Agent开发岗三面,再面一轮就offer啦!!!
面完出来,我在地铁上反复回味了两个小时。
这次的面试体验跟之前高德那次完全不同。高德是压力感拉满,DeepSeek这轮面完反而有点上头。面试官像一个经验丰富的技术合伙人,全程在跟我"聊设计",而不是"考知识点"。
整个面试接近一个半小时,从项目架构一路深挖到评测体系、Badcase回流、Loop Engineering,中间还穿插了一道手撕算法。能感觉到对方是真的在评估你能不能独立负责一个Agent项目。
说实话面到后半程我已经有点兴奋了,因为讨论的问题正好是我最近一直在琢磨的方向。
下面整理一下还记得的问题和自己的一些复盘。
- 自我介绍
开门见山问了这个问题。我大概花了两分钟,把自己的技术背景、最近一年主要做的事情、以及对Agent开发这个方向的兴趣点说了一下。
要点:不要背简历,要突出"你解决了什么问题"和"你为什么想做这个方向"。
- 重点介绍AI私人助理项目
面试官对这个项目很感兴趣,让我详细讲一下。
我介绍的是一个AI私人助理,能接入日历、邮件、待办事项、知识库,帮用户做日程管理和信息汇总。用户可以说"帮我整理一下下周的日程并提醒我准备会议材料",Agent会自动查询日历、生成待办、设置提醒。
面试官没有打断我,等我介绍完之后才开始提问。
- AI私人助理整体架构怎么设计?解决什么问题?
这个问题要求我站在全局视角把架构说清楚。
我的回答:
整体分四层:
用户交互层:接收自然语言输入,做意图识别和实体抽取 Agent调度层:根据意图选择合适的Agent或工作流 工具执行层:调用日历API、邮件API、知识库检索等 记忆层:短期记忆保存当前会话,长期记忆存储用户偏好和历史事实
解决的核心问题是:让AI能主动帮用户管理个人事务,而不是被动回答。
架构示意图:
- 高准确性场景怎么控制幻觉?
这个问题问的是Agent在需要精确输出的场景下如何保证可靠性。
我的回答:
控制幻觉有几种手段:
约束解码:对于特定输出格式,用JSON Schema约束LLM的输出结构 检索增强:所有事实性内容必须来自检索结果,而不是依赖模型参数记忆 引用溯源:每个事实点都带上来源引用 自我反思:生成后让模型自检一遍,或者用另一个模型做验证
最核心的一点:凡是涉及具体数据(时间、地点、数字)的,必须从工具返回结果中提取,不允许模型自己编。
- 幻觉率和引用错误率多少?业务上能否接受?
这道题问的是实际指标。
我的回答:
在我们的评测集上,幻觉率大概在3%-5%,引用错误率在2%左右。
业务上能不能接受取决于场景:
日程提醒类:不能接受,错了就是事故 信息汇总类:可以接受一定容错,但要有人工确认环节
面试官追问:怎么定义幻觉和引用错误?
我说:幻觉是"模型说了检索结果中没有的内容",引用错误是"引用了文档但内容对不上"。前者更严重。
- AI生成代码安全性问题如何解决?
这道题问的是代码执行的安全边界。
我的回答(跟面试官确认了一下理解):
AI生成的代码不能直接在宿主环境里跑,必须用沙箱隔离。具体来说:
用Docker容器限制资源(CPU、内存、磁盘) 设置网络隔离,禁止访问内网 限制系统调用,不允许文件写入和进程创建 设置超时和内存上限,防止死循环和OOM
面试官追问:Python的exec和eval能直接用吗?
我说:不能。exec在Python里是不安全的,可以执行任意代码。即使限制了globals,仍然有办法绕过。必须用沙箱,比如pypy在受限环境中运行,或者用nsjail这种系统级隔离。
- 定制了哪些能力?任务调度/状态回退/checkpoint/trace回放?
这个问题问的是Agent系统的可观测性和可恢复性。
我的回答:
我们在Agent框架里定制了四个核心能力:
任务调度:支持串行、并行、条件分支、循环四种执行模式 状态回退:当某个步骤失败时,回退到上一个稳定状态重试 Checkpoint:每执行完一个关键步骤就保存快照,包含当前上下文、已执行动作列表、中间结果 Trace回放:记录完整执行轨迹,用于离线调试和Badcase分析
Checkpoint的数据结构大致是:
1 2 3 4 5 6 7 8 9 10
{ "session_id": "xxx", "step": 5, "state": { "messages": [...], "tool_results": {...}, "current_task": "查询日历" }, "checkpoint_at": "2026-07-29T14:32:00Z" }
Trace回放特别有用。有时候Agent跑飞了,你不知道它怎么走到那一步的,有了完整轨迹才能定位问题。
- 长期/中期/短期记忆分别怎么设计?
这道题考的是记忆分层。
我的回答:
短期记忆:当前会话的消息列表 + 工具调用结果,存在内存里 中期记忆:跨会话但近期(比如过去7天)的对话摘要,存在Redis里 长期记忆:用户偏好、历史事实、周期性任务等,存在向量数据库里
每次新请求来了之后:
面试官追问:三个记忆怎么分层存储?
我说:短期用内存(快),中期用Redis(持久化+快),长期用向量库+MySQL(持久化+检索)。
- 记忆滚动更新、摘要压缩、结构化压缩怎么做的?
这道题问的是记忆维护的具体机制。
我的回答:
滚动更新:当对话轮次超过阈值(比如20轮),用滑动窗口丢掉最早的消息,但保留系统指令和关键事实。
摘要压缩:每N轮对话触发一次摘要:
1
旧摘要 + 最近N轮对话 → LLM → 新摘要
结构化压缩:把对话中的事实抽取成结构化三元组:
1
"明天下午三点有会" → {type: "schedule", time: "2026-07-30T15:00", event: "会议"}
三种方式配合使用:滚动更新保证不超窗口,摘要压缩保留语义,结构化压缩便于检索。
- Multi-Agent如何协作?ReAct、Path-Act
这道题问的是多Agent协同模式。
我的回答:
我们主要用了两种协作模式:
ReAct模式:单个Agent内部循环执行"推理→行动→观察"。适用于一个Agent独立完成任务的场景。
Path-Act模式:多个Agent按路径串行或并行执行。主Agent负责任务分解和路由,子Agent分别处理子任务,最后汇总结果。
协作流程:
不同点是:
ReAct:单Agent,循环迭代 Path-Act:多Agent,路径编排 11. Badcase怎么定义?review拒绝/用户不采纳/高质量样本分别怎么处理?
这道题问的是Badcase管理。
我的回答:
我们把Badcase分成几类:
Review拒绝:业务审核人员直接打回的案例 → 立即分析原因,修复 用户不采纳:用户对结果不满意或点了"没用" → 定期抽样分析 高质量样本:用户明确点了"有用" → 标记为正样本,入库
处理流程:
1 2 3 4
Badcase → 分类 → 分析根因 → 修复策略 ├── 检索问题 → 优化检索策略 ├── 模型问题 → 收集训练数据 → SFT └── 规则问题 → 修改Prompt或业务流程a
面试官追问:用户不采纳和review拒绝的区别?
我说:review拒绝是"内容有硬伤",用户不采纳可能是"内容没问题但不符合预期"。前者必须修,后者需要进一步理解用户真实需求。
- Badcase回流到SFT的完整链路?
这道题问的是数据闭环。
我的回答:
完整链路是这样的:
1
线上Badcase → 人工标注修正 → 构造训练样本 → SFT微调 → 离线评测 → 灰度上线 → 线上验证
每一步:
Badcase收集:从线上日志里捞取review拒绝、用户低评分、自动检测异常(如幻觉) 标注修正:人工改写正确答案,形成{问题, 错误输出, 正确输出}三元组 样本构造:把修正后的数据混入训练集,注意不要过拟合 SFT:用修正数据微调模型 评测:在Badcase集合上验证修复效果,同时做回归测试确保不引入新问题 灰度上线:小流量验证,观察Badcase率变化 13. 评测体系谁搭的?检索评测/生成评测/链路评测/线上评测怎么做的?
这道题问的是评测体系建设。
我的回答:
评测体系是我主导搭建的,分了四个维度:
检索评测:
指标:Recall@K、MRR、NDCG 方法:人工标注Query-Doc对,自动化跑分
生成评测:
指标:准确率、幻觉率、引用正确率 方法:LLM-as-Judge + 人工抽检
链路评测:
端到端任务完成率 方法:用标准Case集跑完整流程,人工判定结果
线上评测:
A/B测试:新旧版本对比 用户行为指标:采纳率、满意度评分
- MCP和Skills如何注册和使用
这道题问的是能力接入机制。
我的回答:
MCP注册:
1 2 3 4 5 6 7