人生第一场面试:小厂Java面经

某小厂 · Java开发工程师 · 一面 · 2026-07

《面试题目》

  1. 自我介绍
  2. 项目最大的亮点是什么?(秒杀场景的一人一单与防超卖设计)
  3. Redisson 实现分布式锁时,关键参数有哪些?key 代表什么?哪些参数有默认值?
  4. Redisson 分布式锁有什么缺陷和优点?有没有更灵活的实现方式?
  5. Redis 持久化的两种方式是什么?有什么区别?
  6. Redis 的淘汰策略有哪些?
  7. HashMap 的底层数据结构、put 方法的过程、扩容机制,以及负载因子为什么是 0.75?
  8. 手写 HashMap 的头插法和尾插法
  9. SQL 如何调优?慢查询如何排查?
  10. 索引失效的几种情况
  11. 字节流和字符流的区别
  12. Redis 批处理相关的优化手段
  13. JVM 的内存模型

《参考解析》

  1. Redisson 分布式锁的核心机制:加锁时通过 Lua 脚本保证”判断锁是否存在 + 设置锁 + 记录持有者”这一组操作的原子性;支持可重入(用 hash 结构记录同一线程的重入次数);通过看门狗(Watchdog)机制在锁未释放前每隔一段时间自动续期,避免业务未执行完锁却提前过期导致的并发问题。
  2. HashMap 负载因子为什么是 0.75:这是时间和空间成本的折中——负载因子过高(接近 1)会导致哈希冲突概率显著上升,链表变长影响查询效率;负载因子过低则会频繁扩容、浪费内存空间。0.75 结合了泊松分布下哈希冲突概率的理论测算,是一个较优的平衡点。
  3. Redis 两种持久化方式的区别:RDB 是某个时间点的全量内存快照,恢复速度快但可能丢失最后一次快照之后的数据;AOF 记录每一条写命令,通过重写机制压缩体积,数据完整性更高但恢复速度相对较慢,生产环境常见做法是两者结合使用以兼顾恢复速度与数据安全性。