上海某小厂Java后端一面面经

上海某小厂 · Java后端开发工程师 · 一面 · 上海 · 2026-07

《面试题目》

  1. 自我介绍,有没有学校里面比赛的经历
  2. 简历上的项目介绍,缓存的使用
  3. Redis 解决缓存雪崩、缓存穿透、缓存击穿问题的方法
  4. 项目中关于并发的解决措施
  5. Redis 中分布式锁解决并发安全问题的方法与思路
  6. 关于读写一致性的问题的解决办法,项目中是如何解决的
  7. 有没有具体测试过项目的性能,项目还能怎样改进
  8. 个人的优点与缺点

《参考解析》

  1. 缓存穿透/击穿/雪崩:穿透(查询不存在的数据)用布隆过滤器或缓存空值预防;击穿(单个热点 key 过期瞬间大量请求打到数据库)用互斥锁重建缓存或逻辑过期方案;雪崩(大量 key 同时过期)用过期时间加随机值打散、结合多级缓存与限流降级。
  2. Redis 分布式锁:核心是 SET key value NX EX 保证加锁的原子性,value 用唯一标识(如 UUID)防止误删他人的锁,释放锁用 Lua 脚本保证”判断+删除”的原子性;生产环境可用 Redisson 的看门狗机制自动续期,避免业务未执行完锁提前过期。
  3. 读写一致性:常见方案是”Cache Aside”——更新数据库后删除缓存(而非直接更新缓存),并结合延迟双删应对主从同步延迟导致的脏读;对一致性要求更高的场景可监听 binlog(如 Canal)异步更新缓存。