设计与架构

面试官问:"你简历上写'有架构设计经验',那你说说,你设计过哪些架构?"

很多候选人会愣住。不是因为没做过,而是从来没从架构的视角复盘过自己的项目。

今天这个模块,就是帮你补上这块短板。

一、内容版图

设计这个领域,分三层:

第一层:设计模式(patterns)

23种经典设计模式,不是让你背,是让你理解"为什么要这样设计"。我会挑面试高频的、单例/工厂/策略/装饰器这些重点讲,讲到你能判断"这个场景用这个模式比那个模式好"为止。

第二层:架构模式(architectural)

分层架构、事件驱动、CQRS、EDA……这些是架构的"套路"。我会告诉你每种套路适用什么场景,有什么trade-off,怎么说服面试官选这个而不是那个。

第三层:系统设计(system-design)

短链接、抢红包、秒杀、消息流……这些是面试的深水区。没有标准答案,考察的是你在资源有限的情况下怎么权衡、怎么取舍、怎么表达。

【架构权衡】

这个模块的核心目标只有一个:让你从"被问架构题就慌"进化到"能把架构决策讲得让面试官点头"。

二、核心知识点

2.1 设计模式

模式面试频率考察角度
单例模式🔴 高频线程安全、懒汉 vs 饿汉、枚举单例
工厂模式🟡 中频简单工厂 vs 工厂方法 vs 抽象工厂
策略模式🟡 中频与 if-else 的本质区别、Spring 的应用
装饰器模式🟡 中频IO 流源码、Spring AOP 的关系
观察者模式🟡 中频事件驱动、Spring 监听器
责任链模式🟢 低频Filter 链、Spring Security

2.2 架构模式

  • 分层架构:传统三层、MVC、三层架构的演进与取舍
  • 事件驱动架构(EDA):解耦利器,但也带来了异步和一致性的复杂度
  • CQRS:读写分离的思想在业务场景中的落地
  • 六边形架构:端口与适配器的设计哲学

2.3 系统设计

  • 短链接系统:哈希算法、布隆过滤器、一致性哈希
  • 抢红包系统:并发扣减、库存一致性、幂等设计
  • 秒杀系统:层层限流、异步化、缓存穿透
  • 消息流系统:推 vs 拉、拉链存储、消息去重

三、学习路径

第一阶段:模式奠基(P5 ~ P6)

先搞懂 5-8 个高频设计模式。不是背类图,是理解"这个模式解决什么问题"。

重点:单例、工厂、策略、装饰器、观察者、责任链。

第二阶段:架构思维建立(P6 ~ P7)

从设计模式上升到架构模式。理解每种架构的本质trade-off,而不是死记硬背。

重点:分层思想、事件驱动、CQRS的适用场景。

第三阶段:系统设计突破(P7)

系统设计没有标准答案,考察的是你的思维过程。要训练的是:需求澄清 → 核心问题拆解 → 方案收敛 → 权衡取舍。

重点:每道题都要自己画架构图,然后跟标准答案对比。

四、学习方法

不要背,要推演。

拿到一道系统设计题,先自己想3分钟,再看答案。看答案的时候,重点看"为什么这样设计",而不是"这样设计是什么"。

画图比写字重要。

架构设计是视觉思维。一个好的架构图胜过一千字的文字说明。面试的时候,边说边画,面试官的印象分会明显提升。

复盘自己的项目。

每个人项目中都有架构决策,只是没意识到。试着回答这几个问题:你选了哪个方案?为什么没选另一个?线上跑得怎么样?

【架构权衡】

系统设计题没有银弹。每一个"好"的方案背后都有代价。理解代价,才能在面试中自信地说"我选这个方案,是因为……"

五、导航指引