Java后端面试场景题大全:2025年高频考点深度解析
一、分布式与高并发场景
1. 秒杀系统设计(千万级QPS)
场景需求:
限量商品1000件,预计瞬时流量50万QPS
要求:防超卖、限流、高性能、高可用
技术方案:
分层削峰架构:
前端层:静态资源CDN + 按钮防重复点击 + 数学验证码
网关层:Nginx限流(令牌桶算法) + IP黑名单
服务层:Redis集群预减库存(Lua脚本保证原子性)
异步化:RocketMQ/Kafka削峰填谷,异步下单
数据层:MySQL最终库存扣减
关键优化点:
热点隔离:独立Redis集群处理秒杀商品,避免影响主业务
本地缓存:使用Caffeine缓存商品基本信息
动态扩容:Kubernetes自动扩缩容应对流量峰值
防作弊:风控系统(用户行为分析、设备指纹)
2. 分布式锁设计
场景对比:
方案 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Redis分布式锁 | 性能高(citation:2) | 非强一致(citation:2) | 秒杀系统(citation:2) |
ZooKeeper分布式锁 | 强一致(citation:2) | 性能较低(citation:2) | 配置中心(citation:2) |
ETCD分布式锁 | 支持租约(citation:2) | 运维复杂(citation:2) | 服务发现(citation:2) |
Redisson最佳实践:
坑点解决:
锁续期:Watch Dog自动续期机制
集群模式:RedLock算法解决单点故障
锁粒度:细粒度锁(按商品ID分片)
3. 分布式事务解决方案
业务场景:用户下单需要同时操作订单服务、库存服务和账户服务
方案对比:
方案 | 原理 | 适用场景 | 优缺点 |
---|---|---|---|
TCC模式 | Try-Confirm-Cancel三阶段15 | 金融级一致性7 | 开发复杂,性能中等7 |
SAGA模式 | 事务拆分+补偿机制15 | 长事务场景7 | 最终一致性,实现简单7 |
本地消息表 | 数据库+定时任务15 | 中等一致性要求7 | 实现简单,有延迟7 |
TCC模式实战:
二、数据库与缓存实战
1. 十亿级数据分页优化
反例SQL:SELECT * FROM orders ORDER BY id LIMIT 1000000, 10
优化方案:
游标分页(推荐):
ES search_after:
预计算策略:定时任务生成热门页缓存
2. 缓存一致性保障
经典问题:如何保证MySQL与Redis数据同步?
解决方案:
延迟双删:
订阅Binlog:
Canal监听MySQL变更
解析Binlog发送到MQ
消费者更新Redis
多级缓存策略:
本地缓存(Caffeine/Guava)→ Redis → DB
本地缓存设置短过期时间(3-5秒)
3. MySQL深度优化
索引失效场景:
LIKE '%xx'
函数计算(如
WHERE DATE(create_time) = '2025-08-21'
)OR条件
隐式类型转换
死锁排查步骤:
查看死锁日志:
SHOW ENGINE INNODB STATUS
分析锁等待图
常见死锁场景:事务交叉更新多表、索引失效导致表锁
三、微服务与系统架构
1. 全链路灰度发布
实现方案:
流量标记:网关根据Header/Cookie添加流量标签
服务路由:Spring Cloud Gateway根据标签路由到对应版本
数据隔离:影子表方案
Istio实践:
2. 服务熔断与降级
Sentinel配置:
降级策略:
返回兜底数据:缓存默认值
异常降级:返回友好提示
限流降级:拒绝部分请求
四、新兴技术场景
1. Service Mesh落地
落地难点:
Sidecar带来的性能损耗(约增加10%延迟)
多语言服务治理的统一化
全链路灰度发布实现
Istio最佳实践:
逐步迁移流量
监控Sidecar资源消耗
使用Telemetry V2优化性能
2. Serverless应用
适用场景:
定时对账任务
图片/视频转码
日志分析处理
AWS Lambda示例: