设计与架构
面试官问:"你简历上写'有架构设计经验',那你说说,你设计过哪些架构?"
很多候选人会愣住。不是因为没做过,而是从来没从架构的视角复盘过自己的项目。
今天这个模块,就是帮你补上这块短板。
一、内容版图
设计这个领域,分三层:
第一层:设计模式(patterns)
23种经典设计模式,不是让你背,是让你理解"为什么要这样设计"。我会挑面试高频的、单例/工厂/策略/装饰器这些重点讲,讲到你能判断"这个场景用这个模式比那个模式好"为止。
第二层:架构模式(architectural)
分层架构、事件驱动、CQRS、EDA……这些是架构的"套路"。我会告诉你每种套路适用什么场景,有什么trade-off,怎么说服面试官选这个而不是那个。
第三层:系统设计(system-design)
短链接、抢红包、秒杀、消息流……这些是面试的深水区。没有标准答案,考察的是你在资源有限的情况下怎么权衡、怎么取舍、怎么表达。
【架构权衡】
这个模块的核心目标只有一个:让你从"被问架构题就慌"进化到"能把架构决策讲得让面试官点头"。
二、核心知识点
2.1 设计模式
2.2 架构模式
- 分层架构:传统三层、MVC、三层架构的演进与取舍
- 事件驱动架构(EDA):解耦利器,但也带来了异步和一致性的复杂度
- CQRS:读写分离的思想在业务场景中的落地
- 六边形架构:端口与适配器的设计哲学
2.3 系统设计
- 短链接系统:哈希算法、布隆过滤器、一致性哈希
- 抢红包系统:并发扣减、库存一致性、幂等设计
- 秒杀系统:层层限流、异步化、缓存穿透
- 消息流系统:推 vs 拉、拉链存储、消息去重
三、学习路径
第一阶段:模式奠基(P5 ~ P6)
先搞懂 5-8 个高频设计模式。不是背类图,是理解"这个模式解决什么问题"。
重点:单例、工厂、策略、装饰器、观察者、责任链。
第二阶段:架构思维建立(P6 ~ P7)
从设计模式上升到架构模式。理解每种架构的本质trade-off,而不是死记硬背。
重点:分层思想、事件驱动、CQRS的适用场景。
第三阶段:系统设计突破(P7)
系统设计没有标准答案,考察的是你的思维过程。要训练的是:需求澄清 → 核心问题拆解 → 方案收敛 → 权衡取舍。
重点:每道题都要自己画架构图,然后跟标准答案对比。
四、学习方法
不要背,要推演。
拿到一道系统设计题,先自己想3分钟,再看答案。看答案的时候,重点看"为什么这样设计",而不是"这样设计是什么"。
画图比写字重要。
架构设计是视觉思维。一个好的架构图胜过一千字的文字说明。面试的时候,边说边画,面试官的印象分会明显提升。
复盘自己的项目。
每个人项目中都有架构决策,只是没意识到。试着回答这几个问题:你选了哪个方案?为什么没选另一个?线上跑得怎么样?
【架构权衡】
系统设计题没有银弹。每一个"好"的方案背后都有代价。理解代价,才能在面试中自信地说"我选这个方案,是因为……"