即时设计Java后端社招二面面经
- 轮次
- 二面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 高 QPS 的读接口需要做些什么来支撑流量?
- 数据库发生变化时缓存需要怎么处理?如何解决缓存与数据库不一致?
- Spring 注解型事务有哪些失效场景?事务提交后触发操作有哪些实现方式?
- 从前端发起请求到 Tomcat 执行业务代码,网络和系统层面分别发生了什么?
- TCP 半连接和全连接是什么?
maxConnections、acceptCount、maxThreads分别在哪个环节起作用? - Tomcat 线程池和 Java 线程池有什么区别?
- 并发请求十次并返回最大值,有哪些实现方式?
- Java 如何保证原子性?哪些数据结构是线程安全的?
- MySQL 有两个单列索引时如何选择?联合索引理论上应走但没有走的原因有哪些?
- 如何定位和解决 OOM?
People对象创建会占用 JVM 哪些内存? - 没有同时重写
equals和hashCode会有什么问题? - 生成视频的长耗时接口如何设计表、流程和异常处理?
- MQ 什么时候会重复消费?有哪些幂等方法?
- 如何让两个线程交替打印奇偶数?
《参考解析》
- 高 QPS 读链路:通过本地或分布式缓存、只读副本、合理索引、连接池和水平扩展降低单点压力,并用限流和超时保护尾延迟;优化前先以监控确认瓶颈。
- 缓存一致性:常见做法是先提交数据库更新,再删除缓存;删除失败要有可观测的重试或消息补偿,不能把缓存写回当成强一致保证。
- 长耗时生成任务:提交请求只创建带状态和幂等键的任务记录,后台 worker 执行并更新进度与终态;超时、重试和进程重启都要能收敛,客户端通过查询或推送获取结果。