系统设计不是秒杀、短链这类场景题的堆砌,而是”把业务需求拆成稳定、可维护、可扩展的工程方案”的完整能力。本模块的文章按工程基础、常用框架、安全与扩展三大组组织,本文说明各组内容与依赖关系,并给出推荐学习顺序。

模块全景:三大主题组

第一组:工程基础

  • 系统设计基础专题:RESTful API、软件工程、代码命名、重构、单元测试五篇,解决”接口怎么定清楚、代码怎么写干净”的问题。
  • 设计模式:梳理单例、工厂、代理、策略、观察者等常见模式各自封装了什么变化点。
  • 系统设计常见面试题:短链、秒杀、海量数据处理等场景题合集,是检验基础的试金石。

第二组:常用框架

  • Spring & Spring Boot 专题:IoC、AOP、Bean 生命周期、声明式事务、自动装配,Java 后端事实上的标准框架。
  • MyBatis:#{} 与 ${}、动态 SQL、缓存与分页,理解半自动化 ORM 的取舍。
  • Netty:Reactor 模型、事件循环、ChannelPipeline,高性能网络编程的入口。

第三组:安全与扩展

  • 认证授权与数据安全:认证与授权的区别、Session/Token/JWT/OAuth2、SSO、RBAC 权限模型、加密算法、数据脱敏。
  • 定时任务:从单机 Timer 到分布式任务调度框架的选型脉络。
  • 实时消息推送:短轮询、长轮询、SSE、WebSocket 的取舍。
  • J2EE 基础知识:Servlet 模型与 J2EE 到 Jakarta EE 的演进,理解 Java Web 框架的地基。

依赖关系

三组不是并列关系,而是层层支撑:

工程基础(API / 测试 / 重构 / 模式)
├──> 框架(Spring 用 IoC/AOP 落地模式,MyBatis 依赖事务与 API 概念)
└──> 安全(认证授权落在过滤器链与 API 契约之上)
└──> 扩展主题(定时任务、消息推送按业务需要取用)

具体来说:不懂资源建模就设计不好鉴权边界;不理解 IoC 就看不懂 Spring Security 的过滤器链;没写过测试,重构和模式都只是纸上谈兵。场景面试题则相反——它消耗前面所有积累,适合用来检测,不适合用来起步。

推荐学习顺序

  1. 先建清单:快速过一遍系统设计常见面试题,摸清自己缺什么,带着问题学。
  2. 打地基:按”软件工程 → RESTful API → 命名 → 单元测试 → 重构”读完系统设计基础专题。
  3. 学模式:结合真实代码理解设计模式,重点看它们在 Spring 里的应用(代理、模板方法、责任链)。
  4. 啃框架:Spring/Spring Boot 是重心,吃透 IoC 与 AOP 两个核心;MyBatis、Netty 按岗位需要补。
  5. 补安全:认证授权基础 → JWT → 权限系统设计 → 加密与脱敏,这条线内部依赖强,别跳读。
  6. 按需扩展:定时任务、实时推送、J2EE 历史在用到时再读,性价比最高。

时间紧张备战面试时,可以压缩为:面试题清单 → 基础专题中的 RESTful 与单元测试两篇 → Spring 核心 → 认证授权与 JWT,其余暂缓。

使用建议

  • 每组读完回到面试题清单自测,能把方案讲清楚——目标、约束、取舍、风险——才算过关。
  • 系统设计能力的核心是权衡而不是名词:评审任何方案时先问”它解决了什么约束,放弃了什么”。
  • 本模块管”单个系统怎么设计好”;系统怎么扛住规模,请配合高性能、高可用、分布式模块一起读。

小结

  • 本模块分三组:工程基础、常用框架、安全与扩展,呈”基础支撑框架、框架支撑安全”的依赖结构。
  • 推荐顺序:面试题摸底 → 工程基础 → 设计模式 → Spring → 安全 → 按需扩展。
  • 场景题用来检验积累而不是起步;权衡意识比组件清单更重要。