高驰全栈开发一面
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 自我介绍。
- 实习业务背景是什么?做了哪些内容?
- 详细讲一下实习经历。
- 详细讲一下点评项目。
- 本地生活服务的库存秒杀怎么实现?
- 商品补库存时怎么处理?
- 数据库更新成功但 Redis 写入失败,Redis 库存比真实库存少,怎么办?
- Java 的锁和 JUC 并发工具怎么理解?
- 数据库事务和索引怎么理解?
《参考解析》
库存秒杀的核心是“少卖可以接受,超卖不行”。常见做法是 Redis 预扣库存、数据库唯一约束或条件更新兜底,再把订单写入异步化。Redis 扣减要用原子脚本,判断库存和扣减不能拆成两次调用。
补库存要考虑并发:直接 incr 可能把已经售罄的标记重新打开,最好用带版本或流水的入库记录,再按可售库存重算。数据库成功、Redis 失败时,不能假设缓存一定正确;可以用消息队列重试、binlog 补偿或定时对账,把 Redis 当缓存而不是唯一账本。
JUC 部分要能讲 synchronized 与 Lock 的差异、AQS、CAS、线程池和并发容器。事务与索引则要落到隔离级别、MVCC、联合索引和最左前缀,不要只背名词。