面试题库
按主题收集 Agent、后端与 Go 等方向的面试问题。
面试题库
Agent 与 AI 工程
架构与编排
- Agent 包含哪些模块?和 ChatBot、普通 workflow 的关系是什么?
- 什么时候用单 Agent,什么时候拆成多 Agent?如何分工、同步状态和验收结果?
- Workflow、ReAct、多 Agent 有什么区别?哪些关系能用 DAG 表达,哪些需要循环?
- LangGraph、AutoGen、CrewAI 等框架各提供什么能力?Coze 的执行引擎是否适合你的系统?
- 任务描述不清、不同 Agent 输出不一致时,如何明确要求并评估结果?
- Agent 开发中最重要的约束是什么?To C 和 To B 的需求有什么差异?
模型与推理性能
- LLM 如何预测下一个 token?Transformer 的 attention、位置编码和前馈网络分别做什么?
- 推理为什么贵?prefill、decode、KV cache 各带来什么开销?
- 如何优化首 token 延迟、生成速度和总延迟?与吞吐、成本有哪些取舍?
- 项目用了哪些模型和版本?如何做 model routing,为什么这样选?
- 如何同时遵守 TPM、QPM 限制,并处理优先级和租户配额?
Prompt、上下文与记忆
- 如何设计和迭代提示词?怎么判断一次修改有效?
- system、user、assistant 等消息角色有什么作用?
- Prompt 模板如何版本化、装配和评测?
- 短期、长期记忆分别保存什么?对话历史如何存储、召回和更新?
- mem0 等记忆框架解决什么问题?哪些信息不应该写入记忆?
- Agent 的反思机制如何实现?例如心理咨询场景,怎样检查语气是否合适?
- 上下文超长时,如何分配预算、裁剪、摘要和筛选?哪些信息必须保留?
- 为什么不能直接压缩最早 70% 的对话?怎么避免摘要丢失原始需求?
- 整份需求直接输入与按模块输入如何取舍?分模块时怎样保留全局认知?
- 查询重写为什么用 LLM?规则、词典或轻量模型什么时候更合适?如何防止改偏原意?
RAG 与检索
- 如何设计 AI 问答系统?RAG 的离线和在线链路分别有哪些步骤?
- PDF、Markdown 等文件如何解析和清洗?表格、代码、标题层级如何保留?
- 固定长度、递归、按语义边界分块有什么区别?如何选 chunk size 和 overlap?
- Embedding 和向量相似度搜索是什么?如何选择语言、领域、长度和成本合适的模型?
- 向量数据库怎样检索?如何实现向量与 BM25 的混合召回?
- Rerank 如何做?使用 LLM 评分是否可行,成本和延迟有何限制?
- 检索和重排分别耗时多少?如何优化 RAG 延迟?
- 如何评估召回匹配度、答案相关性、忠实性和引用正确性?
- RAG 最难的问题是什么?如何定位问题发生在解析、检索、排序还是生成?
工具与执行流程
- Function Calling 从模型输出到真实代码执行、结果回传,完整流程是什么?
- 工具描述、参数 schema、权限和错误处理如何设计?项目接入了哪些工具?
- MCP 的角色和交互过程是什么?与 Tool Calling、Skills、A2A 分别是什么关系?
- 接入或手写过哪些 MCP 服务?客户端和服务端各负责什么?
- Skill 如何组织?渐进式加载怎么做?局部能力与完整任务流程如何划分?
- A2A 如何委派任务并交换结果?怎么防止递归对话、重复调用和无进展循环?
- ReAct 的执行步骤是什么?与只生成推理步骤的方式有什么区别?
- 如何做 Plan-and-Execute?怎么决定拆分粒度,失败时如何重新规划?
- 为什么需要自己的规划机制,现成 Code Agent 的 Plan 模式是否足够?
- 一次请求经过哪些步骤、几次 LLM 调用?如何设置步数和时间上限?
框架与 Code Agent
- LangChain4j 如何实现工具调用、Prompt 模板和结构化输出?与 Spring AI 有什么区别?
- 使用过哪些 Code Agent?Claude Code、Cursor 分别适合什么任务?
- 文件系统在 Agent 中承担什么作用?与只用对话历史相比有什么取舍?
- Spec 驱动开发如何组织需求、实现和验证?
- OpenClaw 的架构、记忆机制和 pi-coding-agent 是什么?与你的项目有何异同?
- Harness engineering 包含哪些环节?如何改善执行结果的可靠性?
质量与观测
- 幻觉为什么发生?如何从信息来源、提示词和结果校验减少错误?
- 工业图纸识别出现幻觉时,Prompt 和后处理分别能检查什么?
- 如何评估 Agent 的任务成功率、工具调用、恢复能力、成本和权限边界?
- 如何记录和关联 Prompt、Response、工具调用及错误?如何保护敏感数据?
- LLM 服务如何缓存?什么请求可以复用结果,如何处理权限和失效?
项目深挖
职责与设计选择
- 项目目标是什么?你负责了什么,最难的问题是什么,有哪些可验证结果?
- AI 能力解决了哪项实际需求?聊天、推荐、工具执行如何接入现有业务?
- 项目除了 RAG 还使用了哪些 Agent 技术,分别解决什么问题?
数据、检索与状态
- 运维 Log/Trace 长文本如何做 RAG?Top-K 检索不准时如何定位和调整?
- MinerU 解析跨页复杂长表格后,如何做语义合并?
- BM25 建在全文还是提取出的 Key-Value 字段上?依据是什么?
- Ragas 检索精度高、答案相关性低时,可能的瓶颈在哪?
- LangGraph 的 State 怎么设计?如何控制多轮序列化成本?
- 长期记忆何时压缩:token 阈值、语义重要性,还是组合?安全护栏如何实现?
运行保障
- 运维 API 超时或返回 5xx 时如何处理?哪些错误可以重试,怎样避免重复副作用?
- 2PC、TCC 的流程和取舍是什么?Agent 跨系统执行多步操作时如何处理一致性?
- 类 Manus 的系统如何设计任务调度器,处理恢复、并发和资源限制?
- 代码沙箱如何限制 CPU、内存和网络访问?
- Agent 异步回调如何防止消息丢失和重复处理?
代码理解与单测生成
- AST、调用关系如何用于代码理解和测试生成?
- 哪些代码不适合自动生成单测,如何识别和过滤?
- 覆盖率高但质量差时怎么判断?除了覆盖率,还看哪些指标?
- 什么时候需要 mock?依赖数据库、RPC 的测试如何稳定运行,避免测到的只是 mock 本身?
产品与性能
- 如何用模型提取视频标签并实现推荐?视频量很大时,如何安排处理流程和资源?
- 视频生成之后如何交付、验证结果,判断是否符合预期?
- 为什么限制每个用户只能上传一个文件?这个限制是否必要?
- 点位投放系统通过编排实现了解耦,还有什么瓶颈?
- 加缓存前后,吞吐和延迟改善多少?测试条件是什么?
- 令牌桶之外,如何加入任务优先级和多租户调度?
数据库、中间件与接口
MySQL
- 聚簇、二级、联合、覆盖索引和回表分别是什么?为什么使用 B+ 树?
- 怎样围绕查询选择索引?为什么不是越多越好,哪些情况不适合走索引?
- 主键与唯一索引有什么区别?重复插入会返回什么错误?
- ACID、undo、redo、binlog 分别解决什么问题?内部两阶段提交如何工作?
- 隔离级别有哪些?脏读、不可重复读和幻读是什么?
- MVCC、Read View、快照读和锁定读有什么关系?
- 记录锁、间隙锁、next-key lock 分别锁什么?乐观锁与悲观锁怎么选?
- 连接池为什么需要,关键参数有哪些?数据库已能承受当前 QPS,是否仍需要缓存?
Redis
- 各数据类型适合什么场景?对话上下文选 List、Hash 还是 Stream?
- SDS、跳表解决什么问题?Pub/Sub 与 Stream 有什么区别?
- RDB 与 AOF 如何取舍?TTL 过期与内存淘汰有什么区别?
- MULTI、EXEC、WATCH 如何工作?事务和 Pipeline 有何区别,执行错误会不会回滚?
- 分布式锁如何获取、释放和续期?过期或故障时互斥是否仍成立?
- 缓存穿透、击穿、雪崩分别是什么,如何处理?
消息、向量库与接口
- Kafka 为什么吞吐高?生产、分区、消费三个环节如何共同保证业务顺序?
- Milvus 按文档分类检索时,如何选择 Collection、分区、分区键和标量过滤?
- Cookie 与 Session 如何配合保持登录状态?
- 幂等是什么?消息、回调、接口重试中如何实现?用真实经历说明提交边界和故障处理。
操作系统与 Go
- 进程、线程和协程如何分工?Go 并发与其他语言有什么区别?
- Python 的 multiprocessing 和 threading 如何结合提高吞吐?
- 锁解决什么问题?线程、进程和多机器分别需要什么同步机制?
- 线程池的线程数、队列和拒绝策略如何设置?
- Slice 的 len、cap、扩容和共享数组如何工作?小切片为何可能保留大数组?
- Map 的语言语义和底层实现是什么?普通 map 加锁与 sync.Map 如何选择?
- Channel 在 nil、空、满、关闭时分别如何表现?
- Context、Mutex、RWMutex、WaitGroup 各解决什么问题?
- Agent 后端为什么常用异步执行?EventLoop、队列和有界并发如何协调状态?
- GMP 为什么需要 P?本地队列、全局队列和 work stealing 如何配合?
- 三色标记、STW 和混合写屏障如何配合?
- Defer 在何时执行,多个 defer 的顺序是什么?
网络与服务端
- TCP 三次握手、四次挥手分别做什么?为什么等待 2MSL?连接后网线断开会发生什么?
- HTTP 与 HTTPS 有何区别?HTTP 与 RPC 是同一层面的概念吗?怎样比较具体调用方案?
- SSE、WebSocket 与 HTTP 的关系是什么?Java 如何实现流式响应,项目为什么选择该方案?
- 接口鉴权如何实现?
- 视频带宽压力大时如何处理?
- 网络访问可能在哪些环节被阻断?访问受限的海外服务时,有哪些网络架构和部署选择,单台服务器有何限制?
- Java 的模型调用 SDK、API 接口和连接池如何设计?
- vLLM 的 PagedAttention 原理是什么?
- FastAPI 的中间件与依赖注入各适合什么逻辑?使用过哪些相关库?
- asyncio.gather 与 as_completed 有何区别?并发模型请求中,单个超时如何处理?
算法与 AI 工具
- 实现 LRU 缓存,要求 get、put 为 O(1)。
- K 个一组翻转链表;如果最后不足 K 个也要反转,怎样修改?
- 螺旋矩阵、有序数组的平方、无重复字符的最长子串。
- 日常使用哪些 AI 工具?怎样描述需求、控制修改范围并验证结果?
- 写过或使用过哪些 command、Skill?解决了什么具体问题?