场景设计面试题
目录概述
场景设计题没有标准答案,考的是你在真实业务场景下的分析能力、问题定位能力和方案设计能力。这是区分"背八股"和"真做过"的最佳方式。
这个目录帮你把技术知识串联起来,形成解决真实问题的能力。
【面试官心理】 我出场景题,通常从生产问题开始:"你们系统有没有出现过内存持续增长的问题?怎么排查和解决的?" 能讲清楚排查过程的占 30%,能说清楚根因和解决方案的占 10%。这种真实案例比任何八股文都更能说明问题。
内容范围
核心主题
生产问题排查:
- 内存泄漏排查:heap dump、MAT、Arthas
- CPU 飙高排查:top、jstack、perf
- 响应超时排查:链路追踪、慢查询、日志分析
- 线程池满排查:dump 线程、分析死锁、GC 影响
- 数据库慢查询排查:EXPLAIN、索引优化、连接池配置
- 分布式链路追踪:Skywalking、Zipkin、Jaeger
业务场景分析:
- 库存超卖问题:乐观锁、分布式锁、Redis 原子操作
- 幂等性设计:唯一 ID、数据库去重、Token 机制
- 接口防刷:限流、验证码、黑名单
- 数据一致性:同步双写、异步消息、补偿机制
- 热点数据处理:缓存、隔离、分片
方案设计能力:
- 性能优化场景:瓶颈分析、方案选型、效果评估
- 容量规划场景:流量预估、资源评估、成本控制
- 高可用场景:故障转移、降级熔断、多活设计
- 可扩展场景:分库分表、服务拆分、模块解耦
架构演进思维:
- 从 0 到 1:MVP 架构、最小系统
- 从 1 到 10:架构优化、技术债偿还
- 从 10 到 100:规模化扩展、中台化
- 技术选型:自研 vs 开源 vs 商业方案
面试题分级
高频必考题 🔴
内存持续增长排查
面试官问:"你们的 Java 服务内存持续增长,怎么排查?"
能说出"用 MAT 分析 heap dump"的占 50%,能说清楚常见内存泄漏原因的占 30%,能说完整排查流程的占 15%,能讲清楚具体案例和解决过程的只有 5%。
【面试官心理】 我问他内存问题,其实是在测试他有没有真实的排障经验。能说出工具名称的不一定真的用过,能讲清楚排查过程每一步在干什么、为什么要这么做的,才是真正踩过坑的候选人。
接口响应时间突然增加
面试官问:"你们的某个接口平时响应时间 10ms,突然变成 500ms,怎么排查?"
能说出"检查数据库"的占 60%,能说出"检查 Redis/中间件"的占 50%,能说完整排查链路的占 20%,能说清楚怎么定位是哪个环节问题的只有 10%。
消息队列积压
面试官问:"消息队列积压了怎么处理?"
能说出"增加消费者"的占 70%,能说出"看日志找原因"的占 50%,能说清楚消息过期和数据丢弃风险的占 20%,能说清楚完整处理流程和预防方案的只有 5%。
中频常考题 🟡
- 分布式锁选型与实现
- 缓存穿透、击穿、雪崩
- 数据库连接池打满
- 服务雪崩与恢复
- 日志链路追踪
低频了解题 🟢
- 长期不重启 JVM 膨胀问题
- DNS 缓存与 TTL
- 网络超时设置原则
学习路径指引
P5 候选人(校招/初级社招)
先掌握单一问题的排查思路:日志分析、基础命令、常见工具使用。能回答一些常见的场景问题,理解问题的基本解决思路。
P6 候选人(中级社招)
必须具备复杂问题的排查能力。能从表象出发,层层分析定位根因。能设计模块级的解决方案。能使用 Arthas、Skywalking 等工具。
P7 候选人(高级/架构方向)
必须有完整的系统设计经验。能从业务场景出发设计整体方案。能处理跨团队的技术协调。能预判架构风险并提前规避。
【面试官心理】 P7 候选人做场景题,我最看重的是"闭环"能力。不是给出方案就完了,而是能说清楚:这个方案谁来做、什么时候做、怎么做、做完怎么验证、出了问题怎么回滚。这种闭环意识是高级工程师和架构师的分水岭。
场景模拟训练
训练方法
拿到一个场景题,先不要急着给答案。按照以下步骤思考:
- 澄清需求:向面试官确认关键约束条件和业务背景
- 分析瓶颈:从数据流角度分析可能的瓶颈点
- 给出方案:提出 2-3 个可行方案
- 权衡对比:对比各方案的优缺点和适用场景
- 选择结论:给出推荐方案并说明原因
注意事项
- 不要一开始就说"这个很简单"
- 不要只给一个方案就完事
- 不要忽略非功能性需求(性能、可用性、安全)
- 不要假设所有问题都能靠技术解决
避坑指南
坑一:没有理解业务场景就答题
上来就画架构图,说一堆高大上的技术名词。面试官追问业务约束就答不上来。
坑二:只给方案不评估代价
方案听起来很好,但没考虑实现成本、运维成本、扩展性。好的方案要考虑工程代价。
坑三:忽略非功能需求
只关注功能实现,忽略了性能、可用性、安全等非功能需求。