01 UV 统计怎么做的?为什么要这么实现?用 HyperLogLog 为什么不会占用很大空间?16KB 怎么去存储这个数据?考察候选人对 Redis HyperLogLog 原理、内存占用和 UV 统计场景的理解,以及能否解释清楚概率性数据结构在业务中的取舍。 查看学习思路
02 秒杀为什么要用消息队列?Redis 挂了怎么办?整个集群都挂了怎么办?库存信息都在 Redis 里,限流取不到库存了怎么办?怎么保证 Redis 里的库存和 DB 里的库存一致,不会出错?Redis 做库存扣减怎么保障原子性?不用 Lua 脚本会带来什么问题?考察候选人对高并发秒杀场景下消息队列削峰、Redis 高可用、缓存与数据库一致性、原子性保障等综合设计能力。 查看学习思路
03 HashMap 如何解决 hash 冲突?用 HashMap 举例说明什么是线程安全?Java 如何解决 HashMap 的线程安全问题?CAS 是什么?考察候选人对 Java 集合底层、线程安全概念及 CAS 机制的理解。 查看学习思路