标签题目
分布式锁相关面试题
Redis Lua 脚本怎么实现分布式锁
这题考察 Redis 分布式锁的正确最小模型:SET NX PX 原子加锁、唯一 value 标识持有者、Lua 原子校验后删除,以及过期、续期和主从故障风险。
同题还出现在 1 个公司岗位
业务中为什么要使用分布式锁?
这题考察分布式互斥的业务动机、锁粒度、正确实现条件和替代方案,重点是说明锁只能保护有限临界区。
Redis 分布式锁的单点故障怎么解决?
这题考察 Redis 锁在单点、异步复制和故障切换下的互斥风险,需要按安全等级给出方案,而不是只说上集群。
ZooKeeper 实现分布式锁的原理是什么?
这题考察临时顺序节点、前驱监听、会话语义和异常重试流程,重点是说明为什么相对公平且能避免惊群。
分布式锁的使用场景?
分布式锁用于解决多个进程、多个实例、多个节点同时争抢同一份业务资源时的互斥问题,典型场景包括库存扣减、定时任务去重、幂等控制和资源抢占。面试回答不能只说“防止并发”,还要讲清锁的粒度、过期时间、唯一 token、续期、释放校验、可重入、公平性,以及 Redis、ZooKeeper、数据库方案在性能、一致性和故障边界上的取舍。
分布式锁代码逻辑里如果发生异常 catch 的时候需要做什么?
分布式锁保护的业务逻辑发生异常时,catch 的重点不是立刻解锁,而是让失败可见、记录足够上下文、决定补偿或重试。锁释放应统一放在 finally,并在释放前确认当前请求仍然持有锁,避免锁泄漏、误删他人锁和异常被吞导致的数据不一致。