面灵AI

即时设计Java后端社招二面面经

轮次
二面
时间
2026-09
来源
牛客网

《面试题目》

  1. 高 QPS 的读接口需要做些什么来支撑流量?
  2. 数据库发生变化时缓存需要怎么处理?如何解决缓存与数据库不一致?
  3. Spring 注解型事务有哪些失效场景?事务提交后触发操作有哪些实现方式?
  4. 从前端发起请求到 Tomcat 执行业务代码,网络和系统层面分别发生了什么?
  5. TCP 半连接和全连接是什么?maxConnectionsacceptCountmaxThreads 分别在哪个环节起作用?
  6. Tomcat 线程池和 Java 线程池有什么区别?
  7. 并发请求十次并返回最大值,有哪些实现方式?
  8. Java 如何保证原子性?哪些数据结构是线程安全的?
  9. MySQL 有两个单列索引时如何选择?联合索引理论上应走但没有走的原因有哪些?
  10. 如何定位和解决 OOM?People 对象创建会占用 JVM 哪些内存?
  11. 没有同时重写 equalshashCode 会有什么问题?
  12. 生成视频的长耗时接口如何设计表、流程和异常处理?
  13. MQ 什么时候会重复消费?有哪些幂等方法?
  14. 如何让两个线程交替打印奇偶数?

《参考解析》

  1. 高 QPS 读链路:通过本地或分布式缓存、只读副本、合理索引、连接池和水平扩展降低单点压力,并用限流和超时保护尾延迟;优化前先以监控确认瓶颈。
  2. 缓存一致性:常见做法是先提交数据库更新,再删除缓存;删除失败要有可观测的重试或消息补偿,不能把缓存写回当成强一致保证。
  3. 长耗时生成任务:提交请求只创建带状态和幂等键的任务记录,后台 worker 执行并更新进度与终态;超时、重试和进程重启都要能收敛,客户端通过查询或推送获取结果。