美团AI后端开发实习一面面经
《面试题目》
1、实习拷打 2、项目拷打 3、讲讲整个项目最有技术难点或最能展现实力的一个点 4、用Redis做缓存,具体针对什么热点数据?什么是热点数据? 5、引入缓存后,怎么解决缓存和DB之间的一致性? 6、看你之前实习用的是go,我们这是Java,你能说说这两个语言的区别吗? 7、MySQL的隔离级别有哪几种?区别是什么? 8、可重复读隔离级别可以彻底解决幻读问题吗?
《参考解析》
- Redis热点数据:热点数据指在短时间内被高频访问的数据(如首页轮播图、热搜词)。判定标准通常基于访问QPS,可通过Redis集群分片、本地缓存(如Caffeine)或热key拆分来处理。
- 缓存一致性:常用策略为“先更新DB,再删除缓存”。极端情况下可配合延时双删或订阅Binlog(如Canal)进行异步更新,以降低脏数据风险。
- Go与Java区别:Go倾向于轻量级协程(Goroutine)和通信顺序进程(CSP)模型,注重简洁高效;Java生态庞大,拥有完善的JVM内存管理、成熟的Spring框架及强大的多线程并发库。
- MySQL幻读:在InnoDB的Repeatable Read(可重复读)下,通过Next-Key Lock(记录锁+间隙锁)解决了大部分幻读。但并非完全消除,在某些特殊快照读与当前读混用场景下仍需注意。