场景设计面试题

目录概述

场景设计题没有标准答案,考的是你在真实业务场景下的分析能力、问题定位能力和方案设计能力。这是区分"背八股"和"真做过"的最佳方式。

这个目录帮你把技术知识串联起来,形成解决真实问题的能力。

【面试官心理】 我出场景题,通常从生产问题开始:"你们系统有没有出现过内存持续增长的问题?怎么排查和解决的?" 能讲清楚排查过程的占 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 商业方案

面试题分级

级别考察重点期望回答判分标准
P5单一问题排查、基础方案设计能给出基本思路入门过关
P6复杂问题定位、模块级设计能分析问题根源,给出可行方案深度过关
P7全链路设计、架构演进能权衡利弊,给出完整方案经验闭环

高频必考题 🔴

内存持续增长排查

面试官问:"你们的 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 候选人做场景题,我最看重的是"闭环"能力。不是给出方案就完了,而是能说清楚:这个方案谁来做、什么时候做、怎么做、做完怎么验证、出了问题怎么回滚。这种闭环意识是高级工程师和架构师的分水岭。

场景模拟训练

训练方法

拿到一个场景题,先不要急着给答案。按照以下步骤思考:

  1. 澄清需求:向面试官确认关键约束条件和业务背景
  2. 分析瓶颈:从数据流角度分析可能的瓶颈点
  3. 给出方案:提出 2-3 个可行方案
  4. 权衡对比:对比各方案的优缺点和适用场景
  5. 选择结论:给出推荐方案并说明原因

注意事项

  • 不要一开始就说"这个很简单"
  • 不要只给一个方案就完事
  • 不要忽略非功能性需求(性能、可用性、安全)
  • 不要假设所有问题都能靠技术解决

避坑指南

坑一:没有理解业务场景就答题

上来就画架构图,说一堆高大上的技术名词。面试官追问业务约束就答不上来。

坑二:只给方案不评估代价

方案听起来很好,但没考虑实现成本、运维成本、扩展性。好的方案要考虑工程代价。

坑三:忽略非功能需求

只关注功能实现,忽略了性能、可用性、安全等非功能需求。

导航指引