06 / 面试题库
32 道面试题:回答要点与追问
配套基础理论见 09_常规理论题库.md,复习时段分配见 10_理论复习与速记.md。本文件继续用于项目深挖。
使用方法:每天选 2 题,各用 2 分钟口述,再用项目代码或数据支撑。以下是准备框架,不是可直接背诵的个人经历。面试表达必须区分“已经实现”“实验验证”“设计设想”。
Agent 与模型应用
1. 什么场景需要 Agent,什么场景固定工作流更合适?
要点:任务路径是否可预先定义、是否要根据中间结果选择工具、允许的成本与错误代价。用主项目说明查订单和审批为何有确定边界。追问:用一个分类器加规则是否已经足够?
2. 一个最小工具调用循环包含什么?
要点:上下文、模型动作、参数校验、授权、工具执行、观察结果、终止条件与预算。追问:模型连续请求同一个失败工具时怎么办?
3. 工具调用和结构化输出通过校验,是否说明结果正确?
要点:格式正确只说明符合 schema,订单是否存在、用户能否访问、结论是否有证据仍需验证。追问:结构化字段里出现虚构订单号怎么办?
4. 如何设计好一个工具?
要点:单一清晰职责、可理解参数、有限返回、稳定错误语义;读写能力与审批边界清楚。用实际工具定义的改动做例子。追问:把十个相似工具合成一个万能工具有什么代价?
5. MCP 在你的系统中解决什么?
要点:工具与上下文的标准化连接,便于客户端发现和调用;不自动替代应用授权、业务幂等和评测。追问:只有一个固定工具服务时,直接 HTTP 是否足够?
6. 什么时候使用多 Agent?
要点:存在可独立分工、不同工具或上下文需求时再验证收益;比较通信成本、状态管理与错误传播。追问:如何用实验说明多个 Agent 比单个执行器更好?
7. 更换模型怎么做回归?
要点:冻结任务与配置、验证能力兼容、保存所有尝试、检查关键不变量和成本变化。追问:总体成功率上升,但某个重要类别下降,是否发布?
8. 如何停止失控循环?
要点:最大步数、总耗时、调用预算、重复动作检测、取消与明确失败状态;限制放在执行层。追问:模型结束了,后台工具还在运行怎么办?
上下文与检索
9. 短期状态、长期记忆和知识库有何区别?
要点:任务当前状态、跨会话偏好与事实、外部可检索资料分别管理;说明所有者、更新与删除策略。追问:错误记忆会不会持续污染后续任务?
10. 上下文过长如何处理?
要点:先保留关键结构化事实、按需检索、压缩旧信息;评测关键信息保留与成本。追问:摘要把用户刚修改的订单号丢了,怎么检测?
11. RAG 回答错误如何定位?
要点:检查问题解析、权限过滤、候选召回、排序、上下文截断、生成与引用,逐层隔离。追问:正确文档已召回,为何答案仍错?
12. 为什么做关键词与向量检索对照?
要点:订单号、精确术语和语义改写的需求不同;用同一标注集判断收益,不靠技术名称推断效果。追问:向量检索漏掉精确编号如何改善?
13. 如何选择 chunk 大小和 top-k?
要点:结合文档结构、证据完整性、上下文预算和标注集实验;保持其他变量可比。追问:top-k 增加后成功率下降可能是什么原因?
14. 如何处理新旧知识与冲突?
要点:文档版本、生效时间、来源权威性和租户约束;冲突无法消解时明确说明或交人工。追问:如何让历史任务仍能回溯当时使用的政策?
15. 为什么仅核对引用 id 不够?
要点:真实存在的引用也可能不支持对应结论;需要证据支持性判断和人工抽查。追问:如何设计引用评分规则?
16. 向量检索的权限过滤怎么设计?
要点:认证上下文独立于模型;数据进入模型前必须过滤;缓存和重排也保留权限边界。追问:过滤后结果不够 k 条如何处理?
工程与可靠性
17. checkpoint 能否保证外部操作只执行一次?
要点:不能自动保证;节点可能重放,本地状态与外部副作用可能不在同一事务。追问:外部写入成功但 checkpoint 未更新,恢复时怎么办?
18. 幂等键应该如何设计?
要点:对应一次业务操作,在网络重试时保持不变;绑定身份与内容;相同键不同内容返回冲突。追问:同一订单允许两次不同售后时如何区分?
19. 为什么“先查询没有,再插入”不够?
要点:并发请求可同时读到不存在;需要数据库唯一约束、事务或适合业务的原子操作。追问:如何测试竞争条件?
20. 用户确认应绑定什么?
要点:具体动作、目标对象、参数版本、确认者与有效状态;内容变化重新确认。追问:旧确认被重放怎么办?
21. 哪些错误可以重试?
要点:区分瞬时故障、限流、参数错误、权限错误与结果未知;读操作和写操作策略不同。追问:写接口超时是否等于写入失败?
22. 多租户隔离要覆盖哪些地方?
要点:接口、数据库、检索、checkpoint、缓存、工具、日志与导出路径。追问:cache key 只有 query 会造成什么问题?
23. 如何处理工具返回中的提示注入?
要点:来源与权限分离,不让检索文字改变执行授权;限制可用工具与写入;把攻击场景加入测试。追问:只在提示词写“不要被攻击”是否足够?
24. 如何设计可观测性?
要点:关联 task_id、模型调用、工具调用、状态变化、耗时和错误;必要数据脱敏;不需要暴露隐藏思维链。追问:如何从一个用户投诉定位到具体失败调用?
评测、系统设计与业务
25. 你如何定义任务成功?
要点:先定义最终环境结果、语义正确性和关键约束;不能只看模型说“成功”。追问:模型说已建单,数据库没有记录,如何判分?
26. 规则评分、模型评分和人工评分如何搭配?
要点:确定性结果用规则;语义判断用清楚 rubric 并做人工校准;评估评分器自己的误差。追问:模型裁判偏爱长答案怎么办?
27. 如何避免评测泄漏?
要点:答案不传给待测系统,开发与冻结数据分离;冻结集曝光后改为回归集。追问:同一案例改几个字算独立样本吗?
28. 为什么报告多次运行和分子分母?
要点:模型与执行环境存在波动,小样本百分比不稳定;保留失败和超时。追问:20 题多过一题能证明明显改善吗?
29. 单次成功任务成本怎么算?
要点:包含失败、重试、检索等约定范围内成本,再除以成功次数;明确货币、价格日期和未知项。追问:用更便宜模型导致成功率下降,怎么比较?
30. 如何设计服务 100 个企业的 Agent 系统?
要点:先问并发、长任务比例、数据隔离与延迟要求;再谈入口鉴权、队列、执行器、状态存储、工具层和评测。追问:哪个组件先成为瓶颈,依据是什么?
31. 如何讲清一次技术优化的业务价值?
要点:说明用户任务、基线、变化、数据采样、对照条件和局限;个人实验不要声称线上 ROI。追问:效果改善可能只是测试集变简单吗?
32. 为什么你能胜任这一档岗位?
要点:用独立负责范围、复杂问题处理、可验证结果和学习迁移能力回答;把已有后端经验与 Agent 项目连接起来。追问:项目中最难的一段代码或最重要的决策,是你如何完成的?
三道限时编程题
- **20 分钟:**实现带最大尝试次数的只读 API 重试包装。用注入错误模拟首次超时、永久权限失败与取消;说明哪些错误不重试。
- **30 分钟:**实现幂等工单创建,同一业务键并发 5 次只产生一个记录;同键不同参数报错。用数据库约束证明。
- **20 分钟:**实现评测汇总:缺失结果计失败、重复试验报错、未知成本不当零;写至少一个边界测试。
60 分钟模拟面试
10 分钟:经历与项目。20 分钟:系统设计。20 分钟:编码或调试。10 分钟:故障与实验追问。评分只记录“有证据/能解释但未验证/尚不理解”,不使用主观总分代替真实面试反馈。
请 AI 做面试官时可使用:
你是 Agent 应用研发面试官,目标岗位固定税前月薪 30K+。我已有后端或全栈经验。一次只问一个问题,根据我的回答追问数据来源、边界和代码实现。先不要给答案。结束后分别列出事实错误、证据缺失和表达问题;不能把我的设想写成已完成经历。
技术阅读入口对应 02_官方教程索引.md 的 R01、R05—R14。这里的题目和回答框架为本学习包原创练习。
回到导航 ↑
09 / 常规理论题
常规理论题库|64 题含参考答案
适用:已有后端/全栈经验,准备固定税前月薪 30K+ 的 Agent 应用或平台岗位。资料核对日期:2026-09-17。
本题库补充项目深挖题,侧重定义、原理、取舍与边界。Python 作为本学习包的教学默认;若目标 JD 以 Java、Go 或 TypeScript 为主,语言专项还要按实际主栈补充,不能用 Python 题代替其语言考核。
怎么使用
- P0:本学习计划优先掌握的 32 题;P1:随后补齐的 32 题。这是准备优先级,不是统计得出的企业出题频率。
- 每题先在 60—90 秒内答“定义→机制→适用场景→边界”,再回答追问;不要只背名词。
- “参考回答”是口述起点,可结合自己的项目扩展。易错点要能举反例。
- 涉及数据库、Python 或模型框架时,先报清实现与版本。这里数据库细节以 PostgreSQL 为主,不能原封不动替代 MySQL/InnoDB 的实现题。
- 阅读安排见
10_理论复习与速记.md,占用原计划每天的面试准备时段,不额外扩大学习范围。
题目分布
| 编号 |
主题 |
数量 |
| Q01—Q08 |
计算机与网络 |
8 |
| Q09—Q16 |
Python 与异步 |
8 |
| Q17—Q24 |
数据库 |
8 |
| Q25—Q32 |
缓存与分布式 |
8 |
| Q33—Q40 |
数据结构与服务设计 |
8 |
| Q41—Q48 |
机器学习与 Transformer |
8 |
| Q49—Q56 |
大模型推理与训练常识 |
8 |
| Q57—Q64 |
RAG 与 Agent 原理 |
8 |
1. 计算机与网络基础
核对与延伸阅读:操作系统原作者教材 OSTEP;HTTP 语义标准 RFC 9110;QUIC 标准 RFC 9000;MDN:HTTP 概览;MDN:SSE。
Q01 · P0|进程、线程、协程有什么区别?
**参考回答:**进程通常提供独立地址空间与资源隔离;同一进程的线程共享内存,由操作系统调度;协程保存可暂停的执行状态,通常由运行时协作调度。I/O 密集任务可用异步或线程,CPU 密集任务要结合运行时考虑进程或原生并行。
**追问:**为什么多个协程仍可能互相阻塞?
**易错点:**协程不等于独立 CPU 核;共享内存带来竞争问题。
Q02 · P0|并发、并行、同步、异步、阻塞、非阻塞如何区分?
**参考回答:**并发指多个任务在时间上交错推进;并行指同一时刻执行。同步/异步关注调用完成和结果通知方式,阻塞/非阻塞关注等待期间线程是否被占住。应结合具体 API 说明,不能把这些词简单等同。
**追问:**一个单线程事件循环如何支持大量请求?
**易错点:**异步不自动让 CPU 计算更快,也不代表完全没有等待。
Q03 · P0|I/O 多路复用是什么?
**参考回答:**用 select、poll、epoll 等机制等待多个描述符的就绪事件,让少量线程管理多路连接。事件循环在就绪后调用处理逻辑。Linux epoll 的就绪通知不等于所有业务计算都异步完成。
**追问:**一个回调计算 5 秒会发生什么?
易错点:“支持一万连接”不等于每秒能处理一万条复杂任务。
Q04 · P0|TCP、UDP、HTTP/2、HTTP/3 是什么关系?
**参考回答:**TCP 提供可靠有序字节流,UDP 提供数据报。HTTP/2 通常在 TCP 上复用多条流,TCP 丢包可能影响同连接的其他流;HTTP/3 使用基于 UDP 的 QUIC,由 QUIC 实现可靠传输和流管理。
**追问:**HTTP/3 为什么仍然能可靠传输?
**易错点:**不能说 UDP 天生不可靠,所以 HTTP/3 也不可靠;也不能说 QUIC 消除了所有排队与丢包影响。
Q05 · P1|HTTP 的安全方法和幂等方法是什么?
**参考回答:**安全方法按语义不要求改变服务端业务状态,如 GET。幂等指重复相同请求的预期效果与执行一次相同,如 PUT、DELETE 的标准语义;不要求每次响应码相同。POST 可通过业务键设计幂等,但协议本身不默认提供。
**追问:**第一次 DELETE 返回 204,第二次 404,还算幂等吗?
**易错点:**幂等是效果语义,不是“响应文本始终一样”。
Q06 · P1|输入 HTTPS 地址后大致经历哪些步骤?
**参考回答:**先解析域名并建立或复用连接,进行适用协议的安全握手与证书验证,再发送 HTTP 请求,经代理/服务处理后返回响应。缓存、连接复用、HTTP/3 会改变具体过程,不能假定每次都有完整 DNS 和 TCP 握手。
**追问:**连接池为什么能改善延迟?
**易错点:**TLS 保护传输,不替代应用身份认证和对象权限检查。
Q07 · P1|SSE、WebSocket、轮询如何选择?
**参考回答:**SSE 适合服务端向浏览器持续发送文本事件,例如生成内容与任务状态;WebSocket 适合双向实时通信;轮询实现简单但增加请求与更新延迟。根据交互方向、代理支持和恢复需求选择。
**追问:**SSE 断线后如何避免重复事件?
**易错点:**流式显示不保证任务成功,也不等于业务状态持久化。
Q08 · P1|虚拟内存、内存泄漏与 OOM 是什么?
**参考回答:**虚拟内存为进程提供地址空间并映射到实际内存等资源;泄漏通常指不再需要的对象仍被引用或原生资源未释放;OOM 表示内存分配或运行环境内存限制无法满足。排查要看堆、缓存、连接、原生库与容器限制。
**追问:**请求结束了,为什么内存不立即回到初始值?
**易错点:**RSS 不下降不能单独证明泄漏;对象回收与内存归还操作系统不是同一件事。
2. Python 与异步编程
核对与延伸阅读:Python:free-threading;Python:asyncio tasks;Python:默认参数与函数;Python:浅拷贝与深拷贝;Python:术语表。
Q09 · P0|GIL 是什么?Python 多线程能否并行?
**参考回答:**在启用 GIL 的常规 CPython 构建中,同一解释器通常一次只有一个线程执行 Python 字节码;等待 I/O 和部分原生扩展可释放 GIL。另有 free-threaded 构建,因此必须说明实现与构建方式,不能把旧结论概括为所有 Python。
**追问:**有 GIL,为什么共享计数器仍需要同步?
**易错点:**GIL 不保证一组业务操作原子,也不能笼统说 Python 多线程永远不能并行。
Q10 · P0|async def、await、Task 分别是什么?
**参考回答:**调用 async def 函数得到协程对象,通常还未开始执行。await 等待可等待对象,遇到真正挂起点让出执行机会;Task 把协程交给事件循环调度。仅仅写 await 并不保证一定切换到其他任务。
**追问:**顺序 await 两个调用与 create_task 后一起等待有何不同?
**易错点:**创建协程对象不等于任务已被调度。
Q11 · P0|为什么 async 接口里调用同步 SDK 会拖慢服务?
**参考回答:**同步网络调用或长 CPU 运算会占住事件循环线程。可使用异步 SDK,或把合适的阻塞 I/O 放进受限线程池;CPU 密集任务视实现使用进程或原生并行。仍要设置并发上限、超时与取消策略。
**追问:**把同步调用包进 async 函数就解决了吗?
**易错点:**async 关键字不会自动把内部阻塞操作变成非阻塞。
Q12 · P0|为什么默认参数不能随意写成 [] 或 {}?
**参考回答:**默认参数在函数定义时求值,同一个可变对象可能被后续调用复用。通常使用 None 作为默认值,在函数内部创建新对象。关键问题是对象共享与生命周期,不是列表语法本身。
**追问:**函数需要保留缓存时,怎样明确表达这个设计?
**易错点:**不要把一次请求修改的默认列表带到下一次请求。
Q13 · P1|浅拷贝、深拷贝和赋值有什么区别?
**参考回答:**赋值绑定到同一对象;浅拷贝创建新的外层容器,内部对象仍可能共享;深拷贝递归复制可复制的对象图。文件、连接等资源不能简单依靠深拷贝获得独立语义。
**追问:**复制一份 messages 列表后,修改嵌套字典会影响原列表吗?
**易错点:**复制外层不等于所有嵌套状态都独立。
Q14 · P1|生成器和普通列表有什么区别?
**参考回答:**生成器按迭代需求逐步产生值,暂停时保留局部状态,适合流式读取和有限内存处理;列表通常一次持有全部元素。生成器也可能持有大对象,且耗尽后不能自动重新遍历。
**追问:**如何流式处理一个大 JSONL 文件?
**易错点:**惰性执行不等于绝对低内存,仍取决于被保留的状态。
Q15 · P1|装饰器、上下文管理器各解决什么问题?
**参考回答:**装饰器包装可调用对象,常用于计时、校验与日志,需保留函数元信息和同步/异步语义。上下文管理器用进入与退出协议管理资源,常用于连接、锁和清理;是否提交事务由具体实现决定。
**追问:**异常发生时 with 是否会自动回滚所有外部副作用?
**易错点:**with 只执行退出协议,不具有通用的跨系统回滚能力。
Q16 · P1|取消与异常清理如何处理?
**参考回答:**任务取消通常在挂起点以取消异常传递。清理放在 finally 或上下文管理器中;不要无意吞掉取消信号。CPython 的引用计数与循环垃圾回收不替代显式关闭连接、文件或后台任务。
**追问:**请求取消后,已经发给外部系统的写入怎么办?
**易错点:**本地取消不等于外部操作被撤销;仍需查询结果或补偿。
3. 数据库、索引与事务
核对与延伸阅读:PostgreSQL:事务隔离;PostgreSQL:复合索引;PostgreSQL:锁与死锁;PostgreSQL:执行计划。
Q17 · P0|ACID 分别是什么?
**参考回答:**原子性让事务整体提交或撤销;一致性要求事务遵守已定义的约束与业务不变量;隔离性约束并发事务之间的可见性与干扰;持久性让已提交结果在对应保障条件下保留。业务正确性仍需应用与约束共同实现。
**追问:**数据库支持 ACID,为什么还会出现重复工单?
**易错点:**ACID 不会自动替你定义业务唯一键;也不覆盖事务外的远程 API。
Q18 · P0|为什么数据库常用 B-tree 家族索引?
**参考回答:**多路有序树以较低树高定位键,支持等值、范围和有序访问。索引减少某些读操作的扫描,但增加存储和写维护成本。具体页结构与实现随引擎而异,不把所有数据库索引都说成同一种 B+ 树。
**追问:**查询返回全表大多数行时,为什么可能不走索引?
**易错点:**索引不是越多越好,优化器要比较实际访问成本。
Q19 · P0|联合索引 (tenant_id, created_at, id) 怎么用?
**参考回答:**前导列的约束通常有利于缩小扫描范围;该顺序适合租户内按时间和 id 排序的访问。是否支持排序、覆盖或跳跃扫描取决于数据库、版本、查询与数据分布,应看执行计划。
**追问:**只按 created_at 查询,是否绝对不能用这个索引?
**易错点:**不要把“缺少最左列就绝对不能用索引”当跨引擎定律。
Q20 · P0|MVCC 和隔离级别是什么关系?
**参考回答:**MVCC 通过多个版本与可见性规则支持并发读写,隔离级别决定允许看到哪些变化。以 PostgreSQL 为例,默认 Read Committed 通常按语句取快照,Repeatable Read 提供事务级快照;Serializable 仍可能要求应用重试。
**追问:**两个事务各自读到条件满足再写,为什么可能破坏联合约束?
**易错点:**快照不自动防止所有写冲突或写偏差;不同数据库同名隔离级别实现有差异。
Q21 · P1|乐观锁与悲观锁如何选择?
**参考回答:**乐观方案常用版本号或条件更新发现冲突,适合冲突相对少且可重试的场景;悲观方案先持有锁约束并发,适合需要串行保护的短操作。应评估冲突率、等待时间和失败后的业务处理。
**追问:**版本更新影响行数为 0 时你会怎么办?
**易错点:**不要在持有数据库锁时等待长时间模型推理或人工确认。
Q22 · P1|死锁如何产生和处理?
**参考回答:**多个事务以不同顺序持有并等待对方资源可形成环路。可通过统一加锁顺序、缩短事务减少发生;数据库检测后可能中止某事务,应用应有界重试整个业务事务。
**追问:**锁等待超时与死锁是同一回事吗?
**易错点:**不是所有等待都叫死锁;重试时也不能重复执行事务外副作用。
Q23 · P1|慢 SQL 怎样排查?
**参考回答:**先确认延迟、频率与数据规模,查看实际执行计划、估算误差、扫描行数、连接方式、排序、锁等待和 I/O。检查统计信息与索引后再优化。EXPLAIN ANALYZE 会实际执行语句,应注意写语句副作用。
**追问:**加了索引还是慢,接下来查什么?
**易错点:**不要只看是否命中索引,扫描量、回表/堆访问与锁竞争也重要。
Q24 · P1|深分页为什么慢,游标分页有什么取舍?
**参考回答:**较大的 OFFSET 通常仍要处理或跳过前面的结果。基于稳定排序键的 keyset 分页用上次的 (created_at,id) 继续查询,可减少深扫描;但不便任意跳页,且要定义并发数据变化下的分页一致性。
**追问:**多条记录时间相同会不会漏项?
**易错点:**排序键应有稳定的唯一判定,不能仅靠可能重复的时间戳。
4. 缓存与分布式系统
核对与延伸阅读:Redis:持久化;Redis:分布式锁;CAP 原始论文;Redis:淘汰策略;Kafka:交付语义与设计;Google SRE:监控与容量信号。
Q25 · P0|Cache-aside 如何工作,更新后删缓存就强一致了吗?
**参考回答:**读取先查缓存,未命中再查数据库并回填;更新通常先改数据库再失效缓存。并发回填、删除失败和复制延迟仍可能造成旧值,需要结合版本、失效重试、TTL 与一致性需求设计。
**追问:**旧请求在删除之后把旧值回填怎么办?
易错点:“更新数据库再删缓存”是常用模式,不是零竞态保证。
Q26 · P0|缓存穿透、击穿、雪崩有什么区别?
**参考回答:**穿透是查询不存在的数据持续落到后端;击穿是热点项失效导致大量请求重建;雪崩是大量缓存同时失效或整体故障。可分别考虑负缓存/布隆过滤器、合并重建请求、随机过期与限流降级。
**追问:**负缓存会不会隐藏刚创建的数据?
**易错点:**布隆过滤器通常有假阳性;TTL 与失效流程必须考虑数据更新。
Q27 · P0|Redis 的 RDB 和 AOF 有什么取舍?
**参考回答:**RDB 保存时间点快照,恢复和备份方便,但可能丢失快照后的写入;AOF 记录写入操作,数据损失窗口与刷盘策略有关,文件也需要重写管理。两者及复制都需要结合实际故障模型评估。
**追问:**everysec 是否意味着任何故障都最多只丢一秒?
**易错点:**不能忽略操作系统、磁盘、故障类型与配置条件;复制也不自动等于零丢失。
Q28 · P0|Redis 分布式锁有哪些常见错误?
**参考回答:**基础实现需原子获取、唯一持有者标记、有效期,以及只由持有者释放。锁过期后旧持有者可能仍在执行;对关键资源可考虑资源端版本/fencing 机制阻止陈旧写入。还需说明时钟、暂停和网络故障假设。
**追问:**业务运行时间超过锁的 TTL 怎么办?
**易错点:**仅用 SET NX 加超时不能保证所有故障下互斥;续租也不能消除所有风险。
Q29 · P1|消息队列的至少一次与 exactly-once 指什么?
**参考回答:**至少一次交付允许重投,消费者需处理重复。某些系统的事务能在特定处理范围提供 exactly-once 语义,但通常不能自动覆盖任意外部数据库或 API。消费结果与位点/确认的提交顺序决定故障窗口。
**追问:**消息处理完成、ack 前崩溃会怎样?
**易错点:**消息只被提交一次不等于业务副作用只发生一次。
Q30 · P1|超时、重试、限流、熔断和背压有何区别?
**参考回答:**超时限制等待;重试处理适合重试的瞬时失败;限流控制进入速率;熔断在持续失败时暂停部分调用;背压让上游感知下游容量。它们应共享总截止时间与尝试预算,避免多层重试放大流量。
**追问:**三个调用层都重试三次,会发生什么?
**易错点:**重试前先判断写入是否已发生;不能把所有 4xx 都无限重试。
Q31 · P1|CAP 是简单的三选二吗?
**参考回答:**CAP 讨论网络分区下,一致性与可用性要求不能同时完全满足;其中一致性通常指线性一致性,可用性有严格定义。实际设计应说明发生何种分区、哪些请求被拒绝或返回旧数据,不能只贴 CP/AP 标签。
**追问:**读请求与写请求能否采取不同策略?
**易错点:**CAP 的一致性不是 ACID 中所有业务约束的统称。
Q32 · P1|TTL、LRU、LFU 各解决什么问题?
**参考回答:**TTL 控制数据在时间上的有效期;LRU 倾向淘汰最近未使用的数据;LFU 倾向淘汰低频项。过期与容量淘汰是两个维度,具体缓存产品可能使用近似算法。命中率之外还要观察热点与回源成本。
**追问:**缓存淘汰了任务状态会有什么后果?
**易错点:**不可恢复的重要状态不能只依赖可淘汰缓存。
5. 数据结构、服务设计与排障
核对与延伸阅读:JWT 标准 RFC 7519;Princeton:算法复杂度速查;Princeton:优先队列;Princeton:图与算法课程;Google SRE:监控。
Q33 · P0|哈希表为什么通常查找快?一定是 O(1) 吗?
**参考回答:**哈希把键映射到桶,通过碰撞处理定位元素;在合理散列与负载下平均操作可接近 O(1),最坏情况取决于碰撞策略和实现。空间、扩容和攻击性输入也有成本。
**追问:**为什么哈希表不适合直接做有序范围查询?
**易错点:**平均复杂度不是每次调用的绝对时延保证。
Q34 · P0|海量数据 Top-K 怎么做?
**参考回答:**流式扫描可维护大小为 K 的最小堆,常见复杂度为 O(n log K)、额外空间 O(K);一次性数据也可用选择算法。是否需要稳定排序、并列结果和分布式合并会影响方案。
**追问:**K 很小与 K 接近 n 时如何选择?
**易错点:**Top-K 筛选与最终按顺序输出是两个步骤。
Q35 · P0|BFS、DFS、拓扑排序分别用于什么?
**参考回答:**BFS 逐层遍历,可求无权图最短路径;DFS 适合深度探索、连通性等问题;拓扑排序用于有向无环图依赖调度,存在环时无法得到覆盖全部节点的拓扑序。
**追问:**工具依赖图出现环怎么办?
**易错点:**BFS 最短路径结论不能直接套到任意带权图。
Q36 · P0|认证、授权与 JWT 是什么关系?
**参考回答:**认证确认调用者身份,授权判断其是否可以对具体对象执行操作。JWT 是一种令牌表示方式,常见签名 JWT 保证完整性而非加密;服务端还需校验签名算法、发行者、受众和有效期,并做对象级授权。
**追问:**有合法 token,就能查任意 task_id 吗?
**易错点:**令牌有效不等于拥有所有对象权限,不能相信客户端自填租户。
Q37 · P1|日志、指标、Trace 各有什么作用?
**参考回答:**日志描述事件细节,指标便于聚合趋势与告警,Trace 串联一次请求跨组件的调用关系。三者通过任务或请求 id 关联;记录必要信息并控制敏感字段与高基数。
**追问:**为什么只看 CPU 无法判断 Agent 是否健康?
**易错点:**系统没有报错不代表模型回答正确,效果指标需要另建。
Q38 · P1|无状态服务为什么更容易水平扩展?
**参考回答:**把可恢复状态放到适合的持久存储后,请求可由多个实例处理,利于扩缩容和故障切换。但数据库、缓存、连接、租户资源配额和任务调度仍可能成为共享瓶颈。
**追问:**扩容实例后连接数把数据库打满怎么办?
**易错点:**无状态指服务实例不独占关键会话状态,不是系统完全没有状态。
Q39 · P1|吞吐、并发、平均延迟、P95 如何理解?
**参考回答:**吞吐是单位时间完成量,并发是同时在途任务数,延迟是单次任务耗时;P95 是约 95% 样本不超过的延迟分位点。平均值可能掩盖尾部,比较前应固定负载、输入长度和成功定义。
**追问:**平均延迟降低但 P95 上升,说明什么?
**易错点:**QPS、并发数和用户数不能互相直接替代;分位点要报告样本量。
Q40 · P1|接口、依赖注入与策略模式为什么有用?
**参考回答:**将模型供应商、检索器、工具与存储放在明确接口后,可在业务逻辑不变时替换实现或注入故障。依赖注入管理实现绑定,策略模式隔离可替换算法;抽象深度应服务测试与变化需求。
**追问:**为什么不把所有组件都抽成十层接口?
**易错点:**模式名称不能代替可维护性;过度抽象也增加理解与修改成本。
6. 机器学习与 Transformer 基础
核对与延伸阅读:scikit-learn:数据泄漏与常见错误;scikit-learn:分类指标;Google:Attention 原始论文;Transformers:RoPE;Hugging Face:Transformer 原理;Hugging Face:Tokenizer。
Q41 · P0|过拟合、欠拟合与数据泄漏是什么?
**参考回答:**过拟合是在训练数据表现好但泛化差;欠拟合是模型或训练尚未学到足够规律;泄漏是训练或选择方案时用了预测时不可获得的信息。数据划分与预处理应避免把测试信息带回训练/调参流程。
**追问:**同一用户的近重复样本分到训练和测试集有什么风险?
**易错点:**测试集分数高不自动说明能泛化,先核查采样与泄漏。
Q42 · P0|Precision、Recall、F1 怎么解释?
**参考回答:**Precision=TP/(TP+FP),衡量预测为正中多少正确;Recall=TP/(TP+FN),衡量实际为正中找回多少;F1 是二者调和平均。类别不平衡时 Accuracy 可能掩盖少数类,阈值需结合误报与漏报成本选择。
**追问:**为什么把所有售后问题都判成需要人工会有很高召回?
**易错点:**这些指标通常用于定义好的分类任务,不能未经定义直接替代 Agent 总体成功率。
Q43 · P0|Transformer 的 Attention 做了什么?
**参考回答:**输入映射为 Q、K、V,常见缩放点积注意力为 softmax(QKᵀ/√dₖ + mask)V,让每个位置按相关性聚合其他位置的信息。多头学习不同关系,前馈层、残差和归一化共同组成模块。
**追问:**为什么除以 √dₖ?Q、K、V 的维度如何对应?
**易错点:**Attention 权重不等于可靠的因果解释,也不等于数据库检索。
Q44 · P0|Token 是字还是词?Tokenizer 为什么重要?
**参考回答:**Token 是分词方案定义的单位,可能是子词、字符片段或字节组合。文本先转成 token id,再进入模型;相同文本在不同 tokenizer 下长度不同,影响上下文、费用和截断。应使用与模型匹配的 tokenizer。
**追问:**为什么不能按中文字符数精确估算 token?
**易错点:**一个 token 不固定等于一个汉字或一个英文单词。
Q45 · P1|Embedding 与余弦相似度是什么?
**参考回答:**Embedding 将对象映射到向量空间。余弦相似度衡量向量夹角;单位归一化后余弦与点积排序一致,但一般情况下不等价。向量维度相同不代表不同模型的空间可混用。
**追问:**换 embedding 模型后为什么可能要重建索引?
**易错点:**高相似度不等于答案正确,也不等于用户拥有访问权限。
Q46 · P1|Causal mask 为什么能支持自回归训练?
**参考回答:**因果遮罩阻止当前位置使用未来 token。训练时已知整段真实序列,可在遮罩下并行计算多个位置的 next-token 损失;自回归推理则依赖刚生成的 token 逐步继续。
**追问:**训练并行,为何标准自回归解码通常逐 token 进行?
**易错点:**训练时看到真实前缀,不意味着推理时能提前看到未来答案。
Q47 · P1|位置编码与 RoPE 解决什么问题?
**参考回答:**注意力需要获得序列位置信息。位置编码提供绝对或相对顺序信号;RoPE 通过位置相关旋转作用于 Q、K,使注意力分数带有相对位置信息。长上下文表现还受训练与实现约束。
**追问:**扩大位置范围是否就保证远距离信息利用正确?
**易错点:**可接收更长输入不等于能可靠利用全部长上下文。
Q48 · P1|预训练、SFT 和推理有什么区别?
**参考回答:**预训练通常在大量数据上学习通用预测规律;SFT 用目标任务或指令示例继续更新参数;推理通常在固定参数下根据输入生成输出。应用中的提示词或检索上下文改变输入,不等于更新模型权重。
**追问:**把文档加入向量库是否算微调?
**易错点:**不要把会话记忆、知识检索与参数训练混为一谈。
7. 大模型训练与推理常识
核对与延伸阅读:Transformers:KV Cache;Transformers:采样参数;Transformers:量化;PEFT:LoRA;TRL:SFT;TRL:DPO;vLLM 官方文档。
Q49 · P0|Prefill、Decode、TTFT、TPOT 分别是什么?
**参考回答:**Prefill 处理输入前缀并建立后续计算需要的状态;Decode 逐步生成新 token。TTFT 是请求到首 token 的时间,可能含排队和网络;TPOT 描述输出 token 之间的耗时,具体统计定义需说明。
**追问:**输入变长与输出变长分别主要影响哪些指标?
**易错点:**首 token 快不等于整个任务完成快,工具调用还会增加总耗时。
Q50 · P0|KV Cache 缓存什么,为什么会占很多显存?
**参考回答:**自回归注意力缓存历史 token 的 Key 和 Value,避免每步重复计算这些投影。容量通常随层数、序列长度、batch、KV 头数、头维度和数据类型增加;GQA、量化、滑动窗口等会改变估算。
**追问:**为什么通常不以同样方式缓存所有历史 Q?
**易错点:**KV Cache 不是完整答案缓存,也不是能跨任意用户请求直接复用的长期记忆。
Q51 · P0|Temperature、Top-k、Top-p 怎样影响生成?
**参考回答:**Temperature 调整 logits 分布的尖锐程度;Top-k 限制最高概率的 k 个候选;Top-p 保留累计概率达到阈值的一组候选,之后采样。供应商实现与参数组合有差异,应看实际接口。
**追问:**把温度设为 0,结果是否绝对可复现?
**易错点:**低温度不能消除事实错误;硬件、模型版本与执行实现仍可能导致差异。
Q52 · P0|大模型为什么会产生幻觉?
**参考回答:**语言预测目标不直接保证事实真实性;知识缺失、上下文误读、检索错误和过度迎合等都可能产生无依据内容。可用可验证工具、有效证据、明确拒答与评测降低风险,但不存在一个提示词永久消除所有幻觉。
**追问:**有 RAG 仍然胡说,应查哪一层?
**易错点:**输出流畅、语气肯定或提供链接都不是正确性的证明。
Q53 · P1|量化、权重显存与推理总显存有什么关系?
**参考回答:**量化用较低精度表示权重或部分中间状态,降低某些存储与计算成本,但效果与速度取决于方法和硬件。推理总显存还包含 KV Cache、激活、工作区及运行时开销,不能只看参数量乘精度。
**追问:**7B 参数的 4-bit 权重是否意味着 4GB 显卡一定能运行?
**易错点:**理论权重字节数只是下界式估算,还存在尺度元数据等额外开销。
Q54 · P1|LoRA 与全量微调有什么区别?
**参考回答:**LoRA 通常冻结基座权重,在选定层训练低秩增量,可写作 ΔW=BA,从而减少可训练参数及相关优化器开销。rank、注入层和数据影响结果;它仍需加载和计算基座模型。
**追问:**rank 越大是否总更好?
**易错点:**LoRA 不等于完全不占显存,也不自动解决训练数据质量问题。
Q55 · P1|SFT、RLHF、DPO 分别关注什么?
**参考回答:**SFT 用示范输出训练;典型 RLHF 流程用偏好数据学习奖励并以强化学习优化策略;DPO 直接利用偏好对构造优化目标,常见形式使用参考策略,避免典型流程中的单独奖励模型和在线 RL 阶段。
**追问:**偏好优化能否替代所有领域知识训练?
**易错点:**RLHF 是一类方法,不等于唯一的 PPO 实现;DPO 也不是完全不训练。
Q56 · P1|Continuous batching、PagedAttention 各解决什么问题?
**参考回答:**Continuous batching 在生成迭代中让完成请求退出、新请求加入,改善混合长度任务的调度利用率;PagedAttention 以分页方式组织 KV Cache,减少碎片并支持灵活管理。实际收益取决于负载、模型和硬件。
**追问:**吞吐提高是否保证每个请求延迟下降?
**易错点:**不能将框架宣称的某个倍率当作你自己的实测结果。
8. RAG 与 Agent 常规原理
核对与延伸阅读:Anthropic:Agent 与工作流;MCP:架构;LangGraph:持久化;pgvector 官方说明;Anthropic:评测。
Q57 · P0|Agent、工作流、ReAct 有什么区别?
**参考回答:**工作流通常由代码预先规定主要路径;Agent 在运行时根据上下文与观察决定下一步;ReAct 是交替进行任务分析、动作与观察的一种组织思路。它们不是互斥产品类别,可在同一系统中组合。
**追问:**一个带三个固定工具步骤的程序一定是自主 Agent 吗?
**易错点:**框架名称不能证明自治程度;也不需要暴露模型隐藏思维链来证明机制。
Q58 · P0|Function Calling/Tool Calling 到底发生了什么?
**参考回答:**模型生成符合约定的工具名称与参数请求,应用执行器解析、校验、授权后调用真实工具,再把结果返回给模型。Schema 约束格式,但业务正确性和权限需要执行层保证。
**追问:**工具返回成功,整个任务就成功了吗?
**易错点:**模型提出调用不等于工具已执行;工具执行成功也不等于完成用户目标。
Q59 · P0|标准 RAG 链路由哪些步骤组成?
**参考回答:**离线准备文档清洗、切分、元数据和索引;在线做问题处理、权限过滤、召回、可选重排、上下文组装、生成与引用验证。RAG 改变模型可见输入,通常不更新生成模型参数。
**追问:**如何区分检索失败与生成失败?
**易错点:**向量库只是其中一个组件,搭好向量库不等于建好 RAG。
Q60 · P0|MCP 的 Host、Client、Server 分别是什么?
**参考回答:**Host 是承载模型与连接管理的应用,Client 在 Host 内与特定 Server 维持协议连接,Server 暴露工具、资源等能力。MCP 提供协议约定,实际授权、审批、租户隔离与副作用处理仍需应用设计。
**追问:**MCP Server 暴露了删除工具,模型能否直接任意删除?
**易错点:**能发现工具不等于有权使用工具,协议接入不替代权限控制。
Q61 · P1|短期记忆、长期记忆、checkpoint 有什么关系?
**参考回答:**短期记忆通常是当前会话或任务上下文;长期记忆保存跨会话可复用信息;checkpoint 保存执行状态供恢复或回放。它们的所有者、有效期、更新和存储粒度可能不同。
**追问:**把全部历史对话塞入上下文就是长期记忆吗?
**易错点:**持久化了不代表检索准确、无限容量或跨用户安全。
Q62 · P1|为什么可恢复执行还需要幂等和审批?
**参考回答:**恢复可能重新执行部分节点;已发生的外部写入不一定与 checkpoint 同时提交。幂等约束重复操作效果,审批约束什么动作获得允许,两者解决不同问题。
**追问:**外部写入成功而本地记录失败,下一步怎么做?
**易错点:**checkpoint 不自动提供跨系统原子性;审批也不是防重机制。
Q63 · P1|稀疏检索、稠密检索、重排如何配合?
**参考回答:**词项检索擅长精确关键词和编号,稠密向量检索侧重语义相似;混合检索合并候选。重排对候选重新评分,但无法找回完全没召回的材料;取舍用标注集、延迟和成本验证。
**追问:**重排分数可以直接当“答案正确概率”吗?
**易错点:**相似或相关不等于事实成立,分数通常需要额外校准才有概率含义。
Q64 · P1|Agent 的评测与普通单元测试有什么不同?
**参考回答:**单元测试常检查确定性函数行为;Agent 还涉及模型波动、多步轨迹和外部环境结果,需要任务级评分、多次试验与语义审查。工程不变量仍适合确定性测试,两者应并存。
**追问:**20 条题全部通过能证明生产可用吗?
**易错点:**公开练习集全通过不等于泛化;报告样本、失败与未覆盖范围。
回到导航 ↑