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