Java 开发工程师(智能客服)二面面经
完整信息
本篇目录
面试公司:百度
面试时间:7月17日
面试岗位:Java开发实习生(智能客服)
第一个项目:
1. 优惠券秒杀中,为什么使用 Redis Lua 脚本进行校验和库存预扣?
2. 你所说的 Lua 脚本“回退”是指什么?什么情况下需要回退?
3. 如果 Lua 脚本已经执行成功,但后续订单消息发送到 Kafka 失败,应该怎么处理?
4. 只依靠 Lua 脚本和消息队列,就能保证库存不超卖和一人一单吗?
5. 如果绕过 Redis 入口,直接在数据库中更新库存,数据库层面如何防止超卖?
6. 你简历中提到 Cache Aside,能介绍一下它的完整执行流程吗?
7. 缓存未命中后,谁负责查询数据库并重新写入缓存?
8. 为什么采用“更新数据库,然后删除缓存”,而不是“更新数据库,然后直接更新缓存”?
9. 并发更新缓存时,可能出现什么数据一致性问题?
10. 为什么使用 ThreadLocal 存储用户信息?
11. 请求结束后,ThreadLocal 中的数据会自动移除吗?你是怎么清理的?
第二个项目:
1. 你的系统整体是不是由 Agent 中控和知识库两部分组成?
2. 能简单介绍一下 ReAct 的推理与行动机制吗?
3. 模型在推理过程中,怎么知道应该使用哪个工具?
4. 你这个 Agent 中一共有多少个工具?
5. 当 Agent 中包含很多工具和 Skill 时,模型选择工具还会准确吗?
6. 企业级场景中,一个用户可能拥有 200 多个工具和 Skill,怎么保证工具选择效果?
7. 有没有了解过,模型在面对多少个工具或 Skill 时,选择效果是最优的?
8. 通过业务分类减少候选工具时,如果用户问题比较模糊,是否可能选错类别?
9. 如果第一层类别选择错误,导致后面无法找到正确工具,应该怎么处理?
10. 工具很难严格划分到单一业务类别时,分类方案还是否可行?
11. 模型已经思考完成,也选择好了工具,接下来它是怎么真正调用工具的?
12. 流式输出时,工具名称和参数 JSON 是分片返回的,平台怎么判断已经获得一个完整的工具调用?
13. 流式场景下,怎么识别完整的 MCP 命令或者 Tool Call 参数?
14. ReAct 是一个不断思考、行动、观察的循环,它有没有可能一直循环下去,无法停止?
15. 你在项目中是否遇到过 Agent 无限循环的问题?你是怎么解决的?
16. 为什么在 ReAct 前面增加 Plan-and-Execute?
17. 加入规划机制后,如果模型在执行过程中仍然出现幻觉,应该怎么处理?
18. 某个问题按照流程必须先调用工具,但模型没有调用工具,直接给出答案,应该怎么解决? 例如用户查询实时天气,模型没有调用天气工具,直接回答“今天是晴天”,怎么防止这种情况?
19. 如何判断模型的答案是正确、错误还是幻觉?
20. 工具已经正常调用,真实数据也拿到了,但模型最终回答与工具数据不一致,怎么预防或缓解?
21. 在 Agent 整个执行流程中,哪些环节可能导致模型出现幻觉?
22. 除了 Prompt 和 Reflection,还有哪些方法能够降低幻觉?
23. 如何保证最终回答忠实于工具结果,而不是使用模型自身知识进行补充?
24. 你的 RAG 使用了向量检索和 BM25 混合召回,为什么要同时使用这两种检索方式?
25. 向量检索和 BM25 分别解决什么问题?
26. 为什么仅使用向量检索可能无法很好地召回专业术语、类名和关键词?
27. 你的向量检索使用的是什么算法?
28. 是否了解 HNSW 的检索原理?
29. HNSW 的层级结构是怎样的?
30. HNSW 有哪些局限性?
31. 为什么 HNSW 的检索性能比较高?
32. HNSW 是否可能出现漏召回?
33. 如果正确结果没有进入 HNSW 的候选集,应该怎么处理?
34. 只考虑 HNSW 或 ANN 检索本身,不考虑 Embedding、切分等环节,如何缓解漏召回?
35. Query Rewrite 用在 RAG 流程中的哪个位置?
36. 检索时,是原始 Query 和改写 Query 一起检索,还是只检索改写后的 Query?
37. 除了原始 Query 和改写 Query 双路检索,还有什么方法能够提高召回效果?
38. 是否了解 HyDE?
39. 除了 HyDE 和多角度改写,还有哪些召回策略?
40. 为什么企业级 RAG 通常使用多路召回,而不是只依赖 Query Rewrite?
二面:
1. 你平时使用 Claude 或 Codex 做编程吗?有什么心得或者技巧?
2. 你在里面用了哪些 Skill?
3. 你如何理解 Harness Engineering?
4. 你如何理解 OpenClaw?
5. Claude或者 OpenClaw 具体应该怎么实现?你有去看过吗?
6. 你怎么理解 Loop Agent 或者 Loop Engineering?
7. 最简单的 Loop Agent 应该怎么设计?
8. 你做了两路混合召回之后,又引入了二阶段 Rerank。Rerank 起什么作用?
9. 如果不使用二阶段 Rerank,会有什么问题?
10. Rerank 为什么能够提升检索效果?
11. 既然已经有 BM25 和向量检索,为什么还需要引入 Rerank?
12. 为什么不把 Rerank 作为第三路召回,与 BM25、向量检索一起执行?
13. 三路召回后再进行加权融合,为什么不行?
14. 先用向量检索召回1000条,再用 BM25 缩小到100条,最后用 Rerank 缩小到10条,这样行不行?
15. 第一阶段使用向量模型 A 和 BM25 召回100条,第二阶段不用 Rerank,改用向量模型 B 重排,行不行?
16. 如果向量模型 A 和向量模型 B 的网络结构、训练数据都不同,是否可以利用模型 B 对候选文档重新排序?
17. 你的长期记忆是怎么做的?
18. 长期记忆是怎么召回的?
19. 用户一个月前说喜欢吃辣,一周前又说不能吃辣,现在应该怎么判断他能不能吃辣?
20. 你的长期记忆具体是怎么存储的?
21. 既然记忆存储在向量数据库里,你是怎么对已有记忆进行更新的?
22. 你的上下文压缩是怎么做的?
23. 上下文压缩有没有可能把关键信息压缩丢失?
24. 如果用户购买某个商品花了500元,压缩后把“500元”丢失了怎么办?
25. 你如何定义哪些内容属于重要信息?
26. 面对开放式对话,系统如何判断某条信息必须保留?
27. 如何设计上下文压缩,尽可能避免金额、订单信息等关键数据丢失?
28. 你加入 Query Rewrite 是为了解决什么问题?#发面经攒人品#
本篇目录
- 01
优惠券秒杀中,为什么使用 Redis Lua 脚本进行校验和库存预扣?
- 02
你所说的 Lua 脚本“回退”是指什么?什么情况下需要回退?
上一问 ↑ - 03
如果 Lua 脚本已经执行成功,但后续订单消息发送到 Kafka 失败,应该怎么处理?
上一问 ↑ - 04
只依靠 Lua 脚本和消息队列,就能保证库存不超卖和一人一单吗?
- 05
如果绕过 Redis 入口,直接在数据库中更新库存,数据库层面如何防止超卖?
上一问 ↑ - 06
你简历中提到 Cache Aside,能介绍一下它的完整执行流程吗?
- 07
缓存未命中后,谁负责查询数据库并重新写入缓存?
- 08
为什么采用“更新数据库,然后删除缓存”,而不是“更新数据库,然后直接更新缓存”?
- 09
并发更新缓存时,可能出现什么数据一致性问题?
- 10
为什么使用 ThreadLocal 存储用户信息?
- 11
请求结束后,ThreadLocal 中的数据会自动移除吗?你是怎么清理的?
上一问 ↑ - 12
你的系统整体是不是由 Agent 中控和知识库两部分组成?
- 13
能简单介绍一下 ReAct 的推理与行动机制吗?
- 14
模型在推理过程中,怎么知道应该使用哪个工具?
- 15
你这个 Agent 中一共有多少个工具?
- 16
当 Agent 中包含很多工具和 Skill 时,模型选择工具还会准确吗?
- 17
企业级场景中,一个用户可能拥有 200 多个工具和 Skill,怎么保证工具选择效果?
- 18
有没有了解过,模型在面对多少个工具或 Skill 时,选择效果是最优的?
- 19
通过业务分类减少候选工具时,如果用户问题比较模糊,是否可能选错类别?
上一问 ↑ - 20
如果第一层类别选择错误,导致后面无法找到正确工具,应该怎么处理?
上一问 ↑ - 21
工具很难严格划分到单一业务类别时,分类方案还是否可行?
上一问 ↑ - 22
模型已经思考完成,也选择好了工具,接下来它是怎么真正调用工具的?
- 23
流式输出时,工具名称和参数 JSON 是分片返回的,平台怎么判断已经获得一个完整的工具调用?
- 24
流式场景下,怎么识别完整的 MCP 命令或者 Tool Call 参数?
- 25
ReAct 是一个不断思考、行动、观察的循环,它有没有可能一直循环下去,无法停止?
- 26
你在项目中是否遇到过 Agent 无限循环的问题?你是怎么解决的?
- 27
为什么在 ReAct 前面增加 Plan-and-Execute?
- 28
加入规划机制后,如果模型在执行过程中仍然出现幻觉,应该怎么处理?
- 29
某个问题按照流程必须先调用工具,但模型没有调用工具,直接给出答案,应该怎么解决? 例如用户查询实时天气,模型没有调用天气工具,直接回答“今天是晴天”,怎么防止这种情况?
- 30
如何判断模型的答案是正确、错误还是幻觉?
- 31
工具已经正常调用,真实数据也拿到了,但模型最终回答与工具数据不一致,怎么预防或缓解?
- 32
在 Agent 整个执行流程中,哪些环节可能导致模型出现幻觉?
- 33
除了 Prompt 和 Reflection,还有哪些方法能够降低幻觉?
- 34
如何保证最终回答忠实于工具结果,而不是使用模型自身知识进行补充?
- 35
你的 RAG 使用了向量检索和 BM25 混合召回,为什么要同时使用这两种检索方式?
- 36
向量检索和 BM25 分别解决什么问题?
- 37
为什么仅使用向量检索可能无法很好地召回专业术语、类名和关键词?
- 38
你的向量检索使用的是什么算法?
- 39
是否了解 HNSW 的检索原理?
- 40
HNSW 的层级结构是怎样的?
- 41
HNSW 有哪些局限性?
- 42
为什么 HNSW 的检索性能比较高?
- 43
HNSW 是否可能出现漏召回?
- 44
如果正确结果没有进入 HNSW 的候选集,应该怎么处理?
上一问 ↑ - 45
只考虑 HNSW 或 ANN 检索本身,不考虑 Embedding、切分等环节,如何缓解漏召回?
上一问 ↑ - 46
Query Rewrite 用在 RAG 流程中的哪个位置?
- 47
检索时,是原始 Query 和改写 Query 一起检索,还是只检索改写后的 Query?
上一问 ↑ - 48
除了原始 Query 和改写 Query 双路检索,还有什么方法能够提高召回效果?
- 49
是否了解 HyDE?
- 50
除了 HyDE 和多角度改写,还有哪些召回策略?
- 51
为什么企业级 RAG 通常使用多路召回,而不是只依赖 Query Rewrite?
- 52
你平时使用 Claude 或 Codex 做编程吗?有什么心得或者技巧?
- 53
你在里面用了哪些 Skill?
- 54
你如何理解 Harness Engineering?
- 55
你如何理解 OpenClaw?
- 56
Claude或者 OpenClaw 具体应该怎么实现?你有去看过吗?
- 57
你怎么理解 Loop Agent 或者 Loop Engineering?
- 58
最简单的 Loop Agent 应该怎么设计?
- 59
你做了两路混合召回之后,又引入了二阶段 Rerank。Rerank 起什么作用?
- 60
如果不使用二阶段 Rerank,会有什么问题?
- 61
Rerank 为什么能够提升检索效果?
- 62
既然已经有 BM25 和向量检索,为什么还需要引入 Rerank?
- 63
为什么不把 Rerank 作为第三路召回,与 BM25、向量检索一起执行?
上一问 ↑ - 64
三路召回后再进行加权融合,为什么不行?
上一问 ↑ - 65
先用向量检索召回1000条,再用 BM25 缩小到100条,最后用 Rerank 缩小到10条,这样行不行?
上一问 ↑ - 66
第一阶段使用向量模型 A 和 BM25 召回100条,第二阶段不用 Rerank,改用向量模型 B 重排,行不行?
上一问 ↑ - 67
如果向量模型 A 和向量模型 B 的网络结构、训练数据都不同,是否可以利用模型 B 对候选文档重新排序?
上一问 ↑ - 68
你的长期记忆是怎么做的?
- 69
长期记忆是怎么召回的?
- 70
用户一个月前说喜欢吃辣,一周前又说不能吃辣,现在应该怎么判断他能不能吃辣?
上一问 ↑ - 71
你的长期记忆具体是怎么存储的?
- 72
既然记忆存储在向量数据库里,你是怎么对已有记忆进行更新的?
上一问 ↑ - 73
你的上下文压缩是怎么做的?
- 74
上下文压缩有没有可能把关键信息压缩丢失?
- 75
如果用户购买某个商品花了500元,压缩后把“500元”丢失了怎么办?
上一问 ↑ - 76
你如何定义哪些内容属于重要信息?
- 77
面对开放式对话,系统如何判断某条信息必须保留?
- 78
如何设计上下文压缩,尽可能避免金额、订单信息等关键数据丢失?
上一问 ↑ - 79
你加入 Query Rewrite 是为了解决什么问题?#面经#