文章
中厂面试
超級の新人第四范式Agent开发面试
前情提要#
春招火热期在 boss 上投了几个公司。发了几份简历之后,第四范式 hr 初步问了一些 vibe coding 的经历,之后联系进行面试。岗位为 Agent 开发工程师实习生。
面试内容#
简历中 AI Agents 的开发经历是个人开发的还是在实习?
- 前两个项目是个人开发,后一个是团队开发的(项目:工作流、AI 框架、Agent 多端应用)
索要项目上线的网址和在这个 Agent 多端应用中负责什么方向?
- 项目的后端是一个 Go、Python 的微服务架构,Go 负责后端,Python 负责 AI 层。前端 Web 端为 Vue3,移动端为 Flutter。我负责全部的 AI 层和 Go 后端的跨域通信、部分后端功能和 Web 前端功能的改进设计。
询问项目的主要功能,和如何实现?
- 使用 LangChain、LangGraph 框架,首先把工具通过 MCP Adapters 进行打包,之后 ReActAgent 进行调用工具与数据库进行交互。另一方面在进行增删改操作时,由于 AI 输出不一定满足用户需求,做了一个独立的确认节点作为拦截中间件,截断了数据的写入,用户可自行编辑、保存或删除。
Agent 的工作模式都有什么?
- ToolsCallingAgent、ReActAgent、ReflectionAgent、PlanAndSolveAgent(并粗略展开每一种大概机制)
介绍一下你对 RAG 的理解?
- 平时不太喜欢用 RAG,主要因为两点:自己开发时大多数用不到这个技术,RAG 最好在垂直领域使用,尤其是 ToB 或专精某一特定领域;前段时间不少人说 RAG 已死,指现在很多东西能替代 RAG 的功能。其次 RAG 的召回率并不算太高,想要优化只能花费大量人力财力进行经验微调。知识库开发的流程一般是先进行数据清洗,之后向量化储存到向量数据库,召回时再进行向量匹配。
看到你做了一个 memory 上下文记忆功能的处理,可以说一下处理逻辑吗?
- 记忆可以分成长期记忆和短期记忆。长期记忆使用 RAG 技术,将用户强调或比较有价值的数据存入,作为跨对话窗口的上下文;短期记忆做了上下文压缩,用一个经验值作为阈值,等上下文到一定程度后进行精炼。精炼分两种模式:智能模式通过 LLM 进行关键信息提炼,机械模式通过正则处理去除冗余的工具调用日志和结构化导致的上下文污染。
对于模型的选型是否有考虑?
- 之前做过 coding agent 等类似项目,在多智能体系统中不同任务采用不同模型:plan 用主力模型 Opus,编写代码用中等模型 Sonnet,探索项目结构用 Haiku 等小模型,这样既节省 token 花销也不降低代码质量。
是否有 AI 编程的经历和理解?
- 说了市面上各 AI 编程工具的差异性优点、缺点及自己的订阅情况,之后说了开发模式相关如 Spec Driven。可参考文章 AI 原生工程。
对于 Agent 有没有什么熔断机制?有接触过么?比如基模直接卡死了,后端是否有保底机制?
- 在项目中我对 tool calling 做了熔断机制,如果工具调用失败超过三次就会进行熔断处理,防止反复重试导致系统崩坏。如果基模卡死,完全可以弄一个集群来处理,一个服务器掉了可以快速转到另一个提供 LLM 的服务器。
最终也算是过了。