伪代码
mcp.register_tool( name="get_calendar_events", description="获取指定日期范围内的日历事件", input_schema={...}, handler=get_calendar_events_impl )
Skill注册:
1 2 3 4 5 6 7
skill = Skill( name="daily_summary", description="生成每日工作摘要", steps=[query_calendar, query_todos, summarize], triggers=["每天早上8点", "用户说'总结今天'"] ) skill_registry.register(skill)
使用流程:Agent通过MCP发现工具,调用时通过协议传递参数;Skill则是在调度层被调用,执行一个完整的工作流。
- Hermes是什么?如何加入?
这道题问的是内部工具或框架。
我的回答:
Hermes(面试官提到的一个内部工具,我询问了一下具体含义)。
面试官解释后我理解了——在DeepSeek的上下文里,Hermes应该是他们内部的一个Agent开发框架或平台。
关于"如何加入":需要申请权限,接入Hermes的SDK,注册Agent后通过标准化接口与平台通信。平台负责提供基础设施(日志、监控、配额管理等)。
- Loop Engineering是什么?
这道题问的是Agent循环控制。
我的回答:
Loop Engineering指的是对Agent循环执行过程的精细化控制工程。
核心要素:
循环条件:什么时候继续、什么时候终止 步数限制:最大迭代次数 状态管理:每次迭代更新上下文 异常处理:工具超时、返回错误时的策略 观察裁剪:工具返回内容太长时如何截断
其实就是把Agent的循环从"while true"变成一个可控、可观测、可终止的工程系统。
- Graph Engineering是什么?和Loop Engineering有什么区别?
这道题问的是两个工程概念的对比。
我的回答:
Graph Engineering:把Agent任务流程组织成有向图,节点是步骤(推理、工具调用、条件判断),边是流转路径。支持分支、并行、循环、合并。
Loop Engineering:关注的是单个Agent的循环迭代控制,强调的是"步数管理"和"状态维护"。
区别:
关注层级
任务流程编排
单次循环控制
结构
图(节点+边)
循环(推理→行动→观察)
适用
复杂多步骤任务
ReAct类Agent
粒度
粗(步骤级)
细(单次迭代级)
两者可以结合:Graph里每个节点可能内部就是一个Loop。
- 知识助手类项目的场景和难点?
(这里原输入标号有点混乱,但内容是新项目RAG系统相关)
我的回答:
场景:企业内部知识问答,用户问政策文档、技术规范、产品手册相关的问题。
难点:
文档复杂:PDF有表格、图片、跨页段落,切分容易丢失语义 术语专业:企业内部术语多,通用检索效果差 时效性:文档有版本,需要区分新旧 合规要求:某些信息只能特定权限的用户看到 19. PDF/表格/条款类文档怎么解析和切分?
这道题和之前高德面过的PDF切分类似,但更聚焦在表格和条款上。
我的回答:
PDF解析:
文本型PDF:用PyPDF2或pdfplumber提取文本+坐标 扫描型PDF:用OCR识别
表格解析:
检测表格边界,提取行列结构,保留表头 对于复杂表格(合并单元格),用Camelot或Tabula
条款切分:
按条款编号层级切分(1.1、1.1.1) 每条条款保留完整上下文(上级条款的内容) 元数据记录:文档名、章节路径、版本号
切分原则:保持语义完整性 > 固定字数切分。
- 检索怎么优化?向量检索/关键词检索/rerank/query rewrite怎么配合?
这道题问的是检索pipeline。
我的回答:
完整的检索流程:
1
用户Query → Query改写 → 多路检索 → 融合 → 重排
Query改写:用LLM对问题做同义扩展和指代消解
配合方式:
Query Rewrite保召回(把一个问题扩成多个问法) BM25 + 向量保全面(关键词+语义) RRF融合保稳定 Rerank保精度 21. 多轮对话下怎么解决上下文断裂和幻觉?
我的回答:
上下文断裂:
每轮做Query改写,把指代和省略补全成完整问题 会话状态管理:记录当前对话的主题和关键实体
幻觉:
生成时强制引用检索结果 对时间、地点、数字等关键事实做后校验
两者的关系是:上下文断裂往往是幻觉的诱因,理解错了自然会答错。
- 这个项目有哪些不足?和后面Agent项目比差在哪?
这道题是让做项目对比。
我的回答:
知识助手项目的不足:
只能回答,不能行动(只读不写) 无法处理需要跨文档推理的复杂问题 多轮对话能力弱
和Agent项目的差距:
Agent能调用工具,知识助手只能检索 Agent有记忆和规划能力,知识助手是Query-Response模式 结论:Agent是知识助手的超级版 23. 怎么平衡准确率和效率?混合检索/TOPN精排/控制上下文长度/模型路由?
这道题问的是系统级的权衡。
我的回答:
几个手段配合使用:
混合检索:BM25(快)+ 向量(准),RRF融合
TopN精排:粗排召回200条,精排只用前20条
控制上下文长度:
检索TopN固定(比如10条) 每条文档截断到500字 动态计算,超出预算就降低N或缩短截断
模型路由:
简单问题走小模型(快、便宜) 复杂问题走大模型(准) 1 2 3 4 5 6 7
def route_model(query, intent): if intent in ["简单问答", "天气查询"]: return "qwen2.5-7b" elif intent in ["复杂推理", "代码生成"]: return "deepseek-v3" else: return "default"
准确率和效率本质上是trade-off,用技术手段在中间找平衡点。
- 大数据量高并发下怎么做成本和效率优化?架构怎么设计更合理?
这道题问的是大规模部署。
我的回答:
成本优化:
小模型处理大部分请求,大模型只处理复杂任务 Prompt缓存(相似Query复用上下文) 向量索引量化(如HNSW + PQ压缩)
效率优化:
异步处理:耗时任务走队列,不阻塞响应 批量推理:多个请求合并成batch 水平扩展:无状态服务加负载均衡
整体架构:
- 两个字符串的最长公共子串
手撕算法题。这道题是经典的动态规划。
我的答案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
def longest_common_substring(s1: str, s2: str) -> str: m, n = len(s1), len(s2) # dp[i][j] 表示 s1[:i] 和 s2[:j] 的最长公共子串长度 dp = [[0] * (n + 1) for _ in range(m + 1)] max_len = 0 end_pos = 0 for i in range(1, m + 1): for j in range(1, n + 1): if s1[i-1] == s2[j-1]: dp[i][j] = dp[i-1][j-1] + 1 if dp[i][j] > max_len: max_len = dp[i][j] end_pos = i return s1[end_pos - max_len: end_pos]
- 职级预期、换工作原因、意见不合怎么推进
这部分是常规HR问题。
我的回答:
职级预期:根据当前职级和面试表现,期望匹配合理职级 换工作原因:希望在Agent开发方向有更深的技术积累 意见不合:用数据和事实沟通,不情绪化 27. 问了业务方向,偏AIGC创作
反问环节。面试官说他们偏AIGC创作方向,包括AI写作、剧本生成等。
我顺带问了一下技术和业务结合的挑战,面试官说目前最大的挑战是保证生成内容的连贯性和可控性。
最后说两句
这一轮面下来,感受就是:做的项目深度决定了你被问到什么层级的问题。
如果你只是调过API、跑过Demo,面试官不会深挖到Loop Engineering和Graph Engineering。但我那个AI私人助理项目从0到1做了一年多,被问到的全都是"你遇到了什么问题、怎么解决的"——这些没法临时编。
DeepSeek的面试官有个特点:追问特别多。每个问题答完之后,他会根据你的回答继续往下挖,挖到你答不上来为止。这其实是在找你的能力边界。
目前面完了二面,据说还有一轮。如果能过,离Offer就不远了。
觉得有用的朋友点个在看支持一下吧。 后面如果过了终面,我再来写一篇完整的面经和准备攻略。
评论区欢迎交流面试经验,一起上岸。
#求职低谷期你是怎么度过的##我的求职进度条##给26届的秋招建议##为了入行xx岗,我学了__##秋招投递记录# 大模型算法面经 文章被收录于专栏
大模型算法面经