美团AI后端开发实习面经
《面试题目》
- 平时怎么使用ai
- java中线程池有用过吗?主要是解决什么问题?
- java中实现线程同步都有哪些方法。
- 悲观锁和乐观锁是在什么场景下使用的?
- 看过源代码吗?
- 那项目里有用过什么设计模式吗?
- 责任链了解吗?
- 之前有了解过JVM相关的内容吗
- 了解哪些垃圾回收器,以及垃圾回收算法?
- 什么情况下会发生Full GC?
- 频繁发生Full GC该怎么排查?
- 怎么定位到代码?
- 怎么看一个SQL的执行计划?
- 深分页慢查询问题?
- mysql的InnoDB引擎数据结构是什么样?
- mysql 怎么解决幻读问题?
- 用redis主要是解决什么问题?
- redission看门狗
- 怎么保证缓存数据和DB里的数据的一致性?
《参考解析》
- 线程池解决的问题:核心是降低资源消耗,通过复用线程减少创建/销毁带来的开销;控制并发线程数量,防止内存溢出(OOM)。
- Full GC 排查:通过
jstat查看堆内存占用,使用jmap导出堆内存快照(Dump),配合 MAT 工具分析对象引用链,找出大对象或内存泄漏点。 - 深分页优化:使用“延迟关联”技术(先通过索引查出ID,再根据ID回表查询)或基于上次分页的 ID 进行范围查询(seek method),避免扫描过大偏移量。
- MySQL幻读解决:通过
Next-Key Lock(行锁+间隙锁)机制,在 RR 隔离级别下锁定索引间的间隙,防止其他事务插入新数据。 - Redis一致性保证:常用方案是“删除缓存”而非“更新缓存”。为了保证最终一致性,可采用延时双删或消费数据库 Binlog(使用 Canal)进行异步删除缓存。