作业帮AI应用开发岗-27秋招作战手册
吃透作业帮 AI 应用开发岗|LLM + 全栈:27 秋招作战手册
适用人群:2027 届本/硕,目标岗位为「AI 应用算法工程师 / 大模型应用开发(全栈方向)/ 大模型对话算法」等 LLM 应用层岗位
内容定位:不是八股文合集,而是一份从 JD 反推能力模型、从能力模型反推项目与面试脚本的完整作战文档
成文时间:2026 年 10 月(27 届秋招进行中)
目录
- 0. 写在前面:为什么这篇值得你读完
- 1. 岗位画像:三段真实 JD 的逐句翻译
- 2. 业务底盘:作业帮到底在用大模型干什么
- 3. 能力模型:一个底座 + 五根支柱
- 4. 知识体系地图(P0 / P1 / P2 分级)
- 5. 90 天作战计划:用产出物换面试资格
- 6. 三个能打的项目:架构、指标与答辩脚本
- 7. 面试真题拆解:30 题的高分答法骨架
- 8. 十大致命坑:我见过太多人栽在这里
- 9. 简历与自我介绍:把同样的经历讲出 2 倍价值
- 10. 资源索引:论文 / 官方文档 / 开源项目
- 11. 结语与自查清单
0. 写在前面:为什么这篇值得你读完
先说结论:2026 年的 LLM 应用层岗位,招聘逻辑已经彻底变了。
三年前,一个"大模型岗"的面试可能是:讲讲 Transformer、手推 Attention、写个 Self-Attention 的 numpy 实现。今天,同样一个岗位,面试官打开简历后的第一句话大概率是——
“挑一个你做得最完整的项目,讲讲它的背景、目标、方案,以及效果是怎么量化的。”
这不是我编的。牛客上公开的作业帮大模型岗面经里,一面第一道非自我介绍的问题就是这个,且在多份面经里反复出现。另一份面经追问的是「RAG 的准确率、召回率有没有做过评测」「会话记忆用了滑动窗口 + 压缩,压缩会不会丢记忆,怎么解决」。
区别一目了然:考点从"你知不知道"变成了"你做没做过、量没量过、改没改过"。
而作业帮尤其典型:它不做通用模型的军备竞赛,它做的是把大模型塞进亿级用户的教育产品里。它要的人,不是能复现一篇论文的人,而是能回答下面三个问题的人:
- 一个 10 万条题库的 RAG 系统,怎么切分、怎么召回、怎么保证讲错的题不会误导学生?
- 一个陪伴式辅导 Agent,怎么在 3 秒内给出第一 token,同时成本控制在每次对话几厘钱?
- 上线之后效果掉了 3 个点,你怎么知道是哪一步掉的?
整篇文档围绕这三个问题展开。能把这三个问题答到 80 分,这个岗位你就有竞争力了。
补充一个背景数据:「AI Engineer(在预训练模型之上构建产品,而非训练模型)」已被多条 2026 年技术路线图独立认定为增长最快的开发者角色,且它们给出的学习顺序惊人一致——工程基础 → 原生 API → RAG → Agent → 评测与生产化。本手册的章节顺序与这个共识一致。
1. 岗位画像:三段真实 JD 的逐句翻译
先把真实 JD 摆上来,逐句翻译"潜台词"。以下三段均来自公开渠道的作业帮 27 届招聘信息(暑期实习 / 秋招)。
1.1 AI 应用算法工程师(核心职责原文切片)
- 参与作业帮搜索、对话等场景端到端系统设计与开发,包括但不限于 AI Agent、RAG 系统、意图识别与多轮对话等核心模块的构建与优化;
- 负责将大模型能力(LLM/多模态模型)与真实业务场景深度融合,面向生产力场景进行算法方案设计、原型验证与效果迭代;
- 参与 Prompt 工程、检索增强生成(RAG)、记忆管理等技术方向的探索与落地,推动 AI 技术从"能用"到"好用"的产品化进程;
- 设计并搭建量化评测体系,对算法效果进行系统性评估,沉淀可复用、可规模化的技术方法论;
- 关注 AIGC、智能体(Agent)、具身智能等前沿技术动态……
逐句翻译:
| JD 原文 | 真正的筛选信号 |
|---|---|
| “端到端系统设计与开发” | 不要只会调 API 的人。要能从前处理讲到上线,能画出完整链路图 |
| “AI Agent、RAG、意图识别、多轮对话” | 这四件事至少要有两件是亲手做过的,不是看过文章 |
| “从’能用’到’好用’的产品化” | Demo 不算数。面试官会问"你上线了吗?有人用吗?" |
| “记忆管理” | 多轮会话的上下文工程,是 2026 年的高频考点 |
| “量化评测体系” | 这一条是分水岭。90% 的候选人答不出自己的项目准确率是多少 |
1.2 优先考虑项(这才是真正的门槛)
- 使用 Claude Code、Cursor 等 AI Agent 完整搭建过系统优先考虑;
- 有实际的算法产品化经验,理解"可上线、可迭代、可控成本"的工程化落地思路;
- 对 AI Agent、RAG、Prompt 工程有实践经历或深入认知(课程项目、开源贡献、个人作品均可);
- 有搜索、推荐、对话系统、信息检索等方向的项目经验或研究背景;
- 在 NeurIPS / ICML / ICLR / ACL / EMNLP 等顶会发表过相关论文。
注意第 1 条:"用 AI Agent 完整搭建过系统"被写进了 JD 的第一条优先项。这在 2025 年之前是不可想象的。它释放的信号是——公司默认你能用 AI 编码工具把效率拉满,不再考察你"会不会用",而是考察你"用 AI 搭出来的东西有没有架构、有没有边界、有没有质量门"。
第 5 条(顶会论文)虽然写了,但它排序在最后,说明是 tie-breaker(同分时加码)而非 hard requirement。没有论文完全不必慌,前四条才是主战场。
1.3 大模型对话算法工程师(业务更聚焦)
- 针对 K12 教育解题对话场景进行 LLM 调优;
- 搭建与优化 RAG 链路;
- 构建 SFT/RLHF 高质量数据集;
- 建立自动化评测 Pipeline 并解决 Bad Case。
技能要求:熟悉 Transformer 结构、LLM 开发框架,具备 NLP 项目经验,了解 LoRA、P-tuning 等微调技术。
1.4 大模型应用开发工程师(全栈方向)
这一版 JD 把"全栈"摊开说了,技术栈写得非常具体,几乎是一份现成的学习清单:
- 后端:Python、Flask / FastAPI
- 前端:Streamlit / Gradio(快速原型),ToC 产品则需真正的前端能力
- 编排:LangChain / LangGraph(多步骤、有状态的 Agent 与工作流)
- 检索:RAG 全流程,非结构化数据处理,FAISS / Chroma 向量库
- 低代码迁移:Coze / Dify 的项目经验,并理解其底层 Agent 机制
- 部署调优:量化压缩(GGML / AWQ)、推理加速(vLLM / TensorRT-LLM)、Docker
1.5 三条隐藏筛选线
把三段 JD 放在一起做交叉对比,会浮出三条主线。这三条线,就是你准备的全部重心:
┌─────────────────────────────────────┐
│ 线一:端到端交付能力(能不能扛起一条链路)│
│ 文档解析 → 切分 → 索引 → 召回 → 重排 │
│ → 生成 → 校验 → 日志 → 回流 │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ 线二:量化评测能力(知不知道自己做得多好)│
│ 评测集 → 指标 → 基线 → 迭代 → 回归门 │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ 线三:工程与成本能力(能不能真的上线) │
│ 流式 → 缓存 → 降级 → 并发 → 成本控制 │
└─────────────────────────────────────┘
绝大多数候选人在第 1 条线内卷,少数人意识到第 2 条,几乎没人准备第 3 条——而第 3 条恰恰是"有实习经验"和"做过课设"的分界线。
2. 业务底盘:作业帮到底在用大模型干什么
准备一个公司,最忌讳的是把它当成"某个用大模型的公司"。你必须知道它拿大模型赚钱的具体姿势,因为面试官的所有场景题,都从这些姿势里长出来。
2.1 银河大模型:教育垂直领域的自研底座
- 2023 年 9 月 2 日,作业帮在服贸会正式发布自研银河大模型,定位是"覆盖多学科、多学段、多场景的教育大模型"。
- 公开榜单成绩:C-Eval 平均 73.7 分(榜首);CMMLU Five-shot 74.03 / Zero-shot 73.85(均第一);MMLU 71.88。是首个同时在 C-Eval、CMMLU 两大榜单平均分排名第一的教育大模型。
- 能力描述:多学科知识解答、创意写作、自主提问、陪伴式辅导。
- 落地载体:作业帮 App 等学习工具、智能硬件(学习机/学习笔)、智能图书、教育数字化。
- 团队持续在 ACL、AAAI、ICML、NeurIPS、CIKM 等会议发表工作。
对你的意义: C-Eval / CMMLU 是中文知识与学科能力的评测集。当 JD 里写"教育大模型评估指标体系设计"时,面试官脑子里装的很可能就是这类榜单的构造逻辑——分学科、分学段、分难度,而不是一个笼统的准确率。这是第 7 章第 5 题的题眼。
2.2 五个核心场景
从 JD 与公开信息归纳,作业帮的 LLM 应用集中在:
| 场景 | 技术形态 | 隐含难点 |
|---|---|---|
| 搜索(题目/知识点搜索) | Query 理解 + 检索 + 生成式摘要 | 口语化 query、公式与图片检索 |
| 对话(解题陪伴、答疑) | 多轮对话 + 记忆 + 工具调用 | 上下文膨胀、角色一致性 |
| AI 老师 / 伴学 | Agent + 长期记忆 + 教学策略 | 教学节奏、苏格拉底式提问而非直接给答案 |
| 智能学情诊断 | 结构化抽取 + 画像 + 推荐 | 从对话中抽取可计算的学生状态 |
| 批改评分 | 多模态理解 + 打分 Rubric + 一致性 | 评分稳定性、主观题 rubric 对齐 |
2.3 教育场景的四道"地狱级"约束
这是我认为最值得你花时间准备的部分,因为它是"通用 LLM 工程师"和"教育 LLM 工程师"的真正差别。面试时能主动说出这些,面试官会立刻把你和背八股的人区分开。
约束一:容错率极低。 电商客服答错一句,用户顶多再问一次;AI 老师讲错一个公式,是直接的教学事故。这决定了教育 RAG 不能只做"能召回",必须做引用校验 + 拒答机制——没有证据就宁可说"这题我建议你问老师"。
约束二:内容强多模态。 题目里有公式(LaTeX)、几何图形、手写体、表格、化学结构式。普通的 recursive character splitter 会把一道题切得七零八落。文档解析(尤其是公式和图表)是教育 RAG 的第一道坎,也是面经里反复出现的"落地难点"。
约束三:query 极度口语化、歧义大。 学生不会输入"求解一元二次方程的判别式",他们会输入"这个为啥算出来是负的啊"。这要求query 改写 / 意图识别必须做强,而不能直接拿原始 query 去向量召回。
约束四:答案不能直接给。 教学场景下,直接给答案=帮学生作弊。好的教育 Agent 应该分层提示、逐步引导(scaffolding)。这是一个纯产品判断力问题,也是"从能用 to 好用"的具体体现。
面试加分句:“教育场景里,模型的’有用’和’有害’往往只差一层引导策略。所以我在设计解题 Agent 时,把’是否直接给答案’做成了可配置的策略参数,按学段和题型分流。”
3. 能力模型:一个底座 + 五根支柱
我把目标能力画成下面这张图。请把它当成你的能力体检表,每一项给自己打 0-3 分。
┌──────────────────┐
│ 底座:LLM 原理 │
│ Transformer/分词 │
│ 采样/微调/量化/推理 │
└────────┬─────────┘
┌───────────────┬────────────┼────────────┬───────────────┐
│ │ │ │ │
┌────▼────┐ ┌──────▼─────┐ ┌────▼────┐ ┌────▼─────┐ ┌──────▼─────┐
│支柱1 │ │支柱2 │ │支柱3 │ │支柱4 │ │支柱5 │
│上下文工程│ │RAG 全链路 │ │Agent编排 │ │全栈工程 │ │评测与闭环 │
└─────────┘ └────────────┘ └─────────┘ └──────────┘ └────────────┘
│ │ │ │ │
└───────────────┴────────────┴────────────┴───────────────┘
│
┌───────────▼───────────┐
│ 横切:成本 / 延迟 / 稳定性 │
│ 贯穿所有支柱,面试必考 │
└───────────────────────┘
3.1 底座:LLM 原理(不需要很深,但不能有洞)
必须能口述清楚:
- Transformer 的 Encoder / Decoder 结构差异,Decoder-only 为什么成为主流
- Q/K/V 的维度与参数量计算(面经真题:给 hidden_size 和 head 数,算 QKV 参数量)
- 分词器:BPE 的原理、为什么中文 token 效率问题影响成本
- 采样参数:
temperature/top_p/top_k各自的机制,以及不同场景的推荐取值(创意写作高温度、解题低温度、结构化输出趋零) - KV Cache 是什么,它为什么决定了长上下文的成本曲线
- 微调谱系:Full FT → LoRA → QLoRA → P-tuning,各自的显存/效果 trade-off
- 量化:AWQ / GPTQ / GGUF 的基本思路与适用场景
- 推理引擎:vLLM 的 PagedAttention(这是面试高频,值得一读原文)
深度建议:这一层不需要你会手推反向传播,但必须能解释"为什么"。面试官问 LoRA,他要听的是"低秩假设 + 冻结主干 + 只训 A/B 矩阵 + 推理时可合并",不是公式。
3.2 支柱一:上下文工程(Context Engineering)
2025-2026 年最重要的一次范式转移,是从 Prompt Engineering 转向 Context Engineering。Anthropic 官方对该概念的定义是:在 LLM 推理过程中,如何筛选和维护一组最优的 token(信息)——不只是 prompt 里的,还包括工具返回、历史消息、外部数据等一切会进入上下文的东西。
核心心智模型有三层:
| 层次 | 内容 | 关键技巧 |
|---|---|---|
| 静态配置 | system prompt、工具定义、few-shot 例子 | 用 XML 标签或 Markdown 标题分块;指令写在"恰当的高度"(Goldilocks 区间);工具集裁到最小可用集 |
| 运行时检索 | 按需取数(Agentic 检索) | 让 Agent 持有轻量引用(文件路径、查询语句),运行时再加载;渐进式披露 |
| 长任务腾挪 | compaction、结构化笔记、子 Agent | 上下文逼近上限时高保真压缩;关键状态外置到 NOTES.md;子 Agent 隔离污染 |
必须掌握的三个现象与对策:
- Context Rot(上下文腐烂):上下文 token 增加时,模型准确召回信息的能力平滑下降而非突然失效。机制是 n 个 token 对应 n² 量级的两两注意力关系,注意力预算被稀释。Chroma 在 18 个主流模型上的系统测试证实了该趋势的普适性。
- Context Anxiety(上下文焦虑):模型接近窗口极限时会草草收尾、跳步骤。对策是彻底清空窗口 + 结构化交接材料,而不是带着快撑满的上下文硬走。
- Lost in the Middle:长上下文中位于开头和结尾的信息召回率显著高于中间部分。这直接决定了 RAG 重排后该如何摆放文档——高相关 chunk 放首尾。
Anthropic 自家 Agent 实践里可直接搬进项目的做法:CLAUDE.md 式项目记忆文件;Skill 列表最多占上下文 1%、每条描述 ≤ 250 字符(够做关键词匹配即可);system prompt 切成可缓存的固定前半 + 动态后半;大工具结果写磁盘只给文件路径;三级压缩 + 熔断器(连续失败 3 次即停)。
3.3 支柱二:RAG 全链路
这是作业帮岗位的绝对核心。请按下面这条链路准备,并确保你能画出这张图:
离线链路 在线链路
───────── ─────────
原始文档 ──► 抓取/上传 用户 query
│ │
├─► OCR / 版面解析 ┌─────▼──────┐
├─► 正文抽取、表格/公式解析 │ query 清洗 │
├─► 标题树构建(层级结构) │ query 改写 │
├─► 元数据抽取(学段/学科/难度/版本) │ 意图识别 │
├─► chunk 切分 └─────┬──────┘
└─► embedding + 倒排索引 + 向量索引 │
┌─────▼──────────┐
│ 混合召回 │
│ BM25 ┆ 向量 ┆ 图谱│
└─────┬──────────┘
│
┌──────────▼──────────┐
│ 权限过滤 / 去重 / 融合│
│ (RRF 或加权) │
└──────────┬──────────┘
│
┌─────▼─────┐
│ Rerank │
└─────┬─────┘
│
┌──────────▼──────────┐
│ 上下文组装(首尾摆放) │
│ + 压缩 │
└──────────┬──────────┘
│
┌─────▼─────┐
│ LLM 生成 │
└─────┬─────┘
│
┌──────────▼──────────┐
│ 引用校验 / 敏感过滤 │
│ 结构化字段抽取 │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ 日志 → Badcase → 回流 │
└──────────────────────┘
你必须能讲清楚的七个决策点:
| 决策点 | 关键问题 | 我的建议答法 |
|---|---|---|
| 切分 | 固定长度 vs 语义 vs 结构切分? | 教育场景优先结构切分(按标题树/题目/知识点),因为公式和题干不能被切断。可叠加 small-to-big(用小 chunk 检索、回原文大 chunk 生成) |
| Embedding | 用什么模型?中文效果? | 中文场景务必用中文优化的 embedding(bge 系列等),并自己测一组 query-doc pair 看召回率,别信排行榜 |
| 混合召回 | 为什么不能只用向量? | 专有名词、系统名、缩写、公式编号,向量召回容易漏;BM25 + 向量融合是工业界标配 |
| 融合策略 | 两路结果怎么合并? | RRF(Reciprocal Rank Fusion)最省心且鲁棒;有标注数据时可用加权或学习排序 |
| Rerank | 用什么?值不值? | Cross-encoder(bge-reranker 类)效果最好但有延迟成本;可用小模型 rerank + 大模型生成,这是经典的成本-效果分层 |
| 拒答 | 检索不到怎么办? | 必须有相似度阈值 + 拒答话术。教育场景里"体面地说不知道"比"编一个"重要一万倍 |
| 引用 | 怎么防幻觉? | 强制每条结论带 chunk 引用 ID,生成后做引用校验(判断该结论是否真的被引用 chunk 支持),无引用的结论直接标黄或剔除 |
前沿补充(说出来的加分项):
- Self-RAG(Asai et al., ICLR 2024):训练模型自主判断"是否需要检索"并生成 critique token,用反思控制检索时机。
- CRAG(Corrective RAG):引入轻量检索评估器,对检索结果做置信度判定,触发"正确 / 错误 / 模糊"三路不同处理(错误时转 web 检索或知识精炼)。
- Agentic RAG:把检索做成循环而非一次性步骤。2026 年的行业共识是——必须先埋点再上技术。一项对万级 Agent 轨迹的研究发现,强制"未读取至少一个检索文档不许 finalize"的确定性规则,能在受影响的运行上挽回 14.9–19.9 个准确率点;而给模型更大的思考预算,反而会让它在多跳数据集上的"零读取直接作答"比例上升最多 42.6 个百分点,净准确率下降。
- 成本常识:一次 3-4 步的 Agentic 循环,token 与延迟大约是单轮 RAG 的 3–5 倍。所以生产上主流是自适应路由:用分类器把大部分简单 query 走廉价快路径,只对少数复杂 query 启用 Agent 循环。
面试金句:“Agentic RAG 不是一个开关,是六种需要分别埋点验证的纪律。我会先测 skip-read 率,再决定要不要上循环。”
3.4 支柱三:Agent 与工作流
先背下来这句最小定义(Simon Willison 的收敛版本,已被广泛接受):
An LLM agent runs tools in a loop to achieve a goal.
(LLM Agent 在循环中调用工具以达成目标)
然后分清两类东西(Anthropic 的"Building Effective Agents"给出的核心区分):
| Workflow(工作流) | Agent(智能体) | |
|---|---|---|
| 控制流 | 预定义的代码路径 | 模型自主决定下一步 |
| 可预测性 | 高 | 低 |
| 适用场景 | 任务明确、步骤可枚举 | 开放问题、步骤不可预知 |
| 建议 | 优先用 Workflow | 只在必要时升级为 Agent |
这个区分极其重要,因为大部分候选人的项目其实根本不需要 Agent,硬上 Agent 反而暴露工程判断力不足。面试时说"我评估过后选择了工作流而不是 Agent,因为…"是加分的。
五种经典模式(必须能画能讲):
- Prompt Chaining:拆成串行子任务,每步之间可加程序化检查点(gate)
- Routing:分类器分流到不同专用路径(成本优化的第一杠杆)
- Parallelization:分段(独立子任务并行)或投票(同任务多次采样聚合)
- Orchestrator-Workers:中央 LLM 动态分解任务、派发给 worker、再综合
- Evaluator-Optimizer:一个生成、一个评估,形成迭代优化循环(写作/翻译/批改场景天然适配)
工具设计三原则(Anthropic 官方,建议原文照背):
- 工具应像优秀代码库里的函数:独立可用、错误处理优雅、用途一目了然
- 参数描述具体无歧义
- 最常见的失败模式是工具集臃肿、边界重叠——如果一个人类工程师都说不清该用哪个工具,就别指望模型能选对
Tool Use 协议层:
- Function Calling:模型原生能力,输出结构化的函数调用请求
- MCP(Model Context Protocol):把外部数据源和工具以标准协议暴露给 Agent 的开放标准。面试常问"MCP 和 Function Call 有什么区别"——答案是层次不同:Function Call 是模型输出侧的能力,MCP 是工具/数据供给侧的协议标准,解决的是 M×N 集成问题
- A2A(Agent-to-Agent):多 Agent 间的通信协议,了解即可
记忆管理(面经高频):
短期记忆:滑动窗口(保留最近 N 轮)
└─► 压缩:摘要 / 抽取式压缩
└─► 风险:压缩会丢信息 ──► 对策?
中期记忆:结构化笔记(NOTES.md / todo list),上下文外持久化
长期记忆:向量库 / 图谱 / 用户画像表,按需检索注入
"压缩会不会丢记忆,怎么解决"的标准答法见第 7 章第 17 题。
3.5 支柱四:全栈工程
这是"LLM + 全栈"里被严重低估的一半。很多人栽在这里。
后端(Python 侧):
# 一个能拿得出手的流式接口长这样(FastAPI 骨架)
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import asyncio, json, uuid
app = FastAPI()
async def token_stream(q: str, trace_id: str):
# 1) 意图识别(小模型,快)
intent = await classify_intent(q)
# 2) 混合召回
docs = await hybrid_retrieve(q, intent) # BM25 + 向量, 并发
# 3) Rerank(小模型)
top = await rerank(q, docs, k=5)
# 4) 组装上下文(高相关放首尾)+ 大模型生成
ctx = assemble(top)
async for delta in llm_astream(build_messages(ctx, q)):
yield f"data: {json.dumps({'delta': delta})}\n\n"
# 5) 生成完成后:引用校验 + 落日志(含 trace_id,供评测回流)
yield f"data: {json.dumps({'done': True, 'trace_id': trace_id})}\n\n"
@app.post("/chat")
async def chat(req: dict):
trace_id = str(uuid.uuid4())
return StreamingResponse(
token_stream(req["query"], trace_id),
media_type="text/event-stream",
headers={"X-Trace-Id": trace_id},
)
要点:async(LLM 应用是 I/O 密集)→ SSE 流式 → trace_id 贯穿全链路 → 结构化输出校验。
必须会的工程件:
| 组件 | 典型选型 | 你要能回答的问题 |
|---|---|---|
| 向量库 | pgvector(起步)/ Milvus(规模)/ FAISS(内嵌) | 为什么选它?量级多大?有没有瓶颈? |
| 关键词检索 | Elasticsearch | 输入一个 query,从分词到返回结果的完整过程(面经真题) |
| 缓存 | Redis | 语义缓存 vs 精确缓存;雪崩/击穿/穿透(面经真题) |
| 关系存储 | PostgreSQL / MySQL | 元数据、权限、会话、评测集 |
| 前端 | Next.js / React + TS(产品级);Streamlit / Gradio(原型) | 流式渲染、SSE/WebSocket 选型、中断生成 |
| 部署 | Docker + Compose / K8s | 镜像体积、健康检查、优雅退出 |
前端必须知道的三件事(ToC 产品的硬要求):
- 流式渲染:SSE 一行行喂给 UI,首 token 延迟(TTFT)比总延迟更影响体验
- 中断与重试:用户点"停止"要能真的中断生成并释放后端资源
- 乐观 UI / 骨架屏 / 错误态:AI 产品出错率高,错误态设计是产品力的一部分
3.6 支柱五:评测与数据闭环
这是我认为最该投入的一根支柱,因为它是差异化最大的地方。
一句残酷的实话:大多数 RAG 项目的失败不是检索失败,而是根本没有评测。 团队做了一个 Demo,看着很惊艳,没有任何回归检测机制,直到用户投诉才发现检索在相当比例的情况下是错的。
2026 年业界成熟的六类评测方法:
| 方法 | 用途 | 落地建议 |
|---|---|---|
| Golden Dataset(黄金集) | 人工/半人工标注的输入-期望输出对 | 100–500 条起步;合成 + 人工混合;包含对抗样本 |
| LLM-as-Judge | 用强模型按 rubric 给弱模型打分 | 必须在留出集上校准 judge;用明确的 rubric 而非靠 CoT 技巧;多个 judge 集成 |
| RAGAS 四元组 | RAG 专用无参考评测 | Faithfulness / Answer Relevancy / Context Precision / Context Recall |
| 对抗测试 | 越狱、提示注入、数据抽取 | Promptfoo red-team、Garak、DeepTeam |
| Prompt 回归测试 | 每次改 prompt/模型都跑一遍全量 | 100–500 条,CI 里设回归阈值卡 merge |
| Agent 轨迹评测 | 不只评最终答案,评整条执行路径 | 工具选择准确率、分解质量、循环终止率、P50/P90/P99 延迟 |
RAGAS 四个指标的确切含义(面试常考,务必背准):
- Faithfulness(忠实度):回答中的每一个事实主张,是否都被检索到的上下文支持?→ 抓的是"幻觉"
- Answer Relevancy(答案相关性):回答是否真正回应了提问?→ 忠实度高但相关性低 = 召回了准确但跑题的内容
- Context Precision(上下文精确率):召回的 chunk 中有多少比例是真正相关的?→ 低了说明召回在灌噪声
- Context Recall(上下文召回率):回答问题所需的信息是否都被召回了?→ 低了说明漏召
这四个指标的价值在于不需要人工标注参考答案,因此在日处理数万条 query 的生产系统里才跑得动。
评测者悖论(Evaluator Paradox):用 LLM 评 LLM。标准缓解手段是三条——冻结不动的黄金集、集成评分而非单一 judge、周期性人工抽检。
数据闭环(面试必讲):
线上日志 ──► 低分样本挖掘 ──► Badcase 人工归因 ──► 分类打标
│ │
│ ┌─────────────▼─────────────┐
│ │ 归因到具体环节: │
│ │ 解析错 / 切分错 / 召回错 │
│ │ / 重排错 / 生成错 / 拒答过严│
│ └─────────────┬─────────────┘
│ │
└──► 回流:进评测集(防回归) ◄──────────────────────┘
进训练集(SFT/DPO 数据)
“线上 badcase 会回流到评测集和训练集里,不会只改 prompt” —— 这句话是从公开的高分面经里摘出来的,它几乎就是面试官想听的标准答案。
3.7 横切:成本 / 延迟 / 稳定性
三个必背的数字与方法:
- 成本分层:意图分类用小模型、rerank 用小模型、只有最终生成用大模型。这是最立竿见影的成本杠杆
- Prompt Caching:把 system prompt / 长文档前缀固定住,命中缓存部分按折扣价计费(Anthropic 的做法是把 system prompt 切成"可缓存的固定前半 + 动态后半")
- 延迟预算:教育对话类产品的常见目标是 TTFT < 1s、P90 < 3s。P99 常常是 P50 的 5–10 倍(Agent 系统重尾),所以要盯分位数而不是均值
4. 知识体系地图(P0 / P1 / P2 分级)
优先级定义:P0 = 不会就挂;P1 = 会了加分;P2 = 用来拉开差距。
4.1 底座层
| 知识点 | 级别 | 达标标准 |
|---|---|---|
| Transformer 结构(Encoder/Decoder/Attention/FFN/LN) | P0 | 能画结构图,能算 QKV 参数量 |
| 分词(BPE)与 token 计费 | P0 | 能解释中文 token 效率对成本的影响 |
| 采样参数 temperature / top_p / top_k | P0 | 能给不同场景推荐取值并说明理由 |
| KV Cache 与上下文成本 | P0 | 能解释为什么长上下文不是"越大越好" |
| LoRA / QLoRA / P-tuning | P0 | 能说清低秩假设与显存 trade-off |
| SFT 数据构造流程 | P0 | 能讲数据清洗、去偏、模板统一、配比 |
| DPO / RLHF 基本思路 | P1 | 能说清偏好数据与 reward 的关系 |
| 量化 AWQ / GPTQ / GGUF | P1 | 能说清各自适用场景 |
| vLLM / PagedAttention | P1 | 能解释显存碎片问题的解法 |
| 多模态(VLM)原理 | P2 | 教育场景必考,能讲视觉编码器 + 投影层 |
4.2 上下文工程
| 知识点 | 级别 | 达标标准 |
|---|---|---|
| System prompt 分块与"恰当高度" | P0 | 能举例说明过严/过松两种失败 |
| Few-shot 的"多样典型"选取原则 | P0 | 能解释为什么不堆边界 case |
| Context Rot 与 Lost in the Middle | P0 | 能说出对策(精简 + 首尾摆放) |
| Compaction(压缩) | P0 | 能讲清"先最大化召回、再提升精度"的迭代法 |
| 结构化笔记 / Agentic Memory | P1 | 能举 NOTES.md 的例子 |
| 子 Agent 隔离上下文污染 | P1 | 能讲清何时用子 Agent |
| 渐进式披露(Progressive Disclosure) | P2 | 能讲 Skill 列表上限 1% 的设计逻辑 |
4.3 RAG 全链路
| 知识点 | 级别 | 达标标准 |
|---|---|---|
| 文档解析(OCR/版面/表格/公式) | P0 | 教育场景第一道坎,必须有方案 |
| Chunk 策略(固定/语义/结构/small-to-big) | P0 | 能按场景选型 |
| Embedding 模型选型与自测 | P0 | 能说"我自己测过召回率" |
| 混合检索 BM25 + 向量 | P0 | 能解释为什么向量不够 |
| 结果融合 RRF | P0 | 能口述 RRF 公式思想 |
| Rerank(Cross-encoder / LLM rerank) | P0 | 能讲成本-效果分层 |
| 上下文组装与摆放顺序 | P1 | 结合 Lost in the Middle |
| 拒答阈值与引用校验 | P0 | 教育场景刚需 |
| Hybrid(RAG + Long Context)路由 | P1 | 能讲何时该用长上下文 |
| Self-RAG / CRAG / Agentic RAG | P2 | 能说出适用边界与代价 |
| GraphRAG | P2 | 了解优势与"静态图谬误" |
4.4 Agent 与工作流
| 知识点 | 级别 | 达标标准 |
|---|---|---|
| Workflow vs Agent 的区分 | P0 | 能说明自己为何选 Workflow |
| 五种编排模式 | P0 | 能画图 + 各举一个业务例 |
| Function Calling 机制 | P0 | 能讲清结构化输出与执行循环 |
| 工具设计三原则 | P0 | 能背 + 能举反例 |
| MCP 与 Function Call 的区别 | P1 | 层次不同,M×N 集成问题 |
| 状态机编排(LangGraph) | P1 | 能讲节点/边/条件边/checkpoint |
| 记忆分层(短/中/长) | P0 | 见第 7 章第 17 题 |
| Human-in-the-loop 审批门 | P1 | 能说明哪些动作必须人工确认 |
| 循环预算与熔断 | P1 | 能给出 step cap 的经验值(10 步) |
| Multi-Agent 与 A2A | P2 | 了解即可 |
4.5 全栈工程
| 知识点 | 级别 | 达标标准 |
|---|---|---|
| Python async / typing / 测试 | P0 | LLM 应用 I/O 密集,async 是基本功 |
| FastAPI + SSE 流式 | P0 | 能写出上面的骨架 |
| Next.js / React + TS(或等价前端) | P0(全栈岗)/ P1(算法岗) | 能做流式渲染与中断 |
| Redis 缓存三问题(雪崩/击穿/穿透) | P0 | 面经真题,见第 7 章 |
| Elasticsearch 检索全流程 | P0 | 面经真题,见第 7 章 |
| 布隆过滤器 | P0 | 面经真题,见第 7 章 |
| pgvector / Milvus / FAISS | P1 | 至少精通一个 |
| Docker + 云部署 | P1 | 能把项目真的部署上线 |
| 可观测性(Langfuse / LangSmith / 自建 trace) | P1 | 能画出 trace 树 |
| 网关与多模型路由 | P2 | 了解 LiteLLM 一类方案 |
4.6 评测与闭环
| 知识点 | 级别 | 达标标准 |
|---|---|---|
| 黄金集构建(100–500 条) | P0 | 能说清覆盖分布与对抗样本 |
| RAGAS 四指标 | P0 | 能背定义 + 能定位问题环节 |
| LLM-as-Judge 校准 | P0 | 能说出三条缓解措施 |
| Prompt 回归 + CI 阈值门 | P1 | 能讲怎么卡 merge |
| Agent 轨迹评测 | P1 | 能讲工具选择准确率 |
| 分位数延迟监控 P50/P90/P99 | P1 | 能解释重尾 |
| 教育场景指标体系设计 | P0 | 见第 7 章第 5 题 |
| 数据闭环与 Badcase 归因 | P0 | 能画出闭环图 |
5. 90 天作战计划:用产出物换面试资格
原则:产出物 > 课程证书。招聘方读的是 GitHub 和可点开的链接,证书最多是同分时的 tie-breaker。
5.1 总表
| 阶段 | 时间 | 核心目标 | 唯一交付物 |
|---|---|---|---|
| Phase 1:打地基 | Day 1–20 | 打通 LLM 原生 API,理解框架在封装什么 | 一个不用任何框架的命令行 RAG(Python + pgvector) |
| Phase 2:做深 | Day 21–45 | 建评测、做优化,让指标真的动起来 | + 100 题评测集 + 优化前后对比报告 |
| Phase 3:做全 | Day 46–70 | 加 Agent、加前端、加流式、上线 | + Web UI + 一个工具调用 Agent(带审批门) |
| Phase 4:做响 | Day 71–90 | 把做过的事变成可被发现的证据 | README(当产品页写)+ 2–3 篇技术文章 + 演示视频 |
5.2 Phase 1(Day 1–20):原生 API 优先
为什么强调"不用框架":先用框架学 RAG,会造出"无法调试自己技术栈"的工程师。先裸写一遍,你才知道框架替你做了什么、什么时候该绕过它。
- 通读一家厂商 API 文档(Anthropic 或 OpenAI),跑通 chat / streaming / tool use / structured output
- 裸写一个 RAG:切分 → embedding → pgvector → 检索 → 合成
- 语料选你真正熟悉的(教材 / 题库 / 课程笔记),因为你要能判断答案对错
- 产出:可交互 CLI,回答带引用
5.3 Phase 2(Day 21–45):让指标动起来
这是决定面试分层的一步,而绝大多数人不会做。
- 建 100 题评测集:答案人工确认,按难度/题型分层(单跳 / 多跳 / 拒答 / 对抗)
- 跑基线,记录 Context Recall / Precision、Faithfulness、Answer Relevancy、TTFT、单次成本
- 逐项改进,每次只改一个变量:切分策略 → BM25 混合 + RRF → Rerank → 摆放顺序 → 拒答阈值
- 把失败也写下来——失败复盘是面试金矿
交付物就是一张表:
版本 改动 Recall@5 Faithfulness 拒答率 P90 单次成本 v0 基线(固定 512 切分 + 纯向量) 0.61 0.72 0% 2.1s ¥0.021 v1 + 结构切分 0.68 0.74 0% 2.0s ¥0.020 v2 + BM25 混合 & RRF 0.79 0.76 0% 2.3s ¥0.022 v3 + Rerank(小模型) 0.85 0.83 0% 2.6s ¥0.025 v4 + 拒答阈值 0.85 0.91 7% 2.6s ¥0.024 这张表就是你的 offer。
5.4 Phase 3(Day 46–70):做到能上线
- FastAPI 化,SSE 流式,trace_id 贯穿
- 前端:能打字、能流式出字、能中断、能点开引用看原文
- 加一个工具调用 Agent(如"根据错题自动生成同类练习并写入题库"),带人工审批门
- 加可观测:每次请求记录 token、耗时、召回 ID、评分,能画出 trace 树
- 加缓存(精确 + 语义)与降级策略(大模型超时切小模型)
- Docker 化,真的部署到公网(免费额度足够)
5.5 Phase 4(Day 71–90):让证据被看见
- README 当产品页写:一句话定位 → 演示 GIF → 架构图 → 评测表 → 我学到的三件事
- 写 2–3 篇技术文章,主题固定为"我测量到了什么、什么让我意外"
- 录 3 分钟演示视频
- 简历写法:
RAG 系统(已上线)· 评测集 100 题 · Recall@5 0.61→0.85 · Faithfulness 0.72→0.91 · P90 2.6s
一句话原则:Shipped and slightly ugly beats local and perfect.(上线且略丑,胜过本地且完美)
6. 三个能打的项目:架构、指标与答辩脚本
设计原则:对齐教育场景(作业帮的业务)、能讲清取舍(面试官问的是 why 不是 what)、有数字(没数字就是没做)。
项目 A:K12 解题 RAG 系统(最推荐,命中率最高)
一句话定位:面向初中数学/物理题目的检索增强解题助手,支持公式与图形解析,拒绝无依据作答。
架构要点:
┌─────────────── 离线 ───────────────┐
题目 PDF/图片
│
├─ OCR + 公式识别(LaTeX)
├─ 结构化:题干 / 选项 / 解析 / 知识点标签 / 难度 / 学段
├─ 按"题"为最小单位切分(不可切断!)
├─ 双层索引:BM25(题干文本) + 向量(题干+知识点)
└─ 元数据表:PostgreSQL
┌─────────────── 在线 ───────────────┐
学生 query(口语化)
│
├─ 意图识别:直接解题 / 追问 / 知识点讲解 / 同类题推荐
├─ Query 改写:口语 → 规范化学科表述(小模型)
├─ 混合召回 → RRF 融合 → Rerank(top5)
├─ 组装:最相关放首/尾 + 知识点约束
├─ 生成:**分层提示策略**(先提示 → 再给思路 → 最后给答案)
└─ 校验:引用校验 + 数值一致性校验(答案回代验算)
三个让人眼前一亮的设计:
- 以"题"为原子切分单位。教育语料的语义完整性要求远高于普通文档,一道题被切开就是废数据。
- 数值一致性校验:生成答案后,用代码执行/符号计算回代验证(比如解方程结果代回原方程)。这是教育场景独有的、极高价值的后处理。
- 分层提示策略(scaffolding):把"是否直接给答案"做成按学段/题型可配的策略参数,并做了一个"追问次数"信号——追问 3 次以上才给完整解析。
量化指标:Recall@5、Faithfulness、答案正确率(人工抽 100 题)、拒答率、TTFT、单次成本、“引导后自行解出率”(教学有效性指标)。
答辩脚本(90 秒版本):
“我做的是一个初中数学解题 RAG。最初版本就是把题库切块向量化,Recall@5 只有 0.61,而且经常把一道题的题干和解析切到两个 chunk 里,导致答案张冠李戴。我做的第一个改动是把切分单位从固定 512 字符改成以题为单位的结构切分,Recall 涨到 0.68。第二个改动是加 BM25 混合召回——因为学生 query 里大量是口语,纯向量召回经常漏掉含专有名词的题目,加 RRF 融合后到 0.79。第三个是加小模型 rerank,到 0.85。但我发现 Faithfulness 还是只有 0.83,归因后发现是模型在检索不到时会编,于是加了相似度阈值 + 拒答,Faithfulness 提到 0.91,代价是 7% 的拒答率——这个 trade-off 在教育场景我是接受的,因为讲错一道题比说’这题我不确定’严重得多。最后我加了数值回代校验,把计算类错误的检出率做到 X%。整个过程的 badcase 我都回流进了评测集。”
项目 B:陪伴式辅导 Agent(体现 Agent 编排与记忆)
一句话定位:一个能记住学生薄弱知识点、按苏格拉底式提问引导解题的长期伴学 Agent。
架构要点:
┌──────────────────────────┐
│ Router(小模型) │
│ 新题 / 追问 / 情绪 / 闲聊 │
└────────────┬─────────────┘
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌────────────┐ ┌──────────────┐ ┌────────────┐
│ 解题 Workflow│ │ 学情更新(工具)│ │ 情绪安抚 │
│ 检索→引导→验证│ │ 写画像表 │ │ 直接回复 │
└─────┬──────┘ └──────┬───────┘ └────────────┘
│ │
└────────► Evaluator-Optimizer 循环 ◄────┘
(生成 → 评估引导质量 → 迭代)
│
┌─────────▼──────────┐
│ Human-in-the-loop │
│ 写库/推送需审批 │
└────────────────────┘
记忆:
短期 = 滑动窗口(最近 6 轮) + 压缩摘要
中期 = session 级 NOTES.md(本轮已讲过什么、学生卡在哪)
长期 = 知识点掌握度画像表(SQL)+ 错题本(向量库)
三个亮点:
- Router 前置:把大部分请求分流到廉价快路径,只有真正需要多步推理的才走 Agent 循环——这是成本控制的正确答案。
- 记忆三层 + 压缩丢信息的对策:压缩后保留"学生在哪个知识点卡住、已提示过几次、用过的引导策略"这三个结构化字段,而不是自由文本摘要。结构化字段不会被摘要丢失。
- Evaluator-Optimizer:生成一个引导回复后,用 eval 模型判断是否"直接泄露了答案 / 是否太难 / 是否重复",不合格就重写一次,最多 2 轮。
量化指标:工具选择准确率、循环终止率、多轮一致性(10 轮后是否还记得薄弱点)、P50/P90/P99 延迟、单次会话成本、教学有效性(人工评分)。
项目 C:LLM 评测平台(差异化最大的一个)
这个项目在候选人里非常罕见,但它的命中率极高——因为"量化评测体系"直接写在 JD 里。
一句话定位:一个面向 LLM 应用的自动化评测与回归平台。
功能清单:
- 评测集管理(版本化、分层标签、对抗集)
- 三类评测器:规则评测(正则/JSON Schema/数值校验)、RAGAS 类指标、LLM-as-Judge(多 judge 集成)
- Judge 校准模块:在留出集上算 judge 与人工的一致性(Cohen’s kappa),不达标报警
- CI 集成:每次改 prompt/模型自动跑全量,指标低于阈值则卡 merge
- Badcase 看板:低分样本 + trace 回放 + 归因打标(解析/切分/召回/重排/生成/拒答)
- 成本与延迟看板:P50/P90/P99 + 单次成本趋势
为什么这个项目值钱:它证明你不只是"会做 AI 应用",而是理解 AI 应用如何被持续运维。这是初级候选人里极稀缺的视角。
7. 面试真题拆解:30 题的高分答法骨架
以下题目全部来自公开的作业帮面经(大模型算法、大模型应用开发、NLP 算法、秋招通用面),我按模块归类,每题给出「出题人意图 + 答法骨架 + 加分点」。
7.1 项目深挖类(决定生死)
Q1:挑一个你做得最完整、个人成长最多的项目,讲讲背景、目标、方案和效果。
- 意图:这是整场面试的锚点。后面 80% 的问题会从你的回答里长出来。你主动抛出的每个技术词,都是面试官的子弹——所以只抛你真懂的。
- 骨架:背景(一句话说清业务痛点)→ 目标(可量化)→ 方案(画链路图)→ 你的具体贡献(“我负责 X,不是我们”)→ 效果(数字)→ 复盘(哪里做错了,下次怎么做)
- 加分:主动说"这个项目提升最大的不是换模型,而是把检索、证据约束和数据闭环做扎实"。
Q2:做这个项目具体用了哪些方案或手段达成目标?
- 骨架:分层回答——文档侧(结构化解析、保留标题层级/元数据/权限标签)→ 检索侧(BM25 + 向量融合,说明为什么)→ 生成侧(强制基于证据、不许编造)→ 训练侧(意图分类用弱标签 + 人工抽检;SFT 样本用高质量问答 + 证据片段构造)→ 闭环(badcase 回流到评测集和训练集)
- 加分:“线上 badcase 会回流到评测集和训练集里,不会只改 prompt。”
Q3:整个系统的技术链路是怎样的?
- 骨架:分离线链路和在线链路两条讲。离线 = 抓取 → OCR → 正文抽取 → 表格解析 → 标题树 → chunk → embedding → 倒排 + 向量索引。在线 = query 清洗 → 意图识别 → 按意图分流检索策略 → 权限过滤 → 去重 → rerank → 上下文压缩 → 生成 → 引用校验/字段抽取 → 日志回流。
- 加分:说出具体存储分工(原始文档 → 对象存储;结构化文本与元数据 → PostgreSQL;向量 → Milvus;缓存 → Redis;全文 → ES),并说明为什么不用一个库。
Q4:系统的数据都存在哪些地方?
- 骨架:按"数据形态"分而不是按"数据库"分:原始文件(对象存储,保留版本可回溯)、解析后结构化文本与元数据(关系库)、向量(向量库)、倒排(ES)、会话状态(Redis)、日志与评测集(关系库 + 数仓)。
- 加分:提到权限标签必须跟着 chunk 走,否则检索会跨权限泄漏——这是 ToB/教育场景的真实风险。
7.2 RAG 专项
Q5:RAG 的准确率、召回率有没有做过评测?
- 意图:这一题是分水岭。答"没有"基本宣告出局。
- 骨架:直接报四个指标的定义与你的数值——Context Precision(召回的相关比例)、Context Recall(该召回的是否召回)、Faithfulness(答案是否被上下文支持)、Answer Relevancy(是否回应提问)。然后说**无参考(reference-free)**是关键,因为生产上不可能人工标注每条答案。
- 加分:补一句"我还用 Cohen’s kappa 在留出集上校准过 LLM judge 与人工的一致性"。
Q6:RAG 是多路检索吗?单路能不能做?
- 骨架:单路能做,且在单文档查找、小语料、延迟敏感场景是更优解(成本差 3–5 倍)。但多路在三类情况必需:①专有名词/缩写/编号密集(向量易漏);②同义表述差异大(BM25 易漏);③跨库(结构化 + 非结构化)。我的做法是先单路跑基线,看 badcase 归因,再决定要不要加路。
- 加分:不要上来就说"多路更好"。先测量再上技术是 2026 年的正确叙事。
Q7:两路检索的召回结果怎么融合?
- 骨架:首选 RRF(Reciprocal Rank Fusion)——按排名倒数加权求和,不需要归一化分数,对两路量纲不敏感,鲁棒性最好。公式:
score(d) = Σ 1/(k + rank_i(d)),k 常取 60。有标注数据时可升级为加权融合或学习排序(LTR)。 - 加分:提到"融合后要做去重和多样性控制,否则 top-k 全是同一文档的相邻 chunk"。
Q8:Rerank 用什么模型?模型选型一般有哪些考量?
- 骨架:选型考量四要素——效果(在你的评测集上的分数)、延迟(rerank 在关键路径上)、成本(单次调用 × QPS)、可控性(能否私有化/微调)。实践上常用小 cross-encoder(bge-reranker 类)做 rerank,大模型只做最终生成。
- 加分:“我会先测:把 rerank 换成更大模型,Faithfulness 涨多少、P90 涨多少,算单位收益。”,另外提到数据合规(教育数据能否出网)。
Q9:RAG 在教育场景的落地难点是什么?
- 骨架:四条——①知识专业性强、知识点关联复杂,检索易不准;②题目/公式/图表等多模态结构化提取难;③学生提问口语化、歧义多;④准确性要求极高,不能容忍幻觉。
- 加分:补"答案不能直接给"的教学约束,这是教育场景独有的。
Q10:怎么规避大模型的幻觉?
- 骨架:分层防御——输入层(检索质量、拒答阈值)、提示层(强制基于证据、无证据必须声明)、结构层(要求带 chunk 引用 ID)、校验层(生成后做引用校验/NLI 判断/数值回代)、闭环层(badcase 回流)。
- 加分:提到 Agentic RAG 带来的新型失败——合成幻觉(把两条不相关的召回拼出一个两条都不支持的论断),对策是逐条主张强制归因到具体 chunk。
Q11:微调和 RAG 的优劣势怎么选?
- 骨架:RAG 解决知识(时效、私有、可溯源、可热更新);微调解决行为(格式、风格、任务范式、领域术语)。RAG 成本低、可解释、易回滚;微调成本高、不透明、知识更新要重训。
- 加分:给出决策规则——先穷尽 RAG 和 prompting,再考虑微调;微调的真实动机通常是降本(把大模型的行为蒸馏到小模型)或极致的格式稳定性。
7.3 Agent 与记忆
Q12:介绍一下你的 Agent 项目,长短期记忆怎么做的?
- 骨架:三层——短期(滑动窗口 + 压缩)、中期(结构化笔记,上下文外持久化)、长期(向量库/画像表,按需注入)。
- 加分:讲清"什么时候写、什么时候读、由谁决定"。
Q13:会话记忆用了滑动窗口 + 压缩,压缩会不会丢记忆?怎么解决?
- 意图:这是真实面经题,非常高频。答不出"会丢"或者答不出对策,都不及格。
- 骨架:会丢。三条对策——①结构化字段优先:压缩时不是生成自由文本摘要,而是抽取固定 schema 的字段(学生薄弱知识点、已提示次数、用过的策略、未解决问题),结构化字段不会被摘要抹掉;②分层压缩:最近 N 轮保留原文,更早的只保留结构化摘要;③可回查:原始对话落库,摘要里保留指针(session_id + 轮次区间),需要时能按指针捞回原文;④关键决策双写:重要结论同时写入长期记忆表,不依赖压缩链路。
- 加分:提到 Anthropic 的 compaction 实践——先在复杂 trace 上以最大化召回为目标调 prompt,再迭代提升 precision;以及"上下文焦虑"(模型接近窗口上限会跳步骤),对策是彻底清空窗口 + 交接材料而非硬撑。
Q14:Agent 的主要模块有哪些?
- 骨架:感知(输入解析/意图路由)→ 规划(任务分解)→ 记忆(短/中/长)→ 工具(调用执行)→ 反思(评估与自我修正)→ 终止(停止条件与预算)。
- 加分:补"可观测"——每个模块都要打点,否则线上出了问题无法归因。
Q15:怎么提高 Agent 的效果?最大的难题是什么?
- 骨架:先归因再优化——把失败拆成"工具选错 / 参数传错 / 检索不到 / 推理错误 / 循环不收敛"五类,统计各自占比,再对症下药。常见有效手段:工具集裁剪(去重、消歧义)、给工具加更具体的参数描述、加确定性闸门(如"未读取不得 finalize")、设 step cap(经验值 10 步)、把簿记工作交给小模型。
- 加分:引用那条万级轨迹研究的发现——更大的思考预算反而让模型更自信地跳过证据,导致"零读取直接作答"比例上升。所以"多想"不等于"更好"。
Q16:有没有做过 Agent 评测?
- 骨架:轨迹评测而非只评最终答案。指标包括——工具选择准确率(对/错工具 + 参数正确率)、分解质量(子问题是否覆盖全部答案范围)、循环终止率(到 MAX_ITER 未收敛的比例)、端到端延迟分位数、每步成本。
- 加分:“评考试不能只看总分,要看每一行的解题过程。”
Q17:Function Call 是怎么训练的?MCP 和 Function Call 有什么区别?
- 骨架:Function Call 训练 = 构造"对话 + 可用工具 schema + 正确的函数调用 JSON"的监督数据,让模型学会在何时、以何种参数发起调用,并把调用结果接回上下文继续推理。MCP 是协议层:把工具与数据源以统一标准暴露给 Agent,解决 M 个 Agent × N 个工具 的集成爆炸。一个是模型能力,一个是供给标准,层次不同、互补。
- 加分:引用 Toolformer 的思路——模型可以自学"什么时候该调用什么 API"。
7.4 模型与训练
Q18:SFT 的核心流程、数据构造要点?
- 骨架:流程 = 数据准备 → 基座选择 → 微调策略(LoRA / 全参)→ 训练配置 → 评估 → 部署。数据要点 = 质量 > 数量、去偏(去除长度/格式/来源偏差)、模板统一、多样性、配比(通用能力防遗忘)、要有验证集且验证集与训练集的难度分布一致。
- 加分:“我做过数据配比的消融——纯领域数据会让通用能力掉 X 个点,掺入 20% 通用数据后恢复到 Y。”
Q19:LoRA / P-tuning 了解吗?
- 骨架:LoRA = 低秩假设,冻结主干,只在注意力层旁挂 A(r×d)、B(d×r) 两个低秩矩阵,只训这两个,显存大幅下降,推理时可合并回原权重、零额外延迟。P-tuning v2 是加可学习的连续 prompt 向量。QLoRA = LoRA + 4bit 量化基座。
- 加分:说清 rank 的选择经验(8/16/32 怎么选)与 target modules 的选择。
Q20:CoT(思维链)的原理、价值与优化方法?
- 骨架:原理 = 让模型输出中间推理步骤而非直接给结果,把一次困难的多步推理拆成多次简单的单步推理。教育场景价值 = 可解释性本身就是产品价值(学生要看的是思路不是答案)。优化方法 = 自洽性(self-consistency,多次采样投票)、思维链蒸馏、结合工具调用(把计算外包给代码)、更长的推理预算。
- 加分:提到"更长的推理预算在 Agentic RAG 里可能有反效果",显示你知道边界。
Q21:Prompt ReAct 是什么?怎么实现的?
- 骨架:ReAct = Reasoning + Acting 交错。让模型循环输出
Thought → Action → Observation,把推理轨迹和外部工具返回交替写入上下文,直到给出答案。实现上就是:一个循环 + 解析模型输出中的 action + 执行工具 + 把 observation 追加回消息列表 + 达到终止条件退出。 - 加分:知道 ReAct 的原始论文(Yao et al., ICLR 2023)与它相比纯 CoT 的收益来源(可纠正的事实性)。
Q22:BERT 的预训练任务与设计思路?
- 骨架:MLM(掩码语言模型)+ NSP(下一句预测)。设计思路 = 用双向 Transformer Encoder 同时利用左右上下文,解决 GPT 类单向建模的问题。Q/K/V 参数量:
W_Q, W_K, W_V ∈ R^{d×d},各d²(含偏置则d²+d),加上输出投影d²,每层注意力共4d²;FFN 是2 × d × 4d = 8d²。 - 加分:能现场算数,并说明 multi-head 只是把 d 切成 h 份,总参数量不变。
Q23:从大模型切到小模型主要是为了响应时长吗?实际效果对比怎么样?
- 意图:真实面经题。考的是你有没有真的做过权衡,而不是跟风。
- 骨架:动机通常有三个——延迟、成本、可控性(私有化/合规)。效果对比必须分任务报:在意图分类、query 改写、rerank 这类窄任务上,微调后的小模型往往能追平甚至超过通用大模型;但在开放式讲解、多步推理上差距明显。所以正确做法是任务级路由:窄任务用小的,难任务用大的。
- 加分:给出对比数字(“意图分类准确率大模型 0.93 vs 蒸馏小模型 0.91,但延迟从 800ms 降到 90ms,成本降 90%,我选了小模型”)。
7.5 工程八股(全栈岗必考,算法岗也常考)
Q24:缓存雪崩、缓存击穿、缓存穿透的区别与应对?
| 问题 | 现象 | 对策 |
|---|---|---|
| 雪崩 | 大批 key 同时过期,请求全打到 DB | 过期时间加随机抖动;多级缓存;预热;熔断降级 |
| 击穿 | 单个热点 key 过期,瞬间高并发打穿 | 互斥锁重建;逻辑过期(永不过期 + 异步刷新) |
| 穿透 | 查询根本不存在的数据,缓存永不命中 | 布隆过滤器;缓存空值(短 TTL);参数校验 |
Q25:布隆过滤器判断存在和不存在分别是什么业务逻辑?底层数据结构?
- 骨架:底层 = 一个很长的 bit 数组 + k 个独立哈希函数。写入时把 k 个位置置 1;查询时 k 个位置全为 1 则"可能存在",任一为 0 则"一定不存在"。所以业务上:判定"不存在" → 直接返回,绝对可信;判定"存在" → 还要再查一次真实存储(有假阳性)。不支持删除(除非用 Counting Bloom Filter)。
- 加分:在 LLM 应用里的用法——语义缓存前置的精确去重、以及防止恶意构造不存在的 query 打穿检索层。
Q26:短链接生成时哈希冲突怎么处理?
- 骨架:①在原始长链后拼随机盐/自增 ID 再哈希,降低碰撞概率;②哈希后查库,冲突则追加 salt 重算(开放寻址思路);③完全绕开哈希:用发号器(Snowflake / DB 自增)生成全局唯一 ID,再 base62 编码成短码——这是工业界主流,天然无冲突。
- 加分:base62 编码 + 分库分表下的发号器设计。
Q27:输入 ES 一个 query,从输入到返回中间发生了什么?
- 骨架:客户端 → 协调节点 → 根据 routing 定位分片 → 各分片本地执行:先查 index/倒排表(term → posting list)→ 用 skip list / FST 加速 → 取交集/并集 → 算 BM25 打分 → 取 top-N → 各分片结果回协调节点 → 全局排序、聚合、fetch 原文 → 返回。
- 加分:说清 query phase 与 fetch phase 两阶段、分词器与分析链(character filter → tokenizer → token filter)对召回的直接影响(这直接关联你 RAG 里的 BM25 调优)。
Q28:三数之和 / 字符串转 IP / 最大的 K 个数(手撕)
- 这三类是作业帮面经里出现过的原题。必须能白板写出无 bug 版本,重点是边界处理(去重、前导零、快排分区的边界)。建议用目标语言刷 3 遍以上,做到肌肉记忆。
7.6 开放题
Q29:为什么推荐使用 RAG?
- 骨架:四条——①知识时效(训练数据的截止日问题);②私有知识(企业/题库数据不在模型里);③可溯源(每条结论有出处,教育/医疗/法务刚需);④成本(更新知识只需重建索引,不需重训)。
- 加分:补边界——长上下文模型没有消灭 RAG,2026 年的生产主流是混合式:检索负责缩小语料,长窗口负责在缩小后的集合上推理。
Q30:你怎么看待当下 LLM 应用的趋势?你的职业规划?
- 骨架:三个观察——①重心从"训练模型"转向"把模型接进系统"(Context Engineering 取代 Prompt Engineering);②竞争壁垒从"用了什么模型"转向"有没有评测闭环和数据飞轮";③Agent 从"能跑 demo"转向"能可靠地长时间运行"(记忆、压缩、熔断、可观测)。规划上,把自己定位成"能把 AI 能力工程化落地的人",而不是"追新模型的人"。
- 加分:结合教育——“我认为教育 AI 的下半场不在模型能力,而在教学策略的工程化:怎么把’好的老师怎么教’变成可配置、可评测、可迭代的系统。”
8. 十大致命坑:我见过太多人栽在这里
坑 1:只做 Demo,不上线。
"我在本地跑通了"在 2026 年不是成果。找一个免费额度,把它部署到公网,让别人能点开。上线会逼你处理超时、并发、异常、成本,这些恰恰是面试官要听的东西。
坑 2:项目没有数字。
“效果还不错”“提升明显”= 没做。哪怕评测集只有 50 题,也要有前后对比表。数字是候选人与候选人的分界线。
坑 3:先学框架,再学 API。
用 LangChain 学 RAG,会造出无法调试自己技术栈的工程师。正确顺序:裸 API → 理解封装 → 用框架 → 必要时绕过框架。
坑 4:把所有技术都堆上。
向量库 + 图谱 + Agent + 多 Agent + 微调全堆上去,看起来很炫,但说不清哪个改动带来了多少收益。面试官宁可听"我加了 BM25,Recall 从 0.68 到 0.79",也不听"我用了 12 个组件"。
坑 5:把八股丢了。
LLM 应用岗确实八股少了,但绝不是没有。缓存三问题、ES 检索流程、布隆过滤器、手撕算法,都在真实面经里出现过。挂在八股上的候选人,每年都有。
坑 6:硬上 Agent。
大部分业务问题用 Workflow 就能解决,而且更可控、更便宜。能说出"我评估过,这里不该用 Agent"的人,比上来就上 Agent 的人值钱。
坑 7:不说失败。
只讲成功经验的候选人可疑。讲一个你踩过的坑、以及你怎么定位它的,可信度立刻翻倍。把失败复盘写进 README。
坑 8:简历吹过头。
简历可以让 AI 润色,但必须自己逐条核对——"熟悉"和"了解"的差别,三分钟内就会被问穿。被戳穿一次的代价远大于少写一个技能。
坑 9:只准备"AI 的部分"。
"LLM + 全栈"里,全栈是很多人放弃的一半,也恰恰是差异化的一半。面试里问 ES、问缓存、问流式、问前端,答不上来会非常伤。
坑 10:不研究公司的业务。
面试官问"你怎么看教育场景的难点",你答的是通用 LLM 的通用难点,那就说明你海投了。花两小时研究银河大模型、作业帮的产品线、教育场景的四道约束,回报率极高。
9. 简历与自我介绍:把同样的经历讲出 2 倍价值
9.1 项目描述的写法
❌ 常见写法(无效):
负责 RAG 系统的设计与开发,使用 LangChain、Milvus、FastAPI 等技术,实现了智能问答功能,效果良好。
✅ 高转化写法:
K12 解题 RAG 系统(独立完成,已部署上线)
- 面向初中数学题库构建检索增强解题助手,支持公式解析与分层提示引导
- 以"题"为原子切分单位 + BM25/向量混合召回 + RRF 融合 + 小模型 Rerank
- 自建 100 题分层评测集(含拒答集与对抗集),Recall@5 0.61 → 0.85,Faithfulness 0.72 → 0.91
- 引入引用校验与数值回代校验,计算类错误检出率 X%;拒答率 7%(主动 trade-off)
- 技术栈:Python / FastAPI(SSE 流式) / pgvector / Elasticsearch / Next.js / Docker
- 线上 badcase 全量回流评测集,形成"归因 → 修复 → 回归"闭环
差别在哪? 数字、取舍、边界、闭环。四样齐了,这段经历就是可追问的、可信的、可量化的。
9.2 自我介绍(60 秒版本)
"面试官好,我是 XX,XX 大学 XX 专业 27 届。我的方向是大模型应用工程,简单说就是三件事:把检索做准、把 Agent 做稳、把效果量化。
过去 X 个月我独立做过一个 K12 解题 RAG 系统,已经部署上线。最有价值的部分不是搭起链路,而是建了评测集之后做的那轮优化——我发现原始方案 Recall@5 只有 0.61,通过结构切分、混合召回、Rerank 和拒答机制,一步步做到 0.85,每一步都有数字记录。
工程上我前后端都能写,Python/FastAPI 做流式后端,TypeScript/Next.js 做前端,Docker 部署。我比较在意的一点是成本和延迟——我会把意图识别和 Rerank 用小模型,只有最终生成用大模型。
我对作业帮这个岗位特别感兴趣的原因是:教育场景是我认为对准确性要求最高、也最有社会价值的 LLM 落地场景之一,讲错一道题的代价远大于答错一个闲聊。我很想参与把大模型真正变成’好老师’这件事。"
这段自我介绍藏了五个钩子,每一个都是面试官大概率会追问的点:评测集、拒答机制、流式、小模型分层、教育场景的准确性。你主动选择战场,而不是被动挨打。
9.3 反问环节(别浪费)
问这几个,都能体现你的段位:
- “团队现在 RAG 链路里,badcase 归因主要卡在哪个环节?”
- “教育场景的效果评测,是人工为主还是有自动化的 pipeline?”
- “从模型能力到产品体验之间,团队目前最大的瓶颈是延迟、成本,还是效果稳定性?”
10. 资源索引:论文 / 官方文档 / 开源项目
10.1 必读论文(按优先级)
基础(P0)
- Vaswani et al., Attention Is All You Need, NeurIPS 2017 — Transformer 的起点
- Wei et al., Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, NeurIPS 2022 — CoT
- Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, NeurIPS 2020 — RAG 的开山之作
- Hu et al., LoRA: Low-Rank Adaptation of Large Language Models, ICLR 2022 — 参数高效微调
- Liu et al., Lost in the Middle: How Language Models Use Long Contexts, TACL 2024 — 长上下文的位置偏差,直接影响你怎么摆放 chunk
进阶(P1)
6. Yao et al., ReAct: Synergizing Reasoning and Acting in Language Models, ICLR 2023 — Agent 的奠基范式
7. Schick et al., Toolformer: Language Models Can Teach Themselves to Use Tools, NeurIPS 2023 — 工具调用的自主学习
8. Rafailov et al., Direct Preference Optimization, NeurIPS 2023 — DPO
9. Es et al., RAGAS: Automated Evaluation of Retrieval Augmented Generation, 2023 — RAG 评测四指标
10. Zheng et al., Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena, NeurIPS 2023 — LLM 评测的偏见与缓解
11. Kwon et al., Efficient Memory Management for LLM Serving with PagedAttention, SOSP 2023 — vLLM 的核心
前沿(P2)
12. Asai et al., Self-RAG: Learning to Retrieve, Generate, and Critique, ICLR 2024 — 自适应检索与自我批判
13. Yan et al., Corrective Retrieval Augmented Generation (CRAG), 2024 — 检索质量评估与纠正
14. Khattab et al., DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines, 2023 — 把 prompt 变成可编译、可优化的程序,这是评测自动化的下一站
15. 2026 年 arXiv 上关于 Agentic RAG 的一系列工作(如把检索-生成循环建模为 POMDP 的 SoK、层次化检索接口的 A-RAG、失败感知修复的 Doctor-RAG 等)——了解趋势即可,面试时提一句"我关注到今年学界开始用控制论框架形式化 agentic RAG"就足够
10.2 官方文档与实践(比论文更实用)
- Anthropic:Building Effective Agents — Workflow 与 Agent 的区分、五种编排模式,本文第 3.4 节的主要来源
- Anthropic:Effective Context Engineering for AI Agents — 上下文工程的三层心智模型、Context Rot、Compaction
- Anthropic:Writing Effective Tools for Agents — 工具设计三原则
- Anthropic Cookbook / OpenAI Cookbook — 可直接抄的实战代码
- Model Context Protocol (MCP) 规范 — 协议层必读
- LangGraph 文档 — 状态机编排、checkpoint、human-in-the-loop
- pgvector 文档 — 最便宜的向量库入门(你本来就会 SQL)
- Ragas / DeepEval / Promptfoo 文档 — 评测三件套
10.3 开源项目(读了能立刻提段位)
| 项目 | 学什么 |
|---|---|
| vLLM | 推理引擎的显存管理与批处理 |
| LangGraph | 有状态 Agent 的状态机抽象 |
| Ragas / DeepEval | 评测指标的实现细节 |
| Langfuse / Helicone | AI 应用的可观测性设计 |
| Claude Code 的设计思想(公开分享) | 上下文分层记忆、三级压缩、熔断器、Skill 渐进披露 |
| LlamaIndex | 各类检索与索引抽象,适合对照理解 |
10.4 书籍与课程
- 《动手学深度学习》(D2L)—— Transformer 部分足够
- Chip Huyen, AI Engineering(中文版《AI 工程》)—— 目前最系统的 LLM 应用层工程教材
- 各厂商官方 Prompt Engineering 指南(免费,且比绝大多数付费课好)
11. 结语与自查清单
回到开头那三个问题。如果你读到这里,请合上文档,试着口头回答一遍:
- 一个 10 万条题库的 RAG 系统,怎么切分、怎么召回、怎么保证讲错不会误导学生?
- 一个陪伴式辅导 Agent,怎么在 3 秒内出第一个 token,同时把成本压到每次对话几厘钱?
- 上线之后效果掉了 3 个点,你怎么知道是哪一步掉的?
能答上来,说明你已经不是"学过 LLM"的人,而是"做过 LLM 系统"的人。这个身份的转变,才是 27 届秋招里最稀缺的东西。
最后,一句可能有点反直觉的忠告:不要追求"学完再投"。 这个领域三个月一变,你永远学不完。正确的节奏是——做完一个能讲清楚取舍的项目,就立刻投。面试本身是最好的学习,你会从每一次追问里精确地知道自己缺什么,然后带着问题回来补,效率是闭门造车的数倍。
出发前自查清单(打印出来,逐项打勾)
知识与原理
- 能口述 Transformer 结构并算出 QKV 参数量
- 能解释 temperature / top_p / top_k 的机制与场景取值
- 能讲清 LoRA 的低秩假设与推理时可合并
- 能说出 KV Cache 与上下文成本的关系
- 能解释 Context Rot 与 Lost in the Middle 及对策
- 能背出 RAGAS 四个指标的定义
工程能力
- 能裸写一个不用框架的 RAG(切分→嵌入→检索→合成)
- 能用 FastAPI 写出 SSE 流式接口,trace_id 贯穿
- 能讲清缓存三问题与各自对策
- 能讲清 ES 从 query 到结果的完整过程
- 能做前端流式渲染与中断
- 能用 Docker 部署并对外开放访问
项目证据
- 有一个已上线的可点开链接
- 有 100 题以上评测集,且分布分层
- 有优化前后的对比数据表
- 有至少一次失败复盘
- 有成本与延迟的分位数数据
- 有 badcase 回流闭环
面试准备
- 90 秒项目答辩脚本能脱稿讲
- 30 道真题的骨架答法过了一遍
- 手撕题(三数之和 / 字符串转 IP / Top-K)能白板写对
- 反问环节准备了 3 个问题
- 研究过作业帮的产品线与银河大模型
- 能说出教育场景的四道约束
心态
- 没把握的问题敢于说"不会",并说明你会怎么去查
- 简历上每一条都能扛住三轮追问
最后一件事:如果你觉得这份手册有用,请把它转给同样在准备 27 届秋招的同学。一个人闷头准备的效率和一群人对着打,差得不是一点半点。
祝拿到心仪的 offer。
本文基于 2026 年 10 月公开可查的招聘信息、面试经验分享与业界技术资料整理撰写。文中引用的岗位描述来自公开渠道的作业帮 27 届招聘公告,面试题目来自公开的候选人面经分享。技术观点部分参考了 Anthropic 官方工程博客、主流 LLM 评测框架文档及相关学术论文。所有数据均以上述公开来源为准,请以官方最新信息为准。
更多推荐



所有评论(0)