面灵AI→

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

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

《面试题目》

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

《参考解析》

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