美团后端一面
1. 你项目里用分布式锁解决缓存问题的场景,具体是怎么实现的?
2. 如果是秒杀场景,怎么用分布式锁来防止超卖?
3. 获取和释放分布式锁时,可能会遇到哪些问题?
4. 分布式锁会有误删的风险吗?
5. 怎么保证线程释放的是自己加的锁,而不是误删别人的?
6. 为什么推荐用 Lua 脚本来释放锁?它解决了什么问题?
7. 什么是缓存穿透?有什么解决方案?
8. 实习项目中是怎么设计接口幂等性的?
9. Kafka 会出现消息乱序吗?怎么保证消息的顺序消费?
10. 你的项目里,分布式唯一 ID 是怎么生成的?
11. 聊聊你对 CountDownLatch 的理解和使用场景。
12. CountDownLatch 是怎么实现“等待所有子线程执行完毕”的?
13. 看过 CountDownLatch 的源码吗?它的底层原理是什么?
14. AQS 是什么?讲讲它的作用。
15. MySQL 常用的索引结构有哪些?
16. 解释一下什么是“最左前缀匹配原则”。
17. 联合索引是什么?
18. 比如有个 (A, B) 的联合索引,当查询条件是 `WHERE B = ?` 时,索引会生效吗?
19. 聊聊数据库事务的 ACID 特性。
20. 事务的隔离级别有哪几种?
21. MySQL 的可重复读隔离级别是怎么实现的?
22. 数据库里的锁,比如行锁、表锁,你了解多少?
23. 死锁是怎么产生的?如何避免?
24. 讲讲什么是乐观锁和悲观锁。
25. 你在实习中提到提升了流水线效率,能具体讲讲是怎么做的吗?
26. CountDownLatch 和线程池一般会怎么结合使用?
27. 线程池的参数要怎么设置比较合理?
28. 讲一下线程池完整的执行流程。
29. 数据结构里的“堆”了解吗?什么是大顶堆和小顶堆?