面灵AI

美团Java后端日常实习一面面经

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

《面试题目》

  1. RAG 的流程是什么?
  2. 如何评测 RAG,并通过对比得到数据提升?
  3. Java 中的锁有哪些?
  4. synchronizedReentrantLock 有什么区别?
  5. 线程池有哪些核心参数?
  6. 线程池的创建流程是什么?
  7. 线程之间如何通信?
  8. 如何让三个线程循环按顺序打印 abc?
  9. 如何反转链表?
  10. 如何判断链表是否有环?

《参考解析》

  1. RAG 流程与评测:先切分和索引文档,再检索相关片段并交给模型生成答案;评测应固定数据集和指标,对召回、事实性、完整性及延迟分别做基线和改动后的对比。
  2. 锁的选择synchronized 语法简单、由 JVM 自动释放;ReentrantLock 支持可中断、公平锁和多个条件队列,需显式在 finally 中释放。
  3. 线程池:核心参数包括核心/最大线程数、队列、存活时间、线程工厂和拒绝策略;创建时提交任务会先创建核心线程,核心线程满后入队,队列满再扩容到最大线程,仍无法接收才执行拒绝策略。
  4. 线程通信与顺序输出:可用 wait/notifyCondition、阻塞队列或信号量;按固定状态轮转并在每次唤醒后重新检查条件,才能保证 abc 顺序和正确处理中断。
  5. 链表算法:反转链表维护前驱、当前和后继三个指针逐步改向;判断环可用快慢指针,若两者相遇则有环,否则快指针先到达空节点即无环。