面灵AI

平安科技后端全栈一面:RAG 项目与 JVM 内存

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 能否做一个自我介绍,并评价自己的性格与做事方式?
  2. Spring Boot 的基本原理是什么,它与 Spring MVC 有什么区别?
  3. 对 JDK 8 的垃圾回收原理有哪些了解?
  4. 项目中是否遇到过堆内存溢出,怎样解决?
  5. 出现内存溢出时,按什么顺序排查?
  6. Agent 是什么,平时用过哪些相关工具?
  7. 个人 RAG 项目解决了什么问题?
  8. 项目使用了哪个 Rerank 模型?
  9. 后端是否使用 Java,前端采用什么技术栈?
  10. RAG 从检索到问答有哪些主要步骤?
  11. 文档解析时会配置哪些参数?
  12. RAG 与 Agent 有什么关系和区别,什么场景会用到 RAG?
  13. Agent 的记忆可以怎样分类?
  14. HashMap 的底层结构是什么,JDK 7 到 JDK 8 有哪些变化?
  15. HashMap 的默认负载因子是多少?
  16. JVM 的内存区域怎样划分,哪些区域可能发生内存溢出?
  17. JDK 8 前后方法区的实现有什么变化,元空间使用哪部分内存?
  18. 对 CMS 和 G1 有哪些了解?
  19. 你有什么问题想问团队?

《参考解析》

RAG 要能顺着一份文档讲到底

文档先经过解析、切分与索引;收到问题后检索候选片段,必要时重排,再把相关证据交给模型生成答案。项目介绍还应交代引用怎样展示、权限怎样过滤、文档更新后索引何时生效。chunk 大小、重叠长度、表格与标题的保留方式,都需要结合实际文档测试。

RAG 负责给回答补充外部资料;Agent 通常还涉及选择下一步行动、调用工具和维护执行状态。一个 Agent 可以调用检索工具,但不是每个检索问答系统都需要复杂的 Agent 循环。

OOM 先读清错误类型

堆不足、元空间耗尽、直接内存不足和无法创建本地线程,排查方向不同。先结合报错、进程内存、线程数量与 GC 状态定位,再分析相关转储或性能数据。堆里对象多,还需要判断是容量不足、突发请求堆积,还是对象被长期引用。扩大堆只对其中一部分原因有帮助。

内存区域不是一张物理分区图

JVM 规范描述堆、方法区、线程栈等运行时区域;HotSpot 的具体实现随版本演进。JDK 8 以使用本地内存的元空间替代永久代,不能说所有类相关对象都因此离开了 Java 堆。程序计数器在 JVM 规范中没有规定 OutOfMemoryError 情形,也不能据此推导整个线程运行绝不会内存不足。

HashMap 只背阈值不够

JDK 8 常见实现用数组配合链表或红黑树,默认负载因子为 0.75。扩容阈值与容量、负载因子有关,树化还受桶内冲突和数组容量影响。它本身不提供并发修改保证,涉及共享更新时需要另行选择同步方式或并发容器。