软考系统架构设计师 · 考前冲刺背诵手册(v2)
三级分类:
- 🟦 【选择题背诵】 :分类、名词、口诀,能在选择题里识别即可
- 🟥 【案例题背诵】 :要写在答卷上的内容,要背"特征+优缺点+场景+完整答题模板"
- 🟨 【理解记忆】 :辨析、对比、计算方法,理解后会用就行
📋 目录
Part 1 选择题背诵区
✨ 本部分核心格式:题干关键词 → 选什么 → 一句话区分 → 例子 看到关键词能立刻反应到选项,不要只背名字。 易混淆点放在一起对比,背区分点。
1.1 🟦 软件架构风格【看到这些词→选这个】
5大类速记
| 大类 | 一句话识别 | 子类型 |
|---|---|---|
| 数据流 | 数据顺序传递、流式加工 | 批处理、管道-过滤器 |
| 调用/返回 | 函数/方法调用 | 主程序-子程序、面向对象、分层、C/S |
| 独立构件 | 构件松耦合、消息/事件通信 | 进程通信、事件驱动 |
| 虚拟机 | 抽象执行环境 | 解释器、规则系统 |
| 以数据为中心 | 共享数据是核心 | 仓库、黑板 |
题干关键词 → 选哪个风格
| 题干描述 | 选项 | 一句话区分 |
|---|---|---|
| 编译器、Unix管道、信号处理、ETL | 管道-过滤器 | 数据流式经过一系列独立无状态过滤器,可并行 |
| 流程固定、批量数据、无实时交互 | 批处理 | 串行执行、阶段间传完整数据集(vs管道-过滤器是流式可并行) |
| IDE、数据库、ERP多工具集成、共享中央数据 | 仓库(数据共享) | 中央数据 + 独立构件,构件不直接通信 |
| AI系统、专家系统、语音识别、问题不确定、解空间庞大 | 黑板 | 黑板=仓库+知识源+推理引擎(启发式求解) |
| GUI、按钮点击、消息驱动、发布订阅、松耦合 | 事件驱动(隐式调用) | 构件不直接调用,通过事件触发 |
| 脚本执行、DSL、运行时解析自定义规则 | 解释器 | 运行时解析并执行用户规则/语言 |
| 专家系统、规则推理、知识库 | 规则系统 | 规则库(IF-THEN)+ 工作内存 + 推理机 + 冲突解决 |
| 网络协议(OSI/TCP)、操作系统层次 | 分层 | 严格分层,每层只调相邻下层 |
| 流程固定、单一控制流、自顶向下 | 主程序-子程序 | 主程序统一控制,调用子程序 |
| 构件靠消息、层次化、并行 | C2 | 基于构件和连接件、消息传递、事件驱动 |
| 互联网大型、独立部署、敏捷迭代、独立DB | 微服务 | 去中心化、轻量HTTP、每服务独立DB |
| 企业系统集成、ESB、SOAP/WSDL | SOA | 集中式(ESB) 、SOAP重量级、共享DB常见 |
| 浏览器访问、HTTP、跨平台 | B/S | 客户端=浏览器、零部署 |
| 客户端响应快、专用客户端 | C/S | 客户端要安装,性能高 |
| 批量数据 + 阶段传完整数据集 | 批处理 | (区别于管道-过滤器的流式) |
易混淆三组对比(必背区分点)
① 仓库 vs 黑板(都是"以数据为中心")
- 仓库:中央数据 + 独立构件,主动读写,求解过程确定(如数据库、IDE)
- 黑板:仓库 + 知识源 + 推理引擎,数据驱动触发知识源,求解过程不确定(如AI、语音识别)
- 判别:题干提到"启发式""不确定""问题空间复杂"→ 黑板;提到"集成""共享""IDE"→ 仓库
② 管道-过滤器 vs 批处理(都是"数据流")
- 管道-过滤器:数据流式传递、过滤器独立无状态、可并行(如Unix管道、编译器)
- 批处理:阶段间传完整数据集,串行,无实时交互
- 判别:题干提到"流""并行""管道"→ 管道-过滤器;提到"批量""阶段""完整数据集"→ 批处理
③ 微服务 vs SOA(都是"独立构件")
- 微服务:去中心化、轻量HTTP/REST、独立DB、独立部署、互联网
- SOA:集中式(ESB)、SOAP/WSDL、共享DB常见、企业集成
- 判别:题干出现"ESB""企业集成""SOAP"→ SOA;出现"独立部署""敏捷""互联网""容器"→ 微服务
1.2 🟦 设计模式【看场景→选模式】
创建型(5个)— 解决"如何创建对象"
| 题干场景 | 选项 | 一句话识别 |
|---|---|---|
| 不知道具体类,由子类决定创建什么 | 工厂方法 | 一个工厂方法,子类决定生成哪种产品 |
| 创建一族相关产品(多生产线) | 抽象工厂 | 多个工厂方法组合,生产产品家族 |
| 全局唯一(连接池、配置管理器、日志器) | 单例 | "唯一实例" |
| 复杂对象分步构建,构造过程不变但产物不同 | 建造者(Builder) | 构造步骤一样,产物不同(如组装电脑) |
| 克隆已有对象生成新实例,避免重复初始化 | 原型(Prototype) | "克隆""复制"现有对象 |
结构型(7个)— 解决"如何组合对象"
| 题干场景 | 选项 | 一句话识别 |
|---|---|---|
| 接口不兼容,转换接口(旧系统接入新系统) | 适配器 | 转接头、接口转换 |
| 动态给对象加功能,不影响其他对象 | 装饰器 | 一层层加(咖啡加奶加糖) |
| 控制对象访问(远程代理、虚拟代理、保护代理) | 代理 | 替对象控制访问(秘书代接电话) |
| 简化复杂子系统的统一接口 | 外观(Facade) | 一个简单接口屏蔽复杂内部 |
| 抽象与实现分离,可独立变化 | 桥接(Bridge) | 两个维度独立扩展(形状×颜色) |
| 树形结构、叶子和组合统一处理 | 组合(Composite) | 文件夹树、UI组件树 |
| 共享细粒度对象节省内存 | 享元(Flyweight) | 内部状态共享,外部状态外置 |
行为型(11个)— 解决"对象如何协作"
| 题干场景 | 选项 | 一句话识别 |
|---|---|---|
| 多种算法可互换(排序方式可切换) | 策略 | 算法封装+互换 |
| 固定算法骨架,子类实现细节 | 模板方法 | 父类定流程,子类填空 |
| 一对多通知,状态变化通知订阅者 | 观察者 | 发布-订阅、消息推送 |
| 顺序访问聚合对象(遍历集合) | 迭代器 | 遍历集合 |
| 请求沿链传递直到被处理 | 责任链 | 排队叫号、审批流 |
| 请求封装为对象,支持撤销/记录/排队 | 命令 | 遥控器按钮、Undo/Redo |
| 保存/恢复对象状态 | 备忘录 | 游戏存档 |
| 行为随状态改变(订单不同状态行为不同) | 状态 | 状态机(订单:待付款→已付款→已发货) |
| 操作与数据结构解耦(不修改类增加新操作) | 访问者 | 双重分派 |
| 集中处理对象间复杂通信(聊天室) | 中介者 | 中介协调(空管指挥飞机) |
| 解释特定语言/表达式 | 解释器 | 解释自定义语法 |
易混淆模式区分
| 易混对 | 区分要点 |
|---|---|
| 工厂方法 vs 抽象工厂 | 工厂方法生产一种,抽象工厂生产一族 |
| 建造者 vs 抽象工厂 | 建造者分步构建一个复杂对象,抽象工厂直接造一族 |
| 代理 vs 装饰器 | 代理控制访问,装饰器增强功能 |
| 代理 vs 适配器 | 代理接口相同,适配器转换接口 |
| 桥接 vs 适配器 | 桥接设计前就分离两维度,适配器事后接合 |
| 状态 vs 策略 | 状态由状态机驱动自动切换,策略由客户端选择 |
| 观察者 vs 中介者 | 观察者一对多单向通知,中介者多对多集中调度 |
1.3 🟦 数据库三级模式 / 两级映像【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 用户视图、不同用户看到的数据、局部 | 外模式(子模式) |
| 全局逻辑结构、表/字段/关系、整体 | 概念模式(模式) |
| 物理存储结构、文件组织、索引、存储方式 | 内模式(存储模式) |
| 提供逻辑独立性(修改概念模式不影响应用) | 外模式/概念模式映像 |
| 提供物理独立性(修改存储不影响逻辑) | 概念模式/内模式映像 |
易混区分:
- "局部""用户视图" → 外模式
- "整体""全局" → 概念模式
- "存储""物理" → 内模式
- "逻辑独立性" → 外/概映像(屏蔽逻辑变化)
- "物理独立性" → 概/内映像(屏蔽存储变化)
1.4 🟦 分布式数据库六层模式 + 四透明性【题干→选哪个】
六层模式(从用户到物理)
外模式 → 全局概念模式GCS → 分片模式 → 分配模式 → 局部概念模式LCS → 内模式
| 题干描述 | 选项 |
|---|---|
| 整体逻辑结构、屏蔽分布 | 全局概念模式 GCS ⭐⭐⭐ |
| 数据如何拆分 | 分片模式 |
| 数据分布到哪些节点 | 分配模式 |
| 各节点的逻辑结构 | 局部概念模式 LCS |
四大透明性(必背口诀:拆/份/机/样)
| 题干描述 | 选项 | 记忆 |
|---|---|---|
| 用户感觉不到数据怎么拆的 | 分片透明 | 拆 |
| 用户感觉不到有几份副本 | 复制透明 | 份 |
| 用户感觉不到数据在哪台机器 | 位置透明 | 机 |
| 用户感觉不到数据长啥样(局部模型) | 逻辑(局部映射)透明 | 样 |
1.5 🟦 ACID 事务特性【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 要么全做要么全不做、不可分割 | 原子性 A |
| 保持数据完整性约束(如转账前后总额不变) | 一致性 C |
| 多个事务并发互不干扰 | 隔离性 I |
| 提交后永久保存,宕机不丢失 | 持久性 D |
易混:
- "完整性约束"→ 一致性(不是完整性!是说事务前后约束保持)
- "并发"→ 隔离性
- "原子性 vs 一致性":原子性强调全做或全不做,一致性强调约束维持
1.6 🟦 CAP / BASE【题干→选哪个】
CAP(三选二)
| 题干描述 | 选项 |
|---|---|
| 所有节点同时看到相同数据 | 一致性 C |
| 每个请求有限时间内得到响应 | 可用性 A |
| 网络分区时系统仍能工作 | 分区容错 P |
注意:分布式系统中 P 不可避免,所以实际是 CP 或 AP 二选一。
- CP系统:ZooKeeper、HBase、Redis集群
- AP系统:Eureka、Cassandra、CouchDB
BASE(CAP妥协,最终一致)
| 题干描述 | 选项 |
|---|---|
| 基本可用(核心可用,次要可降级) | B Basically Available |
| 允许中间软状态(同步过程中数据不一致) | S Soft state |
| 最终一致(最终所有副本一致) | E Eventual consistency |
1.7 🟦 数据库范式【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 属性不可再分(无复合属性) | 1NF |
| 消除非主属性对码的部分函数依赖 | 2NF |
| 消除非主属性对码的传递函数依赖 | 3NF |
| 消除主属性对码的部分和传递依赖(每个FD左部含码) | BCNF |
| 消除多值依赖 | 4NF |
判断口诀:1NF原子、2NF全依赖、3NF不传递、BCNF决定因素都是码
判断顺序:先1NF→看部分依赖→2NF→看传递依赖→3NF→看主属性间依赖→BCNF
1.8 🟦 死锁四条件【题干→选哪个】
| 题干描述 | 选项 | 能否消除 |
|---|---|---|
| 资源独占,同时只能一个进程占用 | 互斥 | ❌ 不可消除(资源物理特性决定) |
| 持有资源时再请求新资源 | 请求与保持 | ✓ 一次申请所有 |
| 资源只能主动释放,不能强夺 | 不可剥夺 | ✓ 设置抢占 |
| 形成等待环 | 循环等待 | ✓ 资源有序分配 |
陷阱题:哪个条件无法通过OS手段消除?→ 互斥
1.9 🟦 中断三类【题干→选哪个】
| 题干描述 | 选项 | 口诀 |
|---|---|---|
| 程序请求OS服务(系统调用) | 访管中断 | "要服务" |
| 外部设备发出信号(键盘、磁盘完成) | 外部中断 | "设备来" |
| 程序运行错误(除零、缺页、非法指令) | 异常中断 | "程序错" |
1.10 🟦 进程 / 线程 / 作业【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 资源分配和管理的最小单位 | 进程 |
| CPU调度和执行的最小单位 | 线程 |
| 用户提交给OS的任务集合 | 作业 |
线程共享 vs 私有(高频陷阱题)
| 资源 | 共享/私有 |
|---|---|
| 代码段、数据段、堆 | 共享 |
| 已打开文件、信号量、定时器 | 共享 |
| 寄存器(含SP栈指针) | 私有 ⭐ |
| 线程栈 | 私有 |
| 线程局部存储(TLS) | 私有 |
1.11 🟦 操作系统调度算法【题干→选哪个】
作业/进程调度
| 题干描述 | 选项 |
|---|---|
| 按到达顺序服务 | FCFS(先来先服务) |
| 短作业优先(缩短平均周转时间) | SJF(短作业优先) |
| 兼顾等待时间 + 服务时间,响应比 = (等待+服务)/服务 | HRRN(高响应比优先) |
| 按优先级调度 | 优先级调度 |
| 时间片轮转,公平 | RR(轮转) |
页面置换
| 题干描述 | 选项 |
|---|---|
| 淘汰最先进入内存的页面 | FIFO |
| 淘汰最近最少使用的页面 | LRU ⭐ |
| 淘汰未来最久不用的页面(理论最优) | OPT |
| 用循环+引用位近似LRU | Clock |
磁盘调度
| 题干描述 | 选项 |
|---|---|
| 按请求到达顺序 | FCFS |
| 总是选择离当前磁头最近的请求 | SSTF(最短寻道时间) |
| 来回扫描(电梯算法) | SCAN |
| 单向循环扫描 | CSCAN |
注意题型:题干给磁头位置和请求序列,问扫描顺序——同柱面按扇区号从小到大排序。
1.12 🟦 内存管理方式【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 整个进程一块连续区域,base+limit寄存器 | 分区式 |
| 固定大小的页,地址=页号+偏移,需页表 | 页式 |
| 逻辑段,大小不等,地址=段号+偏移,需段表 | 段式 |
| 段+页结合,地址=段号+页号+偏移 | 段页式 |
易混:
- 页大小固定,对用户透明
- 段大小不等,是逻辑单位(用户可见)
1.13 🟦 嵌入式实时系统特点【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 系统响应必须满足时间约束 | 实时性 |
| 烧录到ROM/Flash中 | 固化型 |
| CPU/内存/功耗有限 | 资源占用小 |
| 根据应用裁剪不需要的功能 | 可裁剪 |
| 可针对硬件配置参数 | 可配置 |
| 为特定应用定制 | 专用性 |
| 高优先级任务抢占低优先级 | 优先级抢占 |
陷阱:嵌入式RTOS不要求"通用性""资源占用大"!
1.14 🟦 嵌入式调度算法【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 静态优先级,周期短的优先级高 | RMS(速率单调) |
| 动态优先级,截止期近的优先 | EDF(最早截止期优先) |
| 静态优先级,截止期短的优先级高 | DM(截止期单调) |
特点对比:
- RMS:静态、简单、CPU利用率不超过 n×(2^(1/n)-1)
- EDF:动态、最优、单处理器可达100%利用率
- DM:静态、按截止期分
易混:RMS看周期,DM看截止期,EDF动态算
1.15 🟦 处理器与系统对应【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 微控制器场景,运行μC/OS、FreeRTOS | Cortex-M(M=MCU) |
| 应用处理器,运行Linux、Android | Cortex-A(A=Application) |
1.16 🟦 接口/总线分类【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 主板外设总线 | PCI |
| 通用通信、即插即用 | USB |
| 串口通信 | UART |
| 芯片间短距离通信(高速) | SPI |
| 芯片间通信(双线、低速) | I²C |
| CPU调试接口 | JTAG |
| ARM调试(JTAG简化版,4线变2线) | SWD |
陷阱题:要调试ARM处理器→ JTAG / SWD(不是USB或PCI)
1.17 🟦 存储层次【题干→选哪个】
从快到慢、从小到大:寄存器 → Cache(L1/L2/L3)→ 主存 → 外存
| 题干描述 | 选项 |
|---|---|
| CPU内部,访问最快、容量极小 | 寄存器 |
| 缓解CPU与主存速度差异,分L1/L2/L3 | Cache |
| 程序运行时存放数据指令,易失 | 主存(内存) |
| 长期保存、容量大、速度最慢、非易失(HDD/SSD/Flash) | 外存 |
1.18 🟦 软件维护四类【题干→选哪个】⭐⭐⭐ 高频
| 题干描述 | 选项 | 占比 |
|---|---|---|
| 修复Bug、错误 | 改正性维护 | ~20% |
| 由于外部环境变化(OS升级、数据库换、法规变) | 适应性维护 | ~25% |
| 用户新需求、业务发展提出的新功能 | 完善性维护 | ~50%(最大) ⭐ |
| 为提高未来的可维护性、稳定性而做的重构 | 预防性维护 | ~5% |
陷阱题:
- 题问"占比最大"→ 完善性(不是改正性!)
- "OS升级要改"→ 适应性
- "重构以提高未来可维护性"→ 预防性
- "修Bug"→ 改正性
1.19 🟦 软件开发模型【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 严格线性、阶段明确 | 瀑布模型 |
| 先做原型验证需求 | 快速原型 |
| 快速原型基础上扩展,强调风险分析 | 螺旋模型 ⭐ |
| 测试镜像于开发,明确各级别 | V模型 |
| 测试同步参与开发(早期介入) | W模型 |
| 测试完全独立、与流程并行 | H模型 |
| 单独单元开发测试,支持探索性测试 | X模型 |
| 增量交付、迭代 | 增量模型 |
| 复用为核心 | 构件组装模型 |
陷阱题:
- "在某模型基础上扩展"→ 螺旋模型在快速原型上扩展
- "支持探索性测试"→ X模型(不是H模型!)
- "测试与流程并行"→ H模型
1.20 🟦 CMMI 五级【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 流程随意混乱,靠英雄主义 | Level 1 初始级 |
| 项目级流程,6个关键过程域 | Level 2 已管理级 |
| 组织级标准化、文档化,开始收集经验 | Level 3 已定义级 |
| 用度量定量控制过程 | Level 4 量化管理级 |
| 持续改进、增量+创新 | Level 5 优化级 |
口诀:初管定量优
陷阱题:
- "建立产品质量定量目标"→ Level 4 量化管理级
- "组织级标准化"→ Level 3 已定义级
- "6个关键过程域"→ Level 2
1.21 🟦 RUP 统一过程【题干→选哪个】
4阶段
| 题干描述 | 选项 |
|---|---|
| 确定项目范围、业务模型、主要风险 | 初始阶段 |
| 深入分析问题域,建立和验证关键架构 | 细化阶段 ⭐ |
| 完成系统构建 | 构造阶段 |
| 交付产品 | 交付阶段 |
9工作流
- 6核心过程:业务建模、需求、分析与设计、实现、测试、部署
- 3核心支持:配置与变更管理、项目管理、环境
三大特点
用例驱动、架构为中心、迭代和增量
陷阱题:RUP强调用例驱动(不是功能分解!)
1.22 🟦 敏捷开发方法【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 结对编程 + 高纪律开发流程 | XP(极限编程) |
| 短期冲刺周期 + 每日站会 | SCRUM |
| 明确角色分工模式 | FDD(特性驱动) |
| 适配小范围、面对面沟通的团队 | 水晶系列 |
| 以自适应为核心 | ASD(自适应软件开发) |
| 精简型统一过程 | OpenUP |
1.23 🟦 ABSDM 6过程【题干→选哪个】
需求 → 设计 → 文档化 → 复审 → 实现 → 演化
| 题干描述 | 选项 |
|---|---|
| 收集商业、质量、功能需求 | 体系结构需求 |
| 选择架构风格、设计组件 | 体系结构设计 |
| 标准化记录架构成果,输出体系结构规格说明 + 测试质量需求的设计说明书 | 体系结构文档化 ⭐ |
| 评审与改进 | 体系结构复审 |
| 编码实现 | 体系结构实现 |
| 应对需求变更 | 体系结构演化 |
陷阱题:
- "输出体系结构规格说明"→ 文档化(不是需求!)
- "软件功能需求说明"→ 需求阶段(不是文档化!)
1.24 🟦 DSSA【题干→选哪个】
三大特性
并发、递归、反复
三个基本活动
| 题干描述 | 选项 | 产出 |
|---|---|---|
| 梳理领域内系统共性需求 | 领域分析 | 领域模型 |
| 基于领域模型设计领域级架构 | 领域设计 | DSSA架构方案 |
| 开发可复用构件、框架 | 领域实现 | 可复用资源 |
三层系统模型(角色)
| 层次 | 角色 |
|---|---|
| 领域开发环境 | 领域架构师 |
| 领域特定应用开发环境 | 应用工程师 |
| 应用执行环境 | 操作员 |
⚠️ 陷阱:题目选项里"程序员"是干扰项,DSSA中没有这个角色!
功能覆盖范围分类
垂直域(特定行业)、水平域(跨行业通用)
1.25 🟦 软件架构视图【题干→选哪个】
4套视图体系(容易混淆,分清楚)
| 体系 | 视图组成 |
|---|---|
| 软件体系结构设计 | 逻辑、开发、进程、物理 |
| UML/RUP(4+1) | 逻辑、实现、进程、部署、用例 |
| ABSD常用 | 逻辑、进程、实现、配置 |
| Kruchten "4+1" | 逻辑、开发、进程、物理、+用例 |
记忆口诀:
- 软件体系结构 = 开发 + 物理
- UML/RUP = 实现 + 部署 + 用例
- ABSD = 配置(独有)
各视图描述(背关键词)
| 题干描述 | 选项 |
|---|---|
| 描述系统功能给最终用户看 | 逻辑视图 |
| 描述软件模块划分、子系统组织、代码结构(开发过程) | 开发视图(实现视图) |
| 描述系统运行时行为、并发、性能 | 进程视图(过程视图) |
| 描述硬件分布、节点部署 | 物理视图(部署视图) |
| 描述系统如何满足用户需求,串联其他视图 | 用例视图(场景视图) |
1.26 🟦 4+1视图各视图受众【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 面向最终用户,关注功能 | 逻辑视图 |
| 面向程序员,关注开发结构 | 开发视图 |
| 面向集成人员,关注运行时 | 进程视图 |
| 面向系统工程师,关注硬件分布 | 部署视图 |
| 面向所有人,串联视图 | 场景视图 |
1.27 🟦 软件复用层次【题干→选哪个】
从低到高:代码 → 设计 → 分析 → 测试
软件复用范围(要全选): 需求文档、设计文档、程序代码、测试用例、领域知识
⚠️ 陷阱题:题目可能选项给"硬件资源",不属于软件复用范围
1.28 🟦 软件复用类型【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 开发完成后发现可复用,临时整合 | 机会复用 |
| 从一开始就有计划组织的复用 | 系统复用 |
1.29 🟦 构件五种形态【背5个名字】
独立而成熟、有限制、适应性、装配、可修改
1.30 🟦 构件四大特征【背4个名字】
独立部署性、封装性、复用性、唯一性
1.31 🟦 构件组装方式【题干→选哪个】
步骤:定制 → 集成 → 扩展
| 题干描述 | 选项 |
|---|---|
| 不修改构件内部,仅通过接口集成 | 黑盒组装 |
| 需要修改构件源代码 | 白盒组装 |
| 介于两者之间,部分扩展 | 灰盒组装 |
1.32 🟦 构件模型【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 应用服务器,Sun J2EE一部分 | EJB |
| 应用服务器,微软 | COM+ |
| Web服务器,Sun JSP技术 | Servlet |
| Web服务器,微软ASP | VB等 |
1.33 🟦 CORBA构件模型【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 衔接底层传输平台与服务实现的核心协调组件 | POA(可移植对象适配器) |
| 最终完成客户请求、提供具体服务逻辑实现 | Servant(伺服对象)⭐ |
1.34 🟦 软件失配类型【题干→选哪个】
架构集成时常见问题:构件失配 + 连接子失配
1.35 🟦 物联网三层【题干→选哪个】
感知层 → 网络层(传输层)→ 应用层
| 题干描述 | 选项 | 关键技术 |
|---|---|---|
| 信息采集(传感器、RFID) | 感知层 | 传感器、RFID、二维码 |
| 数据传输 | 网络层 | 4G/5G、WiFi、ZigBee、蓝牙 |
| 业务应用 | 应用层 | 智能家居、智慧城市、车联网 |
1.36 🟦 区块链分类【题干→选哪个】
公有链、私有链、联盟链
| 题干描述 | 选项 |
|---|---|
| 完全开放,任何人可参与(如比特币) | 公有链 |
| 单一组织内部使用 | 私有链 |
| 多个机构联合参与(如银行间) | 联盟链 |
1.37 🟦 云计算服务【题干→选哪个】
| 题干描述 | 选项 | 例子 |
|---|---|---|
| 应用层,软件即服务 | SaaS | Office 365、钉钉 |
| 平台层,平台即服务(开发运行环境) | PaaS | 阿里云ACK、AWS Beanstalk |
| 基础设施层,虚拟机/存储 | IaaS | EC2、阿里云ECS |
| 数据即服务 | DaaS | 数据交换平台 |
| 函数即服务(Serverless) | FaaS | AWS Lambda |
记忆口诀:从下到上 IaaS(机房硬件)→ PaaS(操作系统/中间件)→ SaaS(成品软件)
1.38 🟦 大数据架构【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 批处理 + 实时双轨制(Batch层+Speed层+Serving层) | Lambda架构 |
| 一套流处理,重放日志实现历史计算 | Kappa架构 |
Lambda 三层:
- 批处理层(Batch) :全量数据,结果准确但慢
- 速度层(Speed) :增量数据,实时但不精确
- 服务层(Serving) :统一对外查询
1.39 🟦 Hadoop生态【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 分布式文件存储 | HDFS |
| 批处理计算(慢) | MapReduce |
| 资源管理调度 | YARN |
| 列式NoSQL数据库 | HBase |
| SQL on Hadoop(数据仓库) | Hive |
| 内存计算,比MR快10-100倍 | Spark |
| 分布式消息队列 | Kafka |
| 流处理 | Flink |
| 分布式协调 | ZooKeeper |
| 关系型DB与Hadoop数据迁移 | Sqoop |
| 日志采集 | Flume |
1.40 🟦 数据仓库四特征【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 按分析主题(客户、产品、销售)组织 | 面向主题 |
| 整合多源异构数据 | 集成性 |
| 长期留存、不易变 | 相对稳定(非易失) |
| 存储不同时间点的快照 | 反映历史变化 |
1.41 🟦 OSI七层 vs TCP/IP四层【题干→选哪个】
| 题干描述 | OSI层 |
|---|---|
| HTTP、HTTPS、FTP、SMTP、DNS、Telnet | 应用层 |
| 加密、压缩 | 表示层 |
| RPC、会话管理 | 会话层 |
| TCP、UDP | 传输层 |
| IP、ICMP、ARP、RARP | 网络层 |
| 以太网协议、PPP | 数据链路层 |
| RJ45、光纤 | 物理层 |
口诀(从上到下) :应表会传网数物
TCP vs UDP
| 题干描述 | 选项 |
|---|---|
| 三次握手、可靠、有序、慢 | TCP(HTTP、FTP、邮件) |
| 无连接、不可靠、快 | UDP(DNS、视频流、游戏) |
1.42 🟦 常用端口【题干→选哪个】
| 服务 | 端口 |
|---|---|
| HTTP | 80 |
| HTTPS | 443 |
| FTP | 20/21 |
| SSH | 22 |
| Telnet | 23 |
| SMTP | 25 |
| POP3 | 110 |
| DNS | 53 |
| MySQL | 3306 |
| Redis | 6379 |
1.43 🟦 RAID 等级【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 条带、不容错、最快读写、100%利用 | RAID 0 |
| 镜像、容错、50%利用 | RAID 1 |
| 分布式奇偶校验、容错1块、(n-1)/n利用 | RAID 5 |
| 双奇偶校验、容错2块 | RAID 6 |
| 1+0组合、安全又快、50%利用 | RAID 10 |
陷阱题:
- "最快读写不容错"→ RAID 0
- "完全镜像"→ RAID 1
- "兼顾性能和容错"→ RAID 10
- "节省空间且容错"→ RAID 5
1.44 🟦 知识产权【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 软件自完成自动获得,无需登记 | 著作权 |
| 自然人作品保护期 | 终生 + 死后50年 |
| 单位作品保护期 | 首次发表后50年 |
| 发明专利保护期 | 20年 |
| 实用新型/外观设计 | 10年 |
| 职务作品:在职期间或离职1年内与原单位业务相关 | 归原单位 |
| 三性:新颖性、创造性、实用性 | 专利申请条件 |
专利许可三类
| 题干描述 | 选项 |
|---|---|
| 仅被许可方能用,专利权人也不能用 | 独占许可 |
| 仅专利权人 + 被许可方可用 | 排他许可 |
| 可授权给多家被许可方 | 普通许可 |
商业秘密三要素
秘密性、价值性、保密性
1.45 🟦 信息安全等级保护五级【题干→选哪个】
| 级别 | 名称 |
|---|---|
| 第1级 | 用户自主保护级 |
| 第2级 | 系统审计保护级 |
| 第3级 | 安全标记保护级 |
| 第4级 | 结构化保护级 |
| 第5级 | 访问验证保护级 |
口诀:用户自主、系统审计、安全标记、结构化、访问验证
1.46 🟦 加密算法分类【题干→选哪个】
| 题干描述 | 选项 | 代表 |
|---|---|---|
| 同一密钥、快、密钥分发难 | 对称加密 | DES、3DES、AES、IDEA、RC4 |
| 公私钥对、慢、安全 | 非对称加密 | RSA、ECC、DSA |
| 不可逆、固定长度、验完整性 | 哈希函数 | MD5、SHA-1、SHA-256 |
应用场景:
- 加密大数据 → 对称(AES)
- 密钥交换、签名 → 非对称(RSA)
- 验证完整性 → 哈希(SHA-256)
数字签名
用私钥签名 + 用公钥验签 → 实现身份认证 + 完整性 + 不可抵赖
1.47 🟦 内聚等级(高→低)【题干→选哪个】⭐⭐ 高频
| 题干描述 | 选项 |
|---|---|
| 模块所有元素共同完成单一任务(最理想) | 功能内聚(最高) |
| 一个元素的输出是下一个的输入 | 顺序内聚 |
| 元素操作同一数据(共用输入或输出) | 通信内聚 |
| 元素按特定顺序执行(控制流相关) | 过程内聚 |
| 元素同一时间执行(如初始化) | 时间内聚 |
| 元素逻辑相似(同类操作如各种打印) | 逻辑内聚 |
| 元素毫无关系,凑在一起(最差) | 偶然内聚(最低) |
口诀:功 > 顺 > 通 > 过 > 时 > 逻 > 偶
1.48 🟦 耦合等级(低→高)【题干→选哪个】⭐⭐ 高频
| 题干描述 | 选项 |
|---|---|
| 模块间没有直接关系(最理想) | 非直接耦合(最低) |
| 通过参数传简单数据值 | 数据耦合 |
| 传递数据结构/对象 | 标记耦合 |
| 传递控制信号/标志位 | 控制耦合 |
| 模块间通过外部环境联系(全局变量) | 外部耦合 |
| 模块共用全局变量 | 公共耦合 |
| 一个模块直接访问另一模块内部数据 | 内容耦合(最高) |
口诀:非 < 数 < 标 < 控 < 外 < 公 < 内
1.49 🟦 UML图分类【题干→选哪个】⭐⭐ 高频
静态结构图(7种)
类图、对象图、构件图、部署图、制品图、包图、组合结构图
行为图(7种)
用例图、顺序图、通信图(协作图)、定时图、交互概览图、活动图、状态图
4种交互图
顺序图、通信图、定时图、交互概览图
题干 → 选什么图
| 题干描述 | 选项 |
|---|---|
| 描述类、属性、方法、关系(静态) | 类图 |
| 描述系统功能、参与者 | 用例图 |
| 描述对象间消息时序(横轴对象,纵轴时间) | 顺序图 |
| 描述对象间协作关系 | 通信图(协作图) |
| 描述对象状态变迁 | 状态图 |
| 描述业务流程/算法流程(类似流程图) | 活动图 |
| 描述硬件部署、节点 | 部署图 |
| 描述系统物理组件结构 | 构件图 |
易混
- 类图 vs 对象图:类图描述类(设计阶段),对象图描述对象实例(运行时)
- 顺序图 vs 通信图:语义相同,顺序图强调时序,通信图强调协作
- 活动图 vs 状态图:活动图是流程,状态图是状态变迁
1.50 🟦 结构化设计 vs 面向对象设计工具【题干→选哪个】⭐ 易错
结构化设计工具
盒图、HIPO图、程序流程图、模块结构图、层次图、PAD图、N-S图、判定表、判定树
面向对象设计工具(UML)
类图、用例图、顺序图、活动图等
⚠️ 陷阱:顺序图属于UML,不属于结构化设计工具!
1.51 🟦 概要设计 vs 详细设计【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 概要设计常用 | 模块结构图、层次图、HIPO图 |
| 详细设计常用 | 程序流程图、盒图、PAD图、判定表、判定树、伪代码 |
| 需求分析常用 | 数据流图(DFD)、E-R图 |
1.52 🟦 数据流图(DFD)四要素【题干→选哪个】
| 图形 | 含义 | 题干描述 |
|---|---|---|
| 方框 | 外部实体 | 系统外部对象,仅提供/接收数据 |
| 圆/椭圆 | 加工(处理) | 数据变换 |
| 箭头 | 数据流 | 数据流动路径,仅体现流向 |
| 双线/开口矩形 | 数据存储 | 系统内长期保存数据的载体 |
平衡规则:父图与子图的输入输出数据流必须保持一致。
1.53 🟦 McCabe环形复杂度【题干→选哪个】
三种公式(结果一致) :
- V(G) = E - N + 2(边数-节点数+2)
- V(G) = P + 1(判定节点数+1)⭐ 最常用
- V(G) = 区域数
例题:流程图中3个判定节点 → V(G) = 3+1 = 4
1.54 🟦 测试方法【题干→选哪个】
黑盒测试(功能测试)
| 题干描述 | 选项 |
|---|---|
| 把输入划分等价类,每类选代表 | 等价类划分 |
| 边界值附近选测试用例 | 边界值分析 |
| 凭经验猜可能错误 | 错误推测 |
| 分析因果关系 | 因果图 |
| 用判定表列出条件组合 | 决策表 |
| 模拟用户场景走查 | 场景法 |
| 多因素正交组合 | 正交试验 |
白盒测试(结构测试)
覆盖严格度(从弱到强) :语句 < 判定 < 条件 < 判定/条件 < 条件组合 < 路径
| 题干描述 | 选项 |
|---|---|
| 每条语句至少执行一次 | 语句覆盖(最弱) |
| 每个判定的真假至少各一次 | 判定覆盖(分支覆盖) |
| 每个条件的真假至少各一次 | 条件覆盖 |
| 同时满足判定+条件 | 判定/条件覆盖 |
| 所有条件取值组合 | 条件组合覆盖 |
| 程序所有可能路径 | 路径覆盖(最强) |
1.55 🟦 测试阶段【题干→选哪个】
单元测试 → 集成测试 → 系统测试 → 验收测试
| 题干描述 | 选项 |
|---|---|
| 测试模块内部逻辑 | 单元测试 |
| 测试模块接口集成 | 集成测试 |
| 完整系统的功能/性能测试 | 系统测试 |
| 用户接收测试 | 验收测试(α/β测试) |
α测试 vs β测试:
- α测试:在开发场所由用户执行
- β测试:在用户场所由用户执行
1.56 🟦 需求管理活动【题干→选哪个】
变更控制、版本控制、需求跟踪、需求状态跟踪
1.57 🟦 需求变更顺序【题干→选哪个】
识别问题 → 问题分析与变更描述 → 变更分析与成本计算 → 变更实现
⭐ CCB(变更控制委员会) :需求变更管理的核心决策组织。
1.58 🟦 需求基础属性【题干→选哪个】
需求稳定性、可验证性、可追溯性、明确性
1.59 🟦 综合布线六子系统【题干→选哪个】
工作区、水平、干线、管理、设备间、建筑群
| 题干描述 | 选项 |
|---|---|
| 连接干线和工作区的子系统 | 水平子系统 ⭐ |
| 信息出口到用户终端 | 工作区 |
| 楼层间垂直连接 | 干线 |
| 配线架管理 | 管理 |
| 主设备间 | 设备间 |
| 楼宇之间 | 建筑群 |
1.60 🟦 关系代数【题干→选哪个】
| 符号 | 含义 |
|---|---|
| σ(选择) | 筛选行(按条件选元组) |
| π(投影) | 选列(按属性选) |
| ⋈(连接) | 拼表(按公共属性) |
| ×(笛卡儿积) | 两表全组合 |
| ∪(并) | 元组合并去重 |
| −(差) | 在A不在B |
| ∩(交) | 同在A和B |
查询优化原则:先选择再连接,σ尽量下推到数据源,避免笛卡儿积。
1.61 🟦 SQL执行顺序【题干→选哪个】
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
⭐ 关键陷阱:WHERE 在 GROUP BY 之前执行,所以WHERE中不能用聚合函数(要用聚合过滤用HAVING)。
1.62 🟦 数据库锁【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 共享锁,可读不可写,多事务可同时持有 | S锁 |
| 排他锁,独占,可读可写 | X锁 |
1.63 🟦 数据库完整性【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 每条记录的唯一性(主键非空唯一) | 实体完整性 |
| 维护多表关联一致性(外键约束) | 参照完整性 |
| 业务自定义约束(如年龄≥0) | 用户定义完整性 |
1.64 🟦 数据集成冲突【题干→选哪个】
属性冲突、结构冲突、命名冲突
| 题干描述 | 选项 |
|---|---|
| 同一属性不同表用不同类型/取值范围 | 属性冲突 |
| 同一概念在不同表结构组织不同 | 结构冲突 |
| 同名不同义/同义不同名 | 命名冲突 |
1.65 🟦 2P开头协议【题干→选哪个】⭐⭐ 高频陷阱
| 题干描述 | 选项 |
|---|---|
| 解决分布式事务一致性,分表决+执行两阶段 | 2PC(两阶段提交) |
| 解决并发控制(隔离性) ,分扩展+收缩两阶段 | 2PL(两阶段锁) |
| 改进2PC(减少阻塞),CanCommit + PreCommit + DoCommit | 3PC |
陷阱题:
- "扩展阶段、收缩阶段"→ 2PL
- "表决阶段、执行阶段"→ 2PC
- 别看错字!Commit是提交,Locking是锁
1.66 🟦 软件生命周期【题干→选哪个】
软件描述 → 软件开发 → 软件有效性验证 → 软件演化
⭐ "软件描述定义了软件功能和使用限制"是高频考点
1.67 🟦 软件工程过程(PDCA)【题干→选哪个】
计划 Plan → 执行 Do → 检查 Check → 处理 Act
1.68 🟦 范式(开发方法)【题干→选哪个】
软件开发的三种范式:功能、数据、面向对象
1.69 🟦 双生命周期模型【题干→选哪个】
支撑高效软件复用:领域工程 + 应用工程(并行且紧密关联)
1.70 🟦 知识表示方法(AI)【题干→选哪个】
| 题干描述 | 选项 | 例子 |
|---|---|---|
| 用谓词逻辑描述关系(主体、客体、谓词) | 逻辑表示法 | Likes(张三, 篮球) |
| IF-THEN 条件→结论 | 产生式规则 | IF 下雨 THEN 带伞 |
| 图结构,节点+关系 | 语义网络 | 张三→是→学生 |
| 属性槽,类似对象模板 | 框架(Frame) | 人:年龄=20 |
1.71 🟦 关系模型操作单位【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 一条数据的操作 | 记录、元组 |
| 元组的集合,以关系为操作对象 | 集合 |
| 关系的属性 | 列 |
1.72 🟦 嵌入式数据库【题干→选哪个】
轻量、不需独立服务、直接用 → SQLite、Berkeley DB
特点:支持并发但不擅长高并发。
1.73 🟦 BSP(板级支持包)【题干→选哪个】
BSP = 嵌入式系统的中间层
| 题干描述 | 解释 |
|---|---|
| 衔接特定硬件平台与特定操作系统 | BSP核心定位 |
| 必须对硬件平台进行适配 | 硬件有关性 |
| 必须与目标OS内核接口一致 | OS有关性 |
1.74 🟦 版本控制工具【题干→选哪个】
UNIX平台早期典型版本控制工具 → SCCS
现代:Git、SVN、CVS
1.75 🟦 进程通信风格【题干→选哪个】⭐ 易错
进程通信风格:
- 构件:具备自主执行能力的独立进程
- 连接件:消息传递
⚠️ 陷阱:题目可能选"消息队列"作为连接件——错的!消息队列是消息传递的具体实现手段,不是抽象连接件类型。
1.76 🟦 ADL(架构描述语言)四要素【题干→选哪个】
组件(Component)、接口(Interface)、连接件(Connector)、配置(Configuration)
1.77 🟦 逆向工程四个抽象层次【题干→选哪个】
从低到高:
| 题干描述 | 选项 |
|---|---|
| 最贴近源代码,含AST、语句序列、变量、数据结构 | 实现级(最底层) |
| 程序内部组件关联,模块依赖图、调用关系图 | 结构级 |
| 系统功能描述 | 功能级 |
| 业务领域知识 | 领域级(最高) |
1.78 🟦 面向构件编程基础支持【题干→选哪个】
多态性、模块封装性、后期绑定和装载、安全性
1.79 🟦 嵌入式低功耗设计三大策略【题干→选哪个】
编译优化技术、软硬件协同设计、算法优化
1.80 🟦 软件复用资产管理内容【题干→选哪个】
构件描述、构件分类、构件库组织、人员及权限管理、用户意见反馈
1.81 🟦 三层C/S结构【题干→选哪个】
| 层 | 题干描述 |
|---|---|
| 表示层 | 用户接口部分,负责数据输入和结果展示 |
| 功能层(业务逻辑层) | 应用核心本体,业务规则、流程管控,连接表示层与数据层的中间枢纽 |
| 数据层 | 数据库管理与读写 |
⭐ 核心价值:增加应用服务器分离功能层,解决两层架构客户端臃肿问题。
1.82 🟦 ATAM 步骤【题干→选哪个】
收集 → 实现 → 分析 → 折中
详细9步骤见 Part 2 案例区。
1.83 🟦 SAAM 步骤【题干→选哪个】
问题 + 需求 + 架构描述
1.84 🟦 ATAM 效用树【题干→选哪个】
树根(效用)→ 质量属性 → 属性分类 → 质量属性场景(叶子节点)
1.85 🟦 质量属性场景四要素【题干→选哪个】
简版:刺激 → 环境 → 响应 → 响应度量
完整六要素见 Part 2.3。
⚠️ 陷阱:题目可能选"参与者、用例、视图"——错!这是用例建模三要素,不是质量场景!
1.86 🟦 三大关键点【题干→选哪个】⭐⭐⭐ 高频
| 题干描述 | 选项 |
|---|---|
| 仅对单个质量属性产生显著影响的架构参数 | 敏感点 |
| 同时影响多个质量属性的设计决策(折中分析关键) | 权衡点 |
| 可能引发系统失败的潜在因素 | 风险点 |
| 经过分析确认不带来风险的决策 | 非风险点 |
口诀:单敏多权险则失败
例题:
- "缓存大小"只影响性能 → 敏感点
- "副本数提升可用性但降低一致性" → 权衡点
- "数据库无主备" → 风险点
1.87 🟦 质量属性场景类型(ATAM)【题干→选哪个】
| 题干描述 | 选项 |
|---|---|
| 正常使用情况 | 使用场景 |
| 未来扩展、变化 | 增长场景 |
| 极端/未预期情况 | 探索性场景 |
1.88 🟦 ATAM 6质量属性【题干→选哪个】
性能、可用性、安全性、可修改性、可测试性、易用性
详细场景描述见 Part 2.3。
1.89 🟦 数据库设计四阶段【题干→选哪个】⭐ 高频
| 阶段 | 题干描述 | 工具/产出 |
|---|---|---|
| 需求分析 | 了解业务需求、获取数据需求 | DFD、数据字典、需求说明书 |
| 概念结构设计 | 抽象成概念模型,描述实体及联系 | E-R图 ⭐ |
| 逻辑结构设计 | 转为关系模式,规范化/反规范化 | 关系模式 |
| 物理结构设计 | 存储结构、索引设计 | 物理设计方案 |
1.90 🟦 软件结构化设计四任务【题干→选哪个】
数据设计、软件结构设计、人机界面设计、过程设计(+接口设计)
⚠️ 陷阱:
- 原型设计不是结构化设计任务
- 程序设计属于编码阶段任务
1.91 🟦 OOA分析模型核心构件【题干→选哪个】🆕
面向对象分析(OOA)的核心构成: 顶层架构图、用例与用例图、领域概念模型
用例交互逻辑(用例实现图):
- 序列图:侧重消息时序
- 协作图:侧重协作关系
⚠️ 陷阱:数据流模型、功能分解图属于结构化分析,不是OOA!# Part 2 案例题背诵区 ⭐⭐⭐
这部分内容要写在答卷上,每个主题给:完整概念描述 + 优缺点 + 适用场景 + 答题模板/范文。 案例题答题原则:分点列写、术语准确、给出理由、配数字。
2.1 🟥 软件架构定义(案例第一题常考)
标准定义(要会写)
软件架构是关于软件系统的结构、行为和属性的高级抽象,由系统元素的描述、元素之间的相互作用、元素组合的模式以及这些模式所受的约束所组成。
软件架构关注组件的结构与属性,以及组件间的交互作用。架构更侧重于非功能属性(如可维护性、可扩展性、可靠性、可伸缩性),是系统早期设计决策的体现。
典型答题(题:什么是软件架构?)
软件架构是软件系统的高级抽象描述,由系统元素及元素间相互作用、组合模式及其约束构成。它包含三个核心要素: ① 结构(Structure) :系统由哪些组件构成 ② 行为(Behavior) :组件之间如何交互 ③ 属性(Attributes) :系统具备的质量特征
软件架构是项目早期最重要的设计决策,决定了系统的可维护性、可扩展性、可靠性等关键质量属性。架构通常采用多视图方式表达,如逻辑视图、开发视图、进程视图、物理视图等。
2.2 🟥 软件架构风格(案例必考)
答题模板(万能三段式)
第一步:选择风格 "本系统适合采用 XX 架构风格" 第二步:说明特点 "该风格的核心特点是 ..." 第三步:结合需求 "本系统的 XX 需求与该风格的 XX 特性匹配" 第四步:列优缺点 "该风格优点是 ...,缺点是 ..."
高频考点:每个风格的标准描述(背!)
🔴 管道-过滤器(Pipe and Filter)
特点:
- 系统由一组独立、无状态的过滤器通过管道连接而成
- 每个过滤器接收输入数据流、进行变换或过滤、输出数据流
- 过滤器之间互不依赖,可独立并行运行
优点:
- 构件复用性高,可灵活组合
- 支持并发执行,效率高
- 易于扩展和维护,新增过滤器不影响其他构件
缺点:
- 不适合交互式应用
- 数据传输需要格式统一,可能有性能开销
- 不易处理共享状态信息
- 错误处理较困难
典型应用:编译器(词法→语法→语义→中间代码→优化→目标代码)、Unix管道命令、ETL数据处理
🔴 仓库(Repository / 数据共享)
特点:
- 系统由中央数据结构(共享数据)和一组独立构件组成
- 构件之间不直接通信,通过对中央数据的读写实现协作
优点:
- 数据集中管理,一致性容易保证
- 构件之间解耦
- 支持多种数据访问方式
缺点:
- 中央数据是性能瓶颈和单点故障
- 构件之间需要约定数据格式
- 系统扩展性受限于中央仓库容量
典型应用:数据库管理系统、IDE集成开发环境、ERP系统、编译器符号表
🔴 黑板(Blackboard)
特点:
- 系统由黑板(共享数据) 、知识源(独立模块) 和控制(推理引擎) 组成
- 知识源自治地观察黑板,发现可处理数据时被激活
- 适合问题空间复杂、解空间庞大、不存在确定算法的求解过程
优点:
- 适合复杂问题求解
- 支持启发式推理和多种解决策略
- 知识源易于扩展和替换
缺点:
- 控制策略复杂,调试困难
- 性能开销大
- 知识源之间难以同步
典型应用:人工智能系统、专家系统、语音识别、图像理解、自然语言处理
🔴 事件驱动(隐式调用)
特点:
- 构件不直接调用其他构件,而是发布事件
- 其他构件注册感兴趣的事件,事件发生时被自动调用
- 构件之间松耦合,发布者不知道订阅者
优点:
- 强解耦,构件易替换
- 支持异步操作
- 易于功能扩展
缺点:
- 控制流难以追踪,调试困难
- 事件处理顺序不确定
- 性能受事件机制影响
典型应用:GUI系统(按钮点击)、消息驱动系统、Spring事件、调试工具
🔴 分层架构(Layered)
特点:
- 系统组织为多个层次,每层向上提供服务,向下使用服务
- 严格分层:每层只能调用相邻下层
- 松散分层:可以跨层调用
优点:
- 结构清晰,理解和维护容易
- 支持替换:替换某层不影响其他层
- 提高可移植性
缺点:
- 性能损失:层间调用有开销
- 灵活性差:跨层修改困难
- 层次划分不易确定
典型应用:操作系统(用户层→内核层→硬件层)、TCP/IP/OSI网络协议、Web应用三层架构
🔴 主程序-子程序(调用-返回)
特点:
- 主程序统一控制执行流程,调用子程序完成具体功能
- 自顶向下,结构化设计思想
- 控制流单一线性
优点:
- 结构清晰,易于实现
- 适合流程固定、需求稳定的系统
缺点:
- 难以应对需求变化
- 不适合并发场景
- 复用性低
典型应用:传统C程序、批处理脚本
🔴 面向对象(OO)
特点:
- 系统由对象组成,对象封装数据和行为
- 通过消息进行通信
- 支持继承、多态
优点:
- 高内聚、低耦合
- 复用性、可扩展性好
- 易于建模真实世界
缺点:
- 对象间通信开销
- 设计复杂度高
典型应用:现代大部分软件系统(Java/C++/Python程序)
🔴 C/S(客户端-服务器)
特点:
- 客户端发起请求,服务器响应
- 二层架构:客户端 + 数据库服务器
- 三层架构:表示层 + 功能层(业务逻辑)+ 数据层
优点:
- 客户端响应速度快、交互性强
- 充分利用客户端硬件能力
缺点:
- 客户端需要单独安装、升级
- 跨平台性差
- 维护成本高
典型应用:传统桌面应用、企业管理软件
🔴 B/S(浏览器-服务器)
特点:
- 客户端使用浏览器访问,无需安装专门客户端
- 业务逻辑全部在服务器端
- 基于HTTP/HTTPS协议
优点:
- 跨平台好
- 客户端零部署,升级方便
- 维护成本低
缺点:
- 依赖网络
- 浏览器交互能力有限
- 性能受网络影响
典型应用:Web网站、电商系统、SaaS应用
🔴 解释器(Interpreter)
特点:
- 包含被解释程序、解释引擎、执行栈等
- 在运行时解析并执行用户自定义规则或DSL
- 适合需要动态扩展用户自定义逻辑的场景
优点:
- 灵活,可在运行时改变行为
- 易于扩展新规则
缺点:
- 性能差(解释执行慢)
- 调试困难
典型应用:脚本语言(Python、JavaScript)、规则引擎、Shell
🔴 规则系统(Rule-Based)
特点:
- 由规则库(IF-THEN)、工作内存、推理引擎、冲突解决策略组成
- "规则在库里,数据在内存,选择靠冲突,推理由引擎"
优点:
- 知识表示直观
- 易于专家维护规则
缺点:
- 规则量大时性能下降
- 规则冲突处理复杂
典型应用:专家系统、业务规则引擎(Drools)
🔴 微服务架构
特点:
- 系统拆分为一组小型、自治的服务
- 每个服务独立部署、独立技术栈、专属数据库
- 通过轻量级HTTP/REST通信
- 去中心化治理
优点:
- 独立部署,迭代快
- 故障隔离,单个服务故障不影响整体
- 技术异构,不同服务可用不同语言/框架
- 易于水平扩展
缺点:
- 分布式复杂性:网络延迟、数据一致性
- 运维成本高
- 跨服务事务难处理
- 服务间通信开销大
典型应用:互联网大型系统(淘宝、京东、Netflix)
🔴 SOA(面向服务架构)
特点:
- 通过ESB(企业服务总线) 连接各服务
- 集中式治理
- 基于SOAP/WSDL/UDDI标准
- 服务粗粒度
优点:
- 服务复用
- 屏蔽异构系统差异
- 适合企业级集成
缺点:
- ESB是单点瓶颈
- 部署复杂、性能开销大
- 标准复杂
典型应用:大型企业信息系统集成
范文:架构风格选择题
题:某电商系统需要处理日订单量百万级,要求高并发、支持快速迭代上线新功能、不同子系统可独立技术选型。请选择合适的架构风格并说明理由。
答: 该系统适合采用微服务架构,理由如下:
① 业务拆分支撑高并发:百万级订单量需要水平扩展能力,微服务可将订单、商品、用户、支付等拆分为独立服务,针对热点服务单独扩容。
② 快速迭代需求匹配:微服务支持服务独立开发、测试、部署,团队可并行开发,发布频率高,符合"快速上线"要求。
③ 技术异构性:微服务允许不同子系统选择最合适的技术栈(如订单用Java、推荐用Python、实时计算用Go)。
④ 故障隔离:单个服务故障不影响整体,提升系统可用性。
同时需要注意微服务的复杂性:服务治理(注册发现、配置中心)、服务通信(RPC/REST)、分布式事务(TCC/SAGA)、链路追踪(SkyWalking)等需要配套基础设施。
2.3 🟥 质量属性场景(案例必考!)
完整六要素(要写在答卷上)
| 要素 | 含义 |
|---|---|
| 刺激源(Source) | 谁产生刺激?(用户、外部系统、内部组件) |
| 刺激(Stimulus) | 什么事件?(请求、攻击、故障) |
| 环境(Environment) | 在什么条件下?(正常运行、过载、降级) |
| 制品(Artifact) | 影响系统的哪部分?(接口、数据、整个系统) |
| 响应(Response) | 系统如何应对?(处理、拒绝、报警) |
| 响应度量(Measure) | 怎么衡量?(时间、数量、概率) |
简化四要素(最常用):刺激 → 环境 → 响应 → 响应度量
六大质量属性的标准场景模板(背!)
🔴 性能(Performance)
关注:系统响应能力
标准场景:
- 刺激源:外部用户/系统
- 刺激:到达请求(周期性/随机/突发)
- 环境:正常运行/过载/降级模式
- 制品:系统服务
- 响应:系统处理请求/改变服务级别
- 度量:响应时间、吞吐量、延迟、抖动、缺失率
性能战术(要会答) :
-
资源需求控制:
- 减少计算开销(提高算法效率)
- 管理事件率(限流)
- 控制采样频率
-
资源管理:
- 增加资源(升级硬件)
- 引入并发(多线程、多进程)
- 数据缓存(Redis/Memcached)
- 数据复制(主从复制)
-
资源仲裁:
- 调度策略(FIFO、优先级、SJF)
典型场景例:
"在峰值并发1000用户的环境下,用户提交订单请求,系统在500ms内完成处理并返回响应。"
- 刺激源:用户
- 刺激:提交订单请求
- 环境:峰值并发1000用户
- 制品:订单服务
- 响应:处理订单
- 度量:500ms内完成
🔴 可用性(Availability)
关注:系统可正常使用的程度
标准场景:
- 刺激源:内部/外部
- 刺激:故障(崩溃、错误响应、错误时序)
- 环境:正常/降级模式
- 制品:系统/服务/数据
- 响应:检测错误、恢复、预防
- 度量:MTBF、MTTR、可用率%、故障恢复时间、停机时间
可用性战术:
-
错误检测:
- Ping/Echo(心跳)
- 异常捕获
- 看门狗(Watchdog)
- 超时机制
-
错误恢复:
- 冗余备份(主备、双活)
- 状态再同步
- 回滚事务
- 检查点机制
- 选举新主节点
-
错误预防:
- 从服务中移除可能出错的组件
- 事务保证一致性
- 进程监视器
典型场景例:
"在数据库主节点发生宕机时,系统在30秒内自动切换到备节点并恢复服务,月度可用率达到99.99%。"
🔴 安全性(Security)
关注:抵抗未授权访问的能力
标准场景:
- 刺激源:攻击者(已识别/未识别)
- 刺激:尝试显示数据/修改数据/访问系统服务/拒绝服务
- 环境:在线/离线、连接/未连接
- 制品:系统服务/数据
- 响应:抵抗、检测、恢复
- 度量:抵御时间、攻击恢复时间、攻击影响范围
安全战术:
-
抵抗攻击:
- 认证(用户身份验证)
- 授权(权限控制)
- 加密(数据/通信加密)
- 维护数据完整性(哈希/签名)
- 限制暴露(最小特权)
- 限制访问(防火墙)
-
检测攻击:
- 入侵检测系统(IDS)
-
从攻击中恢复:
- 审计跟踪
- 数据备份
- 系统恢复
典型场景例:
"未授权用户尝试访问用户隐私数据时,系统在认证环节拦截,并在5秒内记录审计日志,攻击成功概率低于0.01%。"
🔴 可修改性(Modifiability)
关注:变更的成本
标准场景:
- 刺激源:开发者/系统管理员/最终用户
- 刺激:增加/删除/修改功能、改变质量属性
- 环境:设计时/编译时/运行时/构建时
- 制品:系统组件、用户界面、平台
- 响应:完成修改、测试、部署
- 度量:修改的成本(人月/工时)、修改时间、修改影响范围
可修改性战术:
-
局部化修改:
- 维护语义一致性(高内聚)
- 预测预期变更(变化点设计)
- 泛化模块(参数化)
- 限制可能选项
-
防止连锁反应:
- 信息隐蔽
- 维护现有接口
- 限制通信路径
- 使用中介(中介者模式)
-
延迟绑定时间:
- 运行时注册
- 配置文件
- 多态
典型场景例:
"新增一种支付方式(如数字货币),不影响现有功能,工作量在5人天以内。"
🔴 可测试性(Testability)
关注:通过测试暴露缺陷的容易程度
标准场景:
- 刺激源:单元开发者/集成测试者/系统验证者
- 刺激:完成增量开发、完成系统集成
- 环境:开发/集成/部署阶段
- 制品:组件/系统
- 响应:执行测试套件并捕获输出
- 度量:测试覆盖率、测试时间、缺陷发现数
可测试性战术:
-
输入输出控制:
- 接口/实现分离
- 专用访问路径
- 测试桩/Mock
-
内部监控:
- 内置监视器
- 日志输出
典型场景例:
"开发者完成一个模块开发后,单元测试覆盖率达到80%以上,回归测试在1小时内完成。"
🔴 易用性(Usability)
关注:用户使用系统的容易程度
标准场景:
- 刺激源:最终用户
- 刺激:希望学习/有效使用系统/最小化错误影响/适应/感受满意
- 环境:运行时/配置时
- 制品:系统
- 响应:系统提供帮助、撤销、可定制性
- 度量:学习时间、任务完成时间、错误数、满意度
易用性战术:
-
运行时:
- 维护用户模型(记住用户偏好)
- 维护系统模型(系统状态可见)
- 维护任务模型(理解用户意图)
-
设计时:
- 界面与功能分离
-
支持用户主动性:
- 取消、撤销
- 聚合操作
- 显示进度
典型场景例:
"新用户首次使用系统时,能在10分钟内独立完成下单流程,错误率低于5%。"
答题范文:质量属性场景题
题:根据系统需求,识别其中的关键质量属性,用质量属性场景描述。系统需求:电商系统在双11高峰期需要应对每秒10万订单,订单处理延迟小于1秒;当某台服务器宕机时,系统应在1分钟内恢复服务。
答:
本系统涉及两个关键质量属性:
【1】性能(Performance)场景
- 刺激源:终端用户
- 刺激:发起下单请求
- 环境:双11高峰期,每秒10万并发请求
- 制品:订单处理子系统
- 响应:系统接收并处理订单
- 响应度量:单笔订单处理延迟 < 1秒
应用的性能战术:① 引入并发处理(线程池、异步队列);② 数据缓存(Redis缓存热点商品、库存);③ 资源仲裁(消息队列削峰填谷);④ 数据复制(数据库主从读写分离)。
【2】可用性(Availability)场景
- 刺激源:内部硬件故障
- 刺激:服务器宕机
- 环境:正常运行模式
- 制品:应用服务集群
- 响应:自动检测故障并切换到备份节点
- 响应度量:故障恢复时间 < 1分钟
应用的可用性战术:① 错误检测(心跳/Ping);② 错误恢复(集群+主备切换、负载均衡器健康检查);③ 冗余部署(多机部署);④ 状态外置(Session放Redis,便于快速切换)。
2.4 🟥 架构评估方法(案例题高频)
ATAM(架构权衡分析法)
全称:Architecture Tradeoff Analysis Method
目标:评估架构在多个质量属性之间的权衡情况,识别风险点、敏感点、权衡点。
ATAM 9步骤(要会写):
| 阶段 | 步骤 |
|---|---|
| 阶段1:演示 | ① 介绍ATAM方法 |
| ② 介绍商业目标 | |
| ③ 介绍被评估的架构 | |
| 阶段2:调查与分析 | ④ 确定架构方法(识别架构风格、模式) |
| ⑤ 生成质量属性效用树 | |
| ⑥ 分析架构方法(识别风险点/敏感点/权衡点) | |
| 阶段3:测试 | ⑦ 头脑风暴形成场景集合 |
| ⑧ 分析架构方法(结合优先场景再次分析) | |
| 阶段4:报告 | ⑨ 提交评估报告 |
ATAM 输出:
- 架构方法/风格集合
- 质量属性效用树
- 风险点、敏感点、权衡点
- 通过的质量需求与未通过的质量需求
SAAM(场景分析法)
全称:Scenarios-based Architecture Analysis Method
目标:通过场景评估架构是否满足质量需求,比较多个候选架构的优劣。
SAAM 5步骤:
- 特征化场景:收集典型使用、增长、探索性场景
- 描述架构:用通用方式描述架构(构件+连接件)
- 场景分类:分为直接场景(架构直接支持)和间接场景(需要修改)
- 场景评估:评估每个间接场景的修改成本
- 场景交互:分析场景之间的交互(揭示架构耦合度)
SAAM 输出:架构相对优劣分析、修改风险报告
CBAM(成本效益分析法)
全称:Cost Benefit Analysis Method
目标:在ATAM基础上加入经济考量,权衡架构方案的成本与收益。
核心理念:架构决策不仅是技术决策,还是经济决策,要选择ROI(投资回报率)最高的方案。
三种方法对比(背!)
| 方法 | 核心 | 输出 | 应用阶段 |
|---|---|---|---|
| SAAM | 场景驱动 | 架构相对优劣 | 早期评估 |
| ATAM | 质量属性权衡 | 风险点/敏感点/权衡点 | 详细架构评估 |
| CBAM | 成本效益 | ROI、经济决策 | 决策选择阶段 |
三大关键点(必背 · 案例必考)
敏感点(Sensitivity Point) :
- 仅对单个质量属性产生显著影响的架构参数
- 例:缓存大小是性能的敏感点
权衡点(Tradeoff Point) :
- 同时影响多个质量属性的架构决策
- 例:增加副本数提升可用性但降低一致性,副本数就是权衡点
风险点(Risk) :
- 可能引发系统失败的潜在因素
- 例:数据库无主备 → 可用性风险
非风险点(Non-Risk) :
- 经过分析确认不会带来风险的决策
答题范文:识别敏感点/权衡点/风险点
题:以下哪些是敏感点?哪些是权衡点?哪些是风险点? ① 系统采用主从数据库复制 ② 缓存命中率 ③ 数据库连接池大小 ④ 没有备份机制
答: ① 权衡点:主从复制提升可用性和读性能,但带来数据一致性问题(主从延迟),同时影响多个质量属性 ② 敏感点:缓存命中率仅影响性能这一质量属性 ③ 敏感点:连接池大小仅影响性能(并发能力) ④ 风险点:缺失备份机制可能导致数据丢失,影响系统可用性,存在严重风险
2.5 🟥 ABSD(基于体系结构的软件设计)
标准定义
ABSD(Architecture-Based Software Design,基于体系结构的软件设计)是一种架构驱动的软件开发方法,由商业、质量、功能需求的组合共同驱动软件架构设计。
ABSD 方法采用视角与视图来描述软件架构,借助用例(捕获功能需求) 和质量场景(捕获质量需求) 清晰描述需求,遵循自顶向下、递归细化的设计流程。
该方法的设计目标是生成可直接支撑开发的软件构件或模块。
ABSD 关键要素(背!)
-
三大驱动:商业需求 + 质量需求 + 功能需求
-
描述手段:视角(Viewpoint)与视图(View)
-
需求捕获:
- 功能需求 → 用例(Use Case)
- 质量需求 → 质量属性场景(Quality Scenarios)
-
设计流程:自顶向下、递归细化
-
设计目标:生成可支撑开发的构件/模块
ABSDM(基于体系结构的开发模型)六大过程
| 过程 | 任务 | 输出 |
|---|---|---|
| 体系结构需求 | 收集商业、质量、功能需求 | 需求规格说明 |
| 体系结构设计 | 选择架构风格、设计组件 | 架构设计方案 |
| 体系结构文档化 | 标准化记录 | 体系结构规格说明 + 测试质量需求的设计说明书 |
| 体系结构复审 | 评审与改进 | 复审结论 |
| 体系结构实现 | 编码实现 | 可运行系统 |
| 体系结构演化 | 应对需求变更 | 新版本架构 |
口诀:需设档审实演
答题范文:什么是ABSD
ABSD是一种架构驱动的软件设计方法,核心特点: ① 三大驱动:由商业需求、质量需求、功能需求共同驱动 ② 视角与视图:采用多视图体系刻画架构(逻辑、进程、实现、配置) ③ 需求捕获:使用用例描述功能需求,使用质量场景描述质量需求 ④ 设计流程:自顶向下、递归细化,最终产出可指导编码的构件/模块 ⑤ 生命周期:通过ABSDM六过程(需求→设计→文档化→复审→实现→演化)实现架构的全生命周期管理
2.6 🟥 DSSA(特定领域软件架构)
标准定义
DSSA(Domain Specific Software Architecture,特定领域软件架构)是针对特定问题域形成的、为该领域内多个系统提供通用基础的软件架构,是软件复用的高级形式。
DSSA的核心优势:通过领域构件复用,提升应用开发效率,保障架构一致性。
DSSA 三大核心特性
并发、递归、反复
DSSA 三个基本活动(必背!)
| 活动 | 任务 | 产出 |
|---|---|---|
| 领域分析 | 梳理领域内各系统的共性需求 | 领域模型(核心产出) |
| 领域设计 | 基于领域模型,设计领域级架构方案 | DSSA架构方案 |
| 领域实现 | 基于模型和架构,开发可复用资源 | 可复用构件、框架、模式 |
DSSA 三层系统模型(背角色!)
| 层次 | 名称 | 核心角色 | 任务 |
|---|---|---|---|
| 第一层 | 领域开发环境 | 领域架构师 | 构建该领域通用的构件、设计模式、参考架构 |
| 第二层 | 领域特定应用开发环境 | 应用工程师 | 依托领域资产,开发具体业务系统 |
| 第三层 | 应用执行环境 | 操作员 | 运行和维护已开发应用 |
⚠️ 注意:程序员是通用称谓,不是DSSA体系中的特定角色。
DSSA 功能覆盖范围分类
- 垂直域:覆盖特定行业(如金融、电信、医疗)
- 水平域:覆盖跨行业的通用功能(如安全、报表、日志)
答题范文:DSSA基本概念
DSSA是面向特定问题域的软件架构,核心价值在于通过领域级复用提升开发效率。其建立过程具有并发、递归、反复三大特性,包含三个基本活动: ① 领域分析:分析该领域多个系统的共性需求,建立领域模型 ② 领域设计:基于领域模型,设计具有通用性的DSSA架构方案 ③ 领域实现:开发该领域的可复用构件、框架、模式
DSSA采用三层系统模型: ① 领域开发环境(领域架构师主导):产出通用资产 ② 领域特定应用开发环境(应用工程师主导):开发具体应用 ③ 应用执行环境(操作员主导):运行维护
DSSA是软件复用的高级形式,相比传统代码级复用,能提供更系统的复用方案。
2.7 🟥 软件复用与构件
软件复用层次(从低到高)
- 代码复用(最低)
- 设计复用
- 分析复用
- 测试信息复用
软件复用的内容
需求分析文档、设计文档、程序代码、测试用例、领域知识
软件复用类型
- 机会复用:开发完成后发现可复用,临时整合
- 系统复用:从一开始就计划好的有组织的复用
软件复用三阶段
- 获取可复用资产:识别、评估、获取(自主开发、购买、开源)
- 管理可复用资产:分类、存储、版本控制、文档化
- 使用可复用资产:在新项目中集成和适配
构件五种形态
独立而成熟、有限制、适应性、装配、可修改
构件四大特征
独立部署性、封装性、复用性、唯一性
构件组装方式(案例可能考)🆕
| 方式 | 说明 |
|---|---|
| 黑盒组装 | 不需要修改构件内部,仅通过接口集成 |
| 白盒组装 | 需要修改构件源代码 |
| 灰盒组装 | 介于两者之间,部分扩展 |
构件组装步骤
定制 → 集成 → 扩展
答题范文:构件复用方案
在本系统中,可采用以下构件复用策略: ① 构件库建设:建立公司级构件库,对支付、登录、消息等通用功能进行构件化封装,便于多项目复用。 ② 复用形式:以黑盒组装为主,通过定义清晰的构件接口(API)进行集成,避免修改构件内部实现,降低耦合。 ③ 复用流程:遵循"获取→管理→使用"三阶段,由专门团队维护构件库,开发团队按需引用。 ④ DSSA思想:针对核心业务域(如电商域),抽象领域模型与参考架构,形成领域特定复用资产,加速新业务系统开发。
2.8 🟥 微服务架构(案例高频)
微服务核心特征(背!)
- 服务自治:每个服务独立部署、独立技术栈
- 去中心化数据管理:每个服务有专属数据库
- 基础设施自动化:CI/CD、自动部署
- 故障容忍设计:熔断、降级、限流
- 轻量通信:HTTP/REST、RPC
- 业务能力组织:按业务领域划分服务
微服务核心组件(案例必背)
| 组件 | 作用 | 代表产品 |
|---|---|---|
| 服务注册发现 | 服务动态定位 | Eureka、Consul、Nacos、Zookeeper |
| 配置中心 | 集中配置管理 | Apollo、Nacos、Spring Cloud Config |
| API网关 | 统一入口、路由、鉴权、限流 | Zuul、Spring Cloud Gateway、Kong |
| 熔断降级 | 故障隔离,防止雪崩 | Hystrix、Sentinel |
| 链路追踪 | 调用链监控 | SkyWalking、Zipkin、Jaeger |
| 负载均衡 | 流量分发 | Ribbon、Nginx |
| 日志收集 | 日志聚合分析 | ELK(Elasticsearch+Logstash+Kibana) |
| 消息队列 | 异步通信、解耦 | Kafka、RabbitMQ、RocketMQ |
| 容器编排 | 服务部署运维 | Docker、Kubernetes(K8s) |
服务治理三大策略
| 策略 | 含义 | 触发条件 |
|---|---|---|
| 熔断 | 故障时断开调用,快速失败 | 失败率超阈值 |
| 降级 | 故障时返回简化结果或默认值 | 服务不可用/资源紧张 |
| 限流 | 流量过大时拒绝部分请求 | QPS超限 |
微服务拆分原则
- 单一职责:一个服务只做一件事
- 业务边界清晰:按业务域划分(DDD的限界上下文)
- 数据库独立:避免共享数据库
- 粒度适中:避免过细(增加复杂度)或过粗(失去微服务优势)
答题范文:传统单体架构改造为微服务
将传统单体电商系统改造为微服务架构,建议方案:
【1】服务拆分:按业务域拆分为用户服务、商品服务、订单服务、支付服务、库存服务、推荐服务等,每个服务专属数据库。
【2】基础设施: ① 引入Nacos 作为服务注册中心和配置中心 ② 使用Spring Cloud Gateway 作为API网关,统一处理路由、鉴权、限流 ③ 部署Sentinel 实现熔断、限流、降级 ④ 引入SkyWalking 实现全链路追踪 ⑤ 使用RocketMQ 处理异步消息(订单创建、库存扣减解耦)
【3】部署运维: ① 使用Docker 容器化每个服务 ② Kubernetes 编排容器,实现自动扩缩容、滚动升级 ③ 建立CI/CD流水线(Jenkins/GitLab CI)
【4】数据一致性:跨服务事务采用最终一致性方案(基于消息队列+本地事务表/SAGA)
【5】预期收益: ① 单服务故障不影响整体可用性 ② 各服务可独立伸缩,应对峰值流量 ③ 团队并行开发,发布频率从月级提升到周级 ④ 支持技术栈异构(推荐服务用Python+TF,核心交易用Java)
2.9 🟥 Web系统高并发优化(案例超高频)
优化层次模型(按层级答题)
[客户端]
↓
[CDN/静态资源加速]
↓
[负载均衡器(Nginx/F5/LVS)]
↓
[Web服务器集群(无状态)]
↓
[缓存层(Redis/Memcached)]
↓
[消息队列(异步解耦)]
↓
[数据库集群(主从+分库分表)]
↓
[分布式存储(HDFS/对象存储)]
各层优化策略详解
🟢 前端层
- CDN:静态资源(图片、CSS/JS)就近访问
- HTML静态化:动态页面预生成静态页
- 图片压缩 / WebP格式
- HTTP/2 / 浏览器缓存
🟢 接入层
-
负载均衡:
- DNS负载均衡:域名解析到不同IP
- 硬件负载均衡:F5、A10
- 软件负载均衡:Nginx(七层)、LVS(四层)、HAProxy
-
常见算法:轮询、加权轮询、最少连接、IP哈希
🟢 应用层
- 集群部署:多台应用服务器
- 无状态化:Session外置(Redis),便于水平扩展
- 异步处理:耗时操作异步化
- 连接池:复用连接
🟢 缓存层
-
本地缓存:Caffeine、Guava Cache
-
分布式缓存:Redis(主流)、Memcached
-
多级缓存:本地缓存 + 分布式缓存
-
缓存模式:
- Cache Aside(最常用):应用读写缓存与DB
- Read/Write Through:缓存代理读写
- Write Back:写缓存,异步刷DB
🟢 缓存三大经典问题(必背!)
| 问题 | 含义 | 解决方案 |
|---|---|---|
| 缓存穿透 | 查询不存在的key,每次都打到DB | 布隆过滤器、空值缓存 |
| 缓存击穿 | 单个热点key过期,瞬时高并发打DB | 互斥锁、热点key永不过期 |
| 缓存雪崩 | 大量key同时失效,DB被压垮 | 过期时间随机化、多级缓存、限流降级 |
🟢 数据库层
- 主从复制 + 读写分离:读多写少时
- 分库:按业务垂直拆分
- 分表:水平拆分(按ID取模、范围、一致性哈希)
- NewSQL/分布式DB:TiDB、OceanBase
- SQL优化:索引、避免全表扫描、分页优化
🟢 消息队列
- 削峰填谷:流量高峰时缓冲
- 异步解耦:业务异步化
- 最终一致:跨服务一致性
🟢 监控运维
- APM:SkyWalking、Pinpoint
- 日志:ELK
- 指标:Prometheus + Grafana
- 告警:钉钉、邮件、电话
答题范文:高并发系统设计
题:电商系统在双11期间预估QPS峰值达到10万,请给出系统优化方案。
答:
针对高并发挑战,建议从七层全栈优化:
【1】前端层:CDN缓存静态资源,HTML静态化首页和商品详情页,前端打包压缩。
【2】接入层:使用Nginx集群做七层负载均衡,配合LVS四层做高可用,根据用户IP做就近接入。
【3】应用层: ① 应用服务无状态化,Session放Redis集群 ② 水平扩展至数百实例,K8s自动扩缩容 ③ 限流(Sentinel限制单接口QPS)
【4】缓存层: ① Redis集群缓存商品、库存、用户信息(热点数据) ② 采用Cache Aside模式 ③ 多级缓存:JVM本地缓存(Caffeine)+ Redis ④ 防止缓存穿透(布隆过滤器)、击穿(互斥锁)、雪崩(过期时间随机化)
【5】数据库层: ① MySQL 主从复制 + 读写分离 ② 订单表按用户ID 分库分表(16库×64表) ③ 历史订单冷热分离,归档到HBase
【6】异步层: ① 下单后异步发送RocketMQ消息,扣库存、发优惠券、积分等异步处理 ② 削峰:用消息队列缓冲突发流量
【7】监控层:SkyWalking链路追踪、Prometheus指标、ELK日志、实时告警
预期效果:系统支撑10万QPS,平均响应时间<200ms,可用性达到99.99%。
2.10 🟥 数据库设计与优化(案例必考)
数据库设计四阶段(要会写)
| 阶段 | 任务 | 工具/产出 |
|---|---|---|
| 需求分析 | 收集业务需求、数据需求 | DFD、数据字典、需求说明书 |
| 概念结构设计 | 抽象成概念模型 | E-R图 |
| 逻辑结构设计 | 转换为关系模式 + 规范化/反规范化 | 关系模式 |
| 物理结构设计 | 存储结构、索引、分区 | 物理设计方案 |
E-R图转关系模式规则
| 联系类型 | 转换方法 |
|---|---|
| 1:1 | 合并到任一关系,外键放谁都行 |
| 1:N | 合并到N端,N端添加外键 |
| M:N | 独立成新关系,主键是双方主键的组合 |
关系数据库范式(案例计算高频)
| 范式 | 要求 | 解决问题 |
|---|---|---|
| 1NF | 属性不可再分 | 复合属性 |
| 2NF | 1NF + 消除非主属性对码的部分函数依赖 | 部分依赖 |
| 3NF | 2NF + 消除非主属性对码的传递函数依赖 | 传递依赖 |
| BCNF | 3NF + 消除主属性对码的部分和传递依赖 | 主属性内部依赖 |
| 4NF | BCNF + 消除多值依赖 | 多值依赖 |
判断范式步骤:
- 找候选码
- 看每个非主属性是否完全依赖于码(否 → 1NF)
- 看是否有传递依赖(有 → 2NF)
- 看主属性内部是否有依赖(有 → 3NF)
求候选码(案例计算高频)
按属性出现位置分类:
- L类:只在依赖左部出现
- R类:只在依赖右部出现
- N类:左右都不出现
- LR类:左右都出现
规则:
- 候选码必含 L+N
- 候选码绝不含 R
- 如果 L+N 的闭包就是全部属性,那 L+N 就是唯一候选码
- 否则需要从 LR 中加属性测试
反规范化技术(性能优化)
| 技术 | 说明 |
|---|---|
| 增加冗余列 | 在多表JOIN场景,把常用字段冗余到主表 |
| 增加派生列 | 缓存计算结果(如订单金额合计) |
| 重新组表 | 改变表结构以匹配查询模式 |
| 水平分割 | 按行拆分表(分表) |
| 垂直分割 | 按列拆分表(冷热分离) |
代价:维护一致性变复杂,需配合触发器/应用代码同步。
数据库索引设计
索引类型
- B+树索引(最常用):支持等值和范围查询
- 哈希索引:等值查询O(1),不支持范围
- 全文索引:文本搜索
- 位图索引:低基数列(如性别)
- 聚簇索引:决定数据物理存储顺序(一表只能一个)
- 非聚簇索引:辅助索引
- 覆盖索引:查询所需字段都在索引中,避免回表
索引设计原则
- WHERE / JOIN / ORDER BY / GROUP BY 字段建索引
- 区分度高的列建索引(如手机号、身份证号)
- 避免对小表/频繁更新的列建索引
- 联合索引遵循最左前缀原则
数据库锁与隔离级别(必背)🆕
隔离级别(从低到高)
| 级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交(Read Uncommitted) | ✗ | ✗ | ✗ |
| 读已提交(Read Committed) | ✓ | ✗ | ✗ |
| 可重复读(Repeatable Read) | ✓ | ✓ | ✗ |
| 串行化(Serializable) | ✓ | ✓ | ✓ |
✗=可能发生,✓=避免
- 脏读:读到其他事务未提交的数据
- 不可重复读:同一事务内两次读取同一行结果不同(其他事务UPDATE)
- 幻读:同一事务内两次查询结果集行数不同(其他事务INSERT)
MVCC(多版本并发控制)🆕
通过保存数据的多个版本,实现读不阻塞写、写不阻塞读,提升并发性能。MySQL InnoDB、PostgreSQL都使用MVCC。
分布式数据库优化方案(案例高频)
| 技术 | 作用 |
|---|---|
| 主从复制 | 读写分离(主写从读) |
| 分库 | 按业务垂直拆分(用户库、订单库、商品库) |
| 分表 | 水平拆分(按ID取模/范围/一致性哈希) |
| NewSQL | TiDB、OceanBase(兼具SQL+扩展性) |
分布式事务方案(案例高频)🆕
| 方案 | 一致性 | 性能 | 适用场景 |
|---|---|---|---|
| 2PC(两阶段提交) | 强一致 | 低(同步阻塞) | 传统数据库分布式事务 |
| 3PC(三阶段提交) | 强一致 | 较低 | 改进2PC,减少阻塞 |
| TCC(Try-Confirm-Cancel) | 最终一致 | 较高 | 金融、订单 |
| SAGA | 最终一致 | 高 | 长事务、跨服务 |
| 本地消息表 | 最终一致 | 高 | 简单异步场景 |
| 可靠消息最终一致 | 最终一致 | 高 | 基于MQ的事务 |
| 最大努力通知 | 最终一致 | 高 | 通知类(如支付回调) |
答题范文:电商订单库设计
题:设计一个支持每秒1万订单的订单数据库方案。
答:
【1】数据库选型:MySQL作为主存储(成熟、支持事务),HBase作为历史归档库。
【2】表结构设计: ① 核心表:order(订单主表)、order_item(订单明细)、user、product ② 满足3NF,避免数据冗余 ③ 必要场景下反规范化:订单表冗余商品名称、用户昵称,避免JOIN
【3】索引设计: ① 订单表主键为order_id(雪花算法生成) ② 联合索引(user_id, create_time):支持查询用户订单按时间倒序 ③ 索引(status, create_time):支持按状态查询 ④ 避免在is_deleted、gender这类低区分度字段建索引
【4】分库分表: ① 按用户ID取模分库:16个库 ② 每个库内按订单ID取模分64张表 ③ 共1024张物理表,单表数据量控制在500万以内
【5】读写分离: ① MySQL主从复制:1主3从 ② 写操作走主库,读操作走从库 ③ 关键查询(如下单后查询)走主库避免主从延迟
【6】冷热分离: ① 近3个月订单存MySQL(热数据) ② 历史订单归档到HBase(冷数据)
【7】缓存:Redis缓存订单详情,TTL 1小时,减轻DB压力
【8】事务一致性: ① 单订单写入用本地事务 ② 跨服务(订单+库存+支付)使用TCC 或 可靠消息最终一致
2.11 🟥 嵌入式系统设计(案例考点)
嵌入式系统组成
[应用软件层]
↓
[嵌入式中间件 / RTOS]
↓
[BSP(板级支持包)]
↓
[硬件层(CPU + 外设)]
嵌入式系统四大特点
- 专用性:为特定应用定制
- 资源受限:CPU、内存、功耗有限
- 实时性:满足时序约束
- 可裁剪:根据需求裁剪OS和功能
BSP(板级支持包)作用
- 衔接特定硬件平台和特定操作系统
- 硬件有关性:适配硬件
- OS有关性:与目标OS内核接口一致
- 主要功能:硬件初始化、设备驱动、硬件中断处理
嵌入式RTOS核心能力
- 实时性(确定性、及时性)
- 可裁剪、可配置
- 优先级抢占调度
- 任务间同步与通信(信号量、消息队列、邮箱、事件标志)
- 资源占用小
嵌入式调度算法
| 算法 | 类型 | 优先级规则 |
|---|---|---|
| RMS(速率单调) | 静态 | 周期短的优先级高 |
| EDF(最早截止期优先) | 动态 | 截止期近的优先 |
| DM(截止期单调) | 静态 | 截止期短的优先级高 |
RMS可调度判定:n个任务,CPU利用率 ≤ n×(2^(1/n) - 1) 时一定可调度。
EDF:单处理器最优算法,利用率达100%仍可调度。
嵌入式低功耗设计三大策略
- 编译优化技术:减少指令执行
- 软硬件协同设计:硬件辅助降功耗
- 算法优化:选择低复杂度算法
嵌入式中间件🆕
- 提供应用与RTOS/BSP之间的中间服务
- 典型功能:通信中间件、数据库中间件、安全中间件
答题范文:嵌入式系统架构设计
题:设计一个智能家居控制器嵌入式系统。
答:
【1】硬件平台:选用Cortex-M系列MCU(如STM32),低功耗、成本低,适合MCU场景。
【2】操作系统:选用FreeRTOS(开源、轻量、支持优先级抢占调度),满足实时控制需求。
【3】系统分层: ① 硬件层:MCU + WiFi模块 + 传感器(温湿度、PIR等) ② BSP层:硬件初始化、设备驱动、中断处理 ③ RTOS层:任务调度、同步通信 ④ 中间件层:MQTT通信、本地存储(SQLite嵌入式数据库) ⑤ 应用层:业务逻辑(设备控制、定时任务、场景联动)
【4】任务划分: ① 高优先级:紧急告警任务(如燃气泄漏)→ RMS最高优先级 ② 中优先级:设备控制响应(用户操作) ③ 低优先级:传感器数据采集(周期任务)、日志上传
【5】低功耗设计: ① 算法优化:使用查表法替代复杂运算 ② 软硬协同:MCU空闲时进入低功耗模式(STOP/STANDBY) ③ 编译优化:开启O2优化,移除调试代码
【6】可靠性: ① 看门狗(Watchdog)防止死锁 ② OTA升级支持
2.12 🟥 信息安全设计(案例可能考)
安全五要素(CIA+扩展)
- 机密性(Confidentiality):未授权不能访问
- 完整性(Integrity):数据不被篡改
- 可用性(Availability):合法用户可正常使用
- 不可抵赖性(Non-repudiation):操作不能否认
- 可控性(Controllability):可控制信息流向
加密技术(背!)
| 类型 | 代表算法 | 特点 | 用途 |
|---|---|---|---|
| 对称加密 | DES、3DES、AES、IDEA | 同一密钥,快,密钥分发难 | 大数据加密 |
| 非对称加密 | RSA、ECC、DSA | 公私钥对,慢,密钥分发安全 | 密钥交换、签名 |
| 哈希函数 | MD5、SHA-1、SHA-256 | 不可逆,固定长度 | 完整性校验 |
数字签名工作流程
发送方用私钥对消息哈希值加密 → 接收方用公钥解密验证 实现:身份认证 + 完整性 + 不可抵赖
PKI体系组成
- CA(Certificate Authority):证书颁发机构
- RA(Registration Authority):注册机构
- 数字证书:绑定公钥与身份
- CRL(Certificate Revocation List):吊销列表
- OCSP:在线证书状态协议
常见安全攻击与防御🆕
| 攻击 | 原理 | 防御 |
|---|---|---|
| SQL注入 | 拼接恶意SQL | 参数化查询/预编译、输入校验 |
| XSS(跨站脚本) | 注入JS | HTML转义、CSP内容安全策略 |
| CSRF(跨站请求伪造) | 借用用户身份 | Token、Referer校验、SameSite Cookie |
| DDoS(分布式拒绝服务) | 大流量打挂服务器 | 流量清洗、CDN、WAF、限流 |
| 中间人攻击(MITM) | 拦截通信 | HTTPS、证书校验 |
| 暴力破解 | 穷举密码 | 验证码、账号锁定、密码强度 |
| 会话劫持 | 窃取SessionID | HTTPS、HttpOnly Cookie、Session超时 |
容灾备份等级(六级)🆕
| 级别 | 特点 |
|---|---|
| 1 | 基本支持(离线备份) |
| 2 | 备用场地支持(离线+备用场地) |
| 3 | 电子传输部分恢复 |
| 4 | 电子传输完整恢复 |
| 5 | 实时数据传输 |
| 6 | 数据零丢失(双活) |
RTO 与 RPO(必背)
- RTO(Recovery Time Objective):恢复时间目标 — 多久能恢复服务
- RPO(Recovery Point Objective):恢复点目标 — 数据可丢失的时间窗口
信息安全等级保护五级
用户自主、系统审计、安全标记、结构化、访问验证
答题范文:电商系统安全方案
【1】身份认证:用户密码使用 Bcrypt 加盐哈希 存储;登录支持双因素认证(短信/Google Authenticator);JWT Token + Refresh Token机制。
【2】通信安全:全站 HTTPS(TLS 1.3) ;API使用HMAC签名防篡改。
【3】权限控制:基于 RBAC(角色权限模型) ,最小特权原则;敏感操作二次验证。
【4】数据安全: ① 用户隐私字段(手机号、身份证号)AES加密存储 ② 关键操作记录审计日志 ③ 数据库定期全量+增量备份,异地容灾,RTO < 30分钟,RPO < 5分钟
【5】防攻击: ① WAF防SQL注入、XSS ② 接入CDN+流量清洗防DDoS ③ 接口限流(Sentinel) ④ 风控系统识别异常行为
【6】合规:等保三级(结构化保护级),符合GDPR/个人信息保护法。
2.13 🟥 大数据架构(案例可能考)
Lambda 架构
核心思想:批处理 + 实时双轨制
┌──→ 批处理层(Hadoop/Spark)→ 历史视图
数据源 → 分发 ┤
└──→ 速度层(Storm/Flink)→ 实时视图
↓
服务层(HBase/Druid)统一查询
优点:批处理结果准确,实时层弥补延迟 缺点:两套代码维护成本高
Kappa 架构
核心思想:单一流处理,重放日志实现历史计算
数据源 → 流处理(Flink/Kafka Streams)→ 服务层
↑
历史数据通过重放日志实现
优点:架构简单,一套代码 缺点:依赖流处理框架能力
Hadoop 生态系统
| 组件 | 作用 |
|---|---|
| HDFS | 分布式文件存储 |
| MapReduce | 批处理计算 |
| YARN | 资源管理调度 |
| HBase | 列式NoSQL数据库 |
| Hive | 数据仓库(SQL on Hadoop) |
| Spark | 内存计算(比MR快10-100倍) |
| Kafka | 分布式消息队列 |
| Flink | 流处理 |
| ZooKeeper | 分布式协调 |
| Sqoop | 关系型DB与Hadoop数据迁移 |
| Flume | 日志采集 |
数据预处理四步骤
数据清洗 → 数据集成 → 数据转换 → 数据规约
- 数据清洗:处理缺失值、噪声、不一致、重复
- 数据集成:合并多源(注意实体识别、冗余消除、冲突处理)
- 数据转换:规范化、离散化、概念分层
- 数据规约:维归约、数量规约、数据压缩
数据仓库 vs 数据湖🆕
| 维度 | 数据仓库 | 数据湖 |
|---|---|---|
| 数据类型 | 结构化为主 | 结构化+半结构化+非结构化 |
| 模式 | 写时模式(Schema-on-write) | 读时模式(Schema-on-read) |
| 用途 | BI分析、报表 | 大数据分析、机器学习 |
| 代表 | Hive、Greenplum | HDFS、对象存储 |
数据中台🆕
定义:将企业数据资产化、标准化、服务化的中间平台。
核心能力:
- 数据资产管理
- 数据服务(OneService)
- 标签体系(OneID)
- 数据建模(OneModel)
2.14 🟥 消息中间件(案例考点)
主流消息中间件对比(背!)
| 中间件 | 特点 | 吞吐量 | 适用场景 |
|---|---|---|---|
| Kafka | 高吞吐、分布式日志、持久化 | 极高(百万级/s) | 大数据日志、事件驱动 |
| RabbitMQ | AMQP、灵活路由、可靠 | 中(万级/s) | 业务异步、解耦 |
| RocketMQ | 阿里、支持事务消息、顺序消息 | 高(十万级/s) | 电商、金融 |
| ActiveMQ | JMS标准、稳定 | 较低 | 传统企业 |
| Pulsar | 计算存储分离 | 高 | 云原生 |
消息中间件四大作用
- 异步处理:耗时操作异步化
- 应用解耦:服务间解耦,独立演进
- 流量削峰:缓冲突发流量
- 最终一致:分布式事务方案
消息可靠性问题
| 问题 | 解决方案 |
|---|---|
| 消息丢失 | 持久化 + ACK确认 + 重试 |
| 消息重复 | 消费者幂等设计 |
| 消息顺序 | 单分区/单队列保证顺序 |
| 消息积压 | 扩容消费者、批量消费 |
答题范文:消息中间件选型
题:电商系统订单创建后需异步通知库存、积分、推荐多个系统,请选择消息中间件并设计方案。
答:
选择 RocketMQ,理由: ① 阿里电商场景验证,支持事务消息(订单+消息一致性) ② 十万级吞吐量,满足双11场景 ③ 支持顺序消息、延迟消息(适合订单超时关闭场景) ④ 完善的告警监控
方案设计: ① 订单服务发送事务消息:本地订单事务提交后,消息才被消费者可见 ② 库存、积分、推荐订阅订单创建Topic,独立消费 ③ 消费端幂等设计:基于订单ID去重,防止重复消费 ④ 死信队列:处理失败的消息进入DLQ,人工介入 ⑤ 监控积压:设置告警阈值,自动扩容消费者
2.15 🟥 容器与微服务运维(案例考点)
Docker
容器三要素:
- 镜像(Image) :只读模板
- 容器(Container) :镜像运行实例
- 仓库(Registry) :存储镜像(Docker Hub、Harbor)
Kubernetes(K8s)核心对象
| 对象 | 作用 |
|---|---|
| Pod | 最小部署单元,包含一个或多个容器 |
| Service | 服务发现与负载均衡 |
| Deployment | 声明式部署、滚动升级、回滚 |
| StatefulSet | 有状态服务部署 |
| ConfigMap | 配置管理 |
| Secret | 敏感信息管理 |
| Ingress | 七层路由、域名访问 |
| Namespace | 资源隔离 |
CI/CD 流水线(持续集成/持续交付)
代码提交 → 自动构建 → 自动测试 → 自动部署 → 监控反馈
Git Jenkins JUnit K8s Prometheus
DevOps 三大原则
- 流动:代码从开发→测试→生产快速流动
- 反馈:快速反馈机制(监控、告警)
- 持续学习:实验文化、复盘改进
2.16 🟥 UML案例题(案例可能考)
三类UML建模阶段
| 阶段 | UML工具 |
|---|---|
| OOA(面向对象分析) | 顶层架构图、用例图、领域概念模型 |
| OOD(面向对象设计) | 类图、序列图、协作图、状态图 |
| OOP(面向对象编程) | 实现代码 |
UML关键图详解
类图(静态结构)
- 类(属性 + 方法)
- 类间关系:继承、实现、关联、依赖、聚合、组合
- 聚合 vs 组合:聚合是弱拥有(部分可独立存在),组合是强拥有(部分不能独立)
用例图
- 参与者(Actor):使用系统的人/外部系统
- 用例(Use Case):系统功能
- 关系:包含(include)、扩展(extend)、泛化
序列图(顺序图)
- 横轴:对象
- 纵轴:时间
- 表达对象间消息时序
协作图(通信图)
- 强调对象间协作关系
- 与序列图等价(语义相同)
状态图
- 表达对象状态变迁
- 元素:状态、转移、事件、动作
活动图
- 表达业务流程/算法流程
- 类似流程图,支持并发
答题范文:图书馆管理系统UML建模
【1】用例图: 参与者:读者、管理员、系统管理员 主要用例:借书、还书、续借、查询、添加图书、注销图书、统计报表
【2】类图(核心类) : ① Reader:属性(id、姓名、电话);方法(登录、借书、还书) ② Book:属性(ISBN、书名、作者、状态);方法(借出、归还) ③ BorrowRecord:属性(id、借阅时间、归还时间) ④ Reader 与 BorrowRecord 是 1:N 关联 ⑤ Book 与 BorrowRecord 是 1:N 关联
【3】序列图(借书流程) : 读者 → 系统 → 数据库 → 系统 → 读者
- 读者扫码图书
- 系统验证借阅资格
- 数据库更新借阅记录
- 系统返回借阅成功
2.17 🟥 案例计算题专项(必背公式)
可靠性计算
串联系统
R = R1 × R2 × R3 × ... × Rn (任一组件挂 → 系统挂)
并联系统
R = 1 - (1-R1)(1-R2)...(1-Rn) (全挂才挂)
混合系统
分块计算:先算内层(并联或串联块)→ 再算外层
例题
三模块A、B、C,A与B串联后再与C并联,R(A)=0.9, R(B)=0.9, R(C)=0.95,求系统可靠性。
解:
- A、B串联:R(AB) = 0.9 × 0.9 = 0.81
- (AB) 与 C 并联:R = 1 - (1-0.81)(1-0.95) = 1 - 0.19 × 0.05 = 1 - 0.0095 = 0.9905
MTBF / MTTR / 可用率
- MTBF(Mean Time Between Failures):平均故障间隔
- MTTF(Mean Time To Failure):平均无故障时间
- MTTR(Mean Time To Repair):平均修复时间
- 可用率 A = MTBF / (MTBF + MTTR)
例题
MTBF = 999小时,MTTR = 1小时,求可用率? A = 999 / 1000 = 99.9%
阿姆达尔定律(Amdahl's Law)
加速比 S = 1 / [(1-P) + P/N]
- P:可并行部分占比
- N:处理器数
- (1-P):串行部分占比
例题
程序90%可并行,4个处理器并行处理,加速比?
解:S = 1 / [0.1 + 0.9/4] = 1 / 0.325 ≈ 3.08
性能指标关系
- 吞吐量 = 并发数 / 平均响应时间
- 响应时间 = 处理时间 + 排队时间
- CPU 利用率 = 1 - 空闲时间占比
Cache 命中率
平均访问时间 T = h × Tc + (1-h) × Tm
- h:命中率
- Tc:Cache访问时间
- Tm:主存访问时间
网络协议吞吐量
- 吞吐量 = 数据量 / 传输时间
- 传输时间 = 传播时延 + 发送时延
- 发送时延 = 数据量 / 带宽
关键路径计算(项目管理)
- ES(最早开始)= max(前驱EF)
- EF(最早完成)= ES + 工期
- LF(最晚完成)= min(后继LS)
- LS(最晚开始)= LF - 工期
- 总时差 = LS - ES = LF - EF
- 关键路径:总时差为0的路径,决定项目最短工期
数据库连接池容量
- 连接池大小 ≈ CPU核心数 × 2 + 磁盘数(经验公式)
- 也参考 QPS、平均SQL耗时# Part 3 理解记忆区
这部分不需要逐字背诵,理解后会判断、对比、选择即可。
3.1 🟨 架构风格选型对照表(看到关键词就反应)
| 题干关键词 | 选择架构风格 |
|---|---|
| 编译器、Unix管道、流水线数据处理 | 管道-过滤器 |
| IDE、数据库、ERP多工具集成、共享中央数据 | 仓库(数据共享) |
| AI、专家系统、语音识别、问题空间复杂、解空间庞大、求解过程不确定 | 黑板 |
| GUI、消息驱动、松耦合、异步事件、发布订阅 | 事件驱动(隐式调用) |
| 脚本执行、DSL、运行时解析规则、动态扩展用户逻辑 | 解释器 |
| 规则推理、专家系统、知识库 | 规则系统 |
| 网络协议(OSI/TCP)、操作系统层次 | 分层 |
| 企业服务集成、ESB、SOAP | SOA |
| 互联网大规模、独立部署、敏捷迭代 | 微服务 |
| 共享数据中央仓库 + 知识源推理 | 黑板(=仓库+推理) |
| 构件靠消息、层次化、并行 | C2 |
| 处理流程固定、需求稳定、批量处理 | 批处理 |
| 主从控制、主控+从节点 | 主从 |
| 浏览器访问、HTTP、跨平台 | B/S |
| 客户端响应快、专用客户端 | C/S |
3.2 🟨 设计模式速查(看场景选模式)
创建型场景识别
| 场景描述 | 模式 |
|---|---|
| 不确定具体类型,工厂决定 | 工厂方法 |
| 创建一族相关产品(一个工厂多个产品) | 抽象工厂 |
| 全局唯一(如配置管理器、连接池) | 单例 |
| 复杂对象分步构建(同一过程产出不同对象) | 建造者 |
| 通过克隆已有对象创建(避免重复初始化) | 原型 |
结构型场景识别
| 场景描述 | 模式 |
|---|---|
| 接口不兼容,接口转换 | 适配器 |
| 动态扩展功能,不影响其他对象 | 装饰器 |
| 控制对其他对象的访问(远程、虚拟、保护) | 代理 |
| 简化复杂子系统的统一接口 | 外观 |
| 抽象与实现分离(两个维度独立变化) | 桥接 |
| 树形结构,叶子和组合统一处理 | 组合 |
| 共享细粒度对象,节省内存 | 享元 |
行为型场景识别
| 场景描述 | 模式 |
|---|---|
| 多种算法可互换 | 策略 |
| 固定算法骨架,子类实现细节 | 模板方法 |
| 一对多依赖,状态变化通知 | 观察者 |
| 顺序访问聚合对象 | 迭代器 |
| 请求沿链传递直到被处理 | 责任链 |
| 请求封装为对象(支持撤销/记录) | 命令 |
| 保存/恢复对象状态 | 备忘录 |
| 行为随状态改变 | 状态 |
| 操作与数据结构解耦 | 访问者 |
| 集中处理对象间复杂通信 | 中介者 |
| 解释特定语言/表达式 | 解释器 |
3.3 🟨 易混对比
微服务 vs SOA
| 维度 | 微服务 | SOA |
|---|---|---|
| 治理 | 去中心化 | 集中式(ESB) |
| 数据 | 每服务独立DB | 共享DB常见 |
| 通信 | 轻量HTTP/REST | SOAP(重) |
| 部署 | 独立部署 | 整体部署 |
| 技术栈 | 自由选择 | 统一约束 |
| 粒度 | 细粒度 | 粗粒度 |
| 适合 | 互联网、快速迭代 | 大型企业集成 |
C/S vs B/S
| 对比 | C/S | B/S |
|---|---|---|
| 客户端 | 专用客户端 | 浏览器 |
| 部署 | 客户端要安装 | 零安装 |
| 升级 | 客户端逐个升级 | 服务端统一升级 |
| 跨平台 | 差 | 好 |
| 性能 | 高 | 受网络限制 |
| 安全性 | 较高 | 较低 |
仓库 vs 黑板
| 维度 | 仓库 | 黑板 |
|---|---|---|
| 构成 | 中央数据 + 独立构件 | 黑板 + 知识源 + 推理引擎 |
| 求解过程 | 确定 | 不确定(启发式) |
| 触发方式 | 主动读写 | 数据驱动触发知识源 |
| 适用 | 数据库、IDE | AI、语音识别 |
RTOS vs 分时操作系统
| 维度 | RTOS | 分时OS |
|---|---|---|
| 调度核心 | 确定性、及时性 | 公平性 |
| 抢占 | 优先级抢占 | 时间片轮转 |
| 任务 | 实时任务 | 普通任务 |
| 例子 | μC/OS、FreeRTOS、VxWorks | Linux、Windows |
2PC / 2PL / 3PC
| 协议 | 全称 | 解决问题 | 阶段 |
|---|---|---|---|
| 2PC | 两阶段提交 | 分布式事务一致性 | 表决 + 执行 |
| 2PL | 两阶段锁 | 并发控制(隔离性) | 扩展 + 收缩 |
| 3PC | 三阶段提交 | 改进2PC(减少阻塞) | CanCommit + PreCommit + DoCommit |
V/W/H/X 测试模型
| 模型 | 特点 |
|---|---|
| V模型 | 测试镜像于开发,明确各级别 |
| W模型 | 测试同步参与开发,早期介入 |
| H模型 | 测试完全独立,与流程并行 |
| X模型 | 单独单元开发测试,支持探索性测试 |
黑盒 vs 白盒测试
| 测试 | 黑盒 | 白盒 |
|---|---|---|
| 关注 | 功能 | 结构 |
| 视角 | 不看代码 | 看代码 |
| 方法 | 等价类、边界值、决策表、因果图、场景法、错误推测 | 语句覆盖、判定覆盖、条件覆盖、判定/条件、条件组合、路径覆盖 |
内聚 vs 耦合
- 内聚(越高越好) :功能 > 顺序 > 通信 > 过程 > 时间 > 逻辑 > 偶然
- 耦合(越低越好) :非直接 < 数据 < 标记 < 控制 < 外部 < 公共 < 内容
同步 vs 互斥
| 类型 | 本质 | 信号量初值 |
|---|---|---|
| 同步 | 有先后顺序 | 0,前驱V,后继P |
| 互斥 | 防止同时访问临界区 | 1,P进V出 |
数据库索引:B+树 vs 哈希
| 索引 | 等值 | 范围 | 排序 |
|---|---|---|---|
| B+树 | ✓ | ✓ | ✓ |
| 哈希 | O(1)最快 | ✗ | ✗ |
3.4 🟨 进程同步与互斥(PV操作框架)
互斥(临界资源)
信号量 mutex = 1;
P(mutex); // 进入临界区前
... 临界区 ...
V(mutex); // 退出临界区后
同步(前驱后继)
信号量 S = 0;
P1: ... 工作 ...; V(S); // 前驱完成后通知
P2: P(S); ... 工作 ...; // 后继等待
经典生产者-消费者
mutex = 1(互斥访问缓冲区)
empty = N(空位数)
full = 0(产品数)
生产者:
P(empty); P(mutex);
放产品到缓冲区;
V(mutex); V(full);
消费者:
P(full); P(mutex);
取产品;
V(mutex); V(empty);
⚠️ P操作顺序不能换:先P资源量再P互斥,否则可能死锁。
3.5 🟨 软件维护占比规律
| 维护类型 | 占比 |
|---|---|
| 完善性 | ~50%(最大) |
| 适应性 | ~25% |
| 改正性 | ~20% |
| 预防性 | ~5% |
3.6 🟨 McCabe环形复杂度计算
三种公式(结果一致) :
- V(G) = E - N + 2(边数-节点数+2)
- V(G) = P + 1(判定节点+1)
- V(G) = 区域数
复杂度评估:
- 1-10:简单
- 11-20:中等
- 21-50:复杂
-
50:不可测试
3.7 🟨 网络与协议
OSI vs TCP/IP
| OSI七层 | TCP/IP四层 | 主要协议 |
|---|---|---|
| 应用层 | 应用层 | HTTP、HTTPS、FTP、SMTP、DNS、Telnet |
| 表示层 | 应用层 | 加密、压缩 |
| 会话层 | 应用层 | RPC |
| 传输层 | 传输层 | TCP、UDP |
| 网络层 | 网络层 | IP、ICMP、ARP、RARP |
| 数据链路层 | 网络接口层 | 以太网、PPP |
| 物理层 | 网络接口层 | RJ45、光纤 |
TCP vs UDP
| 对比 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 可靠(确认+重传) | 不可靠 |
| 速度 | 慢 | 快 |
| 顺序 | 保证 | 不保证 |
| 应用 | HTTP、FTP、邮件 | DNS、视频流、游戏 |
常用端口
HTTP=80,HTTPS=443,FTP=21,SSH=22,DNS=53,SMTP=25,POP3=110,MySQL=3306,Redis=6379
3.8 🟨 嵌入式中断处理
中断三类
- 访管中断(要服务) :程序请求OS服务(系统调用)
- 外部中断(设备来) :外部设备信号
- 异常中断(程序错) :程序运行错误(除零、缺页)
双缓冲计算公式
单轮耗时 = max(T, M+C)
- T:磁盘传输时间
- M:缓冲区到用户区时间
- C:CPU处理时间
n块总耗时 ≈ n × max(T, M+C) + 末尾(M+C)
Part 4 补充缺失高频考点
这部分是原错题没覆盖但软考架构师高频出现的内容,补全你的知识盲区。
4.1 🆕 企业架构(TOGAF / Zachman)
TOGAF(开放组架构框架)
- ADM(架构开发方法) 是核心,循环迭代
- 包含:业务架构、应用架构、数据架构、技术架构
- ADM阶段:预备 → 架构愿景 → 业务架构 → 信息系统架构 → 技术架构 → 机会与解决方案 → 迁移规划 → 实施治理 → 架构变更管理
Zachman 框架
-
6×6矩阵:
- 行:执行者视角(规划者、所有者、设计者、构建者、分包商、运行系统)
- 列:6个维度(What/How/Where/Who/When/Why)
4.2 🆕 DDD(领域驱动设计)
核心概念
- 领域(Domain):业务问题空间
- 限界上下文(Bounded Context):领域模型适用边界
- 聚合根(Aggregate Root):聚合的入口对象
- 实体(Entity):有唯一标识的对象
- 值对象(Value Object):通过属性标识,不可变
- 领域服务(Domain Service):跨实体的业务逻辑
- 领域事件(Domain Event):领域中发生的重要事件
- 仓储(Repository):领域对象持久化
战术设计原则
- 一个聚合内强一致
- 跨聚合最终一致
- 通过聚合根访问聚合内对象
DDD与微服务关系
- 限界上下文 ≈ 微服务边界
- DDD是微服务拆分的方法论
4.3 🆕 CAP / BASE 理论
CAP 定理
分布式系统三个特性,只能三选二:
- Consistency 一致性:所有节点同时看到相同数据
- Availability 可用性:每个请求都能在有限时间内得到响应
- Partition tolerance 分区容错:网络分区时系统仍能工作
实际选择
- CP系统:ZooKeeper、HBase、Redis集群
- AP系统:Cassandra、CouchDB、Eureka
- 分布式系统中P不可避免,所以是 CP 或 AP
BASE 理论(CAP的妥协)
- Basically Available:基本可用
- Soft state:软状态(中间状态可以存在)
- Eventual consistency:最终一致
4.4 🆕 数据库锁深入
按粒度
- 全局锁:FLUSH TABLES WITH READ LOCK,全库只读
- 表级锁:开销小,并发低
- 行级锁:开销大,并发高
按使用方式
- 共享锁(S锁) :读锁,可并发读
- 排他锁(X锁) :写锁,独占
- 意向锁:表明在更细粒度上要加锁
死锁处理
- 预防:破坏四个条件之一
- 避免:银行家算法
- 检测:定期检测等待图
- 解除:撤销进程、回滚事务
4.5 🆕 软件成本估算
估算方法
- 专家判断法:Delphi(多专家匿名估算,重复直至收敛)
- 类推法:参考类似项目
- 算法模型法:COCOMO、功能点法
COCOMO II 模型阶段
- 应用组装模型:原型阶段,使用对象点
- 早期设计模型:架构阶段,使用功能点
- 后体系结构模型:详细设计阶段,使用代码行
功能点法(FP)
五类功能:外部输入、外部输出、外部查询、内部逻辑文件、外部接口文件
4.6 🆕 项目管理
关键路径法(CPM)
- 找到从开始到结束的最长路径
- 关键路径决定项目最短工期
- 计算公式见 2.17 案例计算题
风险管理过程
风险识别 → 风险分析 → 风险应对计划 → 风险监控
风险应对策略
- 回避:消除风险源
- 转移:买保险、外包
- 减轻:降低概率或影响
- 接受:承担风险
配置管理活动
配置项识别、版本控制、变更控制、配置审计、状态报告
4.7 🆕 编译过程
词法分析 → 语法分析 → 语义分析 → 中间代码生成 → 代码优化 → 目标代码生成
| 阶段 | 输入 | 输出 |
|---|---|---|
| 词法分析 | 字符流 | Token 流 |
| 语法分析 | Token流 | 语法树(AST) |
| 语义分析 | 语法树 | 注释语法树 |
| 中间代码 | 注释语法树 | 三地址码、四元式 |
- 前端:词法、语法、语义、中间代码(与机器无关)
- 后端:代码优化、目标代码(与机器有关)
4.8 🆕 数据结构与算法
时间复杂度
O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(n³) < O(2ⁿ)
排序算法
| 算法 | 平均 | 最坏 | 稳定 |
|---|---|---|---|
| 冒泡 | O(n²) | O(n²) | ✓ |
| 插入 | O(n²) | O(n²) | ✓ |
| 选择 | O(n²) | O(n²) | ✗ |
| 快速 | O(n log n) | O(n²) | ✗ |
| 归并 | O(n log n) | O(n log n) | ✓ |
| 堆排 | O(n log n) | O(n log n) | ✗ |
4.9 🆕 数据库索引深入
索引类型
- B+树索引(最常用):支持等值和范围
- 哈希索引:等值O(1),不支持范围
- 全文索引:文本搜索(MATCH AGAINST)
- 位图索引:低基数列
- 聚簇索引:决定数据物理顺序(一表只能一个)
- 覆盖索引:查询字段都在索引中,避免回表
联合索引最左前缀原则
索引(a,b,c) 等价于 (a)、(a,b)、(a,b,c),但不能跳过a直接用b。
4.10 🆕 知识产权细节
著作权
- 自完成自动获得,不需要登记
- 自然人作品保护期:终生 + 死后50年
- 单位作品保护期:发表后50年
职务作品
- 工作期间完成 → 单位
- 离职1年内开发的与原单位业务相关 → 仍归单位
专利
- 三性:新颖性、创造性、实用性
- 发明专利保护20年
- 实用新型/外观设计10年
专利许可类型
- 独占:仅被许可方能用(专利权人也不能用)
- 排他:仅专利权人 + 被许可方
- 普通:可多家被许可
商业秘密三要素
秘密性、价值性、保密性(只要保密就一直保护)
4.11 🆕 标准化
标准级别
国际 > 国家 > 行业 > 地方 > 企业
标准编号
- GB:国家强制标准
- GB/T:国家推荐标准
- HB:航空行业
- SJ:电子行业
- ISO:国际标准化组织
- IEC:国际电工委员会
- IEEE:电气电子工程师协会
4.12 🆕 系统转换策略
| 方式 | 说明 | 风险 |
|---|---|---|
| 直接转换 | 一刀切替换 | 风险最大 |
| 平行转换 | 新旧同时运行 | 成本最高,风险小 |
| 分段转换 | 逐步迁移 | 平衡 |
| 试点转换 | 局部试点后推广 | 中等 |
4.13 🆕 中间件分类
| 类型 | 作用 | 代表 |
|---|---|---|
| 数据库中间件 | 数据库访问 | ODBC、JDBC |
| 消息中间件 | 异步通信 | Kafka、RabbitMQ |
| 远程过程调用 | RPC | gRPC、Dubbo |
| 对象请求代理 | ORB | CORBA |
| 事务中间件 | 事务管理 | Tuxedo、JTA |
| 应用服务器 | Web应用容器 | Tomcat、WebLogic、JBoss |
4.14 🆕 SOA与Web Service
Web Service 三大标准
- SOAP:通信协议
- WSDL:服务描述语言
- UDDI:服务注册发现
REST 风格
基于HTTP,资源化,GET/POST/PUT/DELETE 对应 CRUD(查/增/改/删)。
REST 6大约束
- 客户端-服务器分离
- 无状态
- 缓存
- 统一接口
- 分层系统
- 按需代码(可选)
4.15 🆕 数据库范式补充:BCNF判断
BCNF判断:每个函数依赖的左部都必须包含候选码。
例:R(A,B,C,D),依赖:AB→C, C→D, D→A
- 候选码:{AB}, {BC}, {BD}
- 主属性:A, B, C, D(全是主属性)
- 检查 D→A:D不包含候选码 → 不是BCNF
- 是3NF(因为A是主属性,传递依赖被允许)
4.16 🆕 软件质量模型
McCall 模型
三大类11个特性:
- 产品运行:正确性、可靠性、效率、完整性、可用性
- 产品修订:可维护性、灵活性、可测试性
- 产品转移:可移植性、可重用性、互操作性
ISO/IEC 25010 模型
8大特性:功能适合性、性能效率、兼容性、易用性、可靠性、安全性、可维护性、可移植性
4.17 🆕 数据库事务隔离级别引发的问题
| 问题 | 含义 |
|---|---|
| 脏读 | 读到其他事务未提交的数据 |
| 不可重复读 | 同一事务内两次读取同一行结果不同(其他事务UPDATE) |
| 幻读 | 同一事务内两次查询行数不同(其他事务INSERT) |
| 丢失更新 | 两个事务并发更新,后写覆盖先写 |
4.18 🆕 嵌入式系统设计方法
- TLM(Transaction-Level Modeling):事务级建模
- PSM(Platform Specific Model):平台特定模型
- PIM(Platform Independent Model):平台无关模型
- MDA(Model Driven Architecture):模型驱动架构
Part 5 考前总清单
5.1 🟦 选择题速查清单(认得就行,不用背写)
考前扫一遍 Part 1,看到关键词能立刻反应到答案即可:
- 三级模式 / 两级映像
- 分布式数据库六层模式 + 四透明性
- ACID / CAP / BASE
- 数据库范式(1NF~BCNF)
- 死锁四条件
- 中断三类
- 内存管理四种方式
- 嵌入式RTOS特点
- CMMI五级 + RUP九工作流
- 软件维护四类(完善性最大)
- 设计模式23种分类
- 物联网三层 / 云计算三层
- OSI七层 / TCP/IP四层
- 常用端口
- RAID等级
- 知识产权要点
- 内聚耦合等级
- UML图分类
- 数据流图四要素
- McCabe复杂度公式
- 综合布线六子系统
5.2 🟥 案例题必背清单(要写在答卷上)
考前逐字背 Part 2,能默写以下框架:
- 软件架构定义(结构、行为、属性)
- 每种架构风格:特点 + 优缺点 + 适用场景
- 质量属性场景六要素:刺激源/刺激/环境/制品/响应/响应度量
- 六大质量属性(性能、可用性、安全性、可修改性、可测试性、易用性)的标准场景描述 + 战术
- ATAM 9步骤 / SAAM 5步骤
- 敏感点 / 权衡点 / 风险点 区别
- ABSD三大驱动 + 视角视图 + 用例/质量场景
- ABSDM 六过程:需设档审实演
- DSSA 三活动 + 三角色 + 三特性
- 微服务核心组件(注册发现、网关、熔断、限流、链路追踪)
- 服务治理三策略:熔断、降级、限流
- Web高并发优化七层组合拳:CDN→负载均衡→无状态→缓存→读写分离→分库分表→消息队列
- 缓存三大问题:穿透、击穿、雪崩 + 解决方案
- 分布式事务方案:TCC、SAGA、可靠消息最终一致
- 可靠性公式:串联R=R1×R2,并联R=1-(1-R1)(1-R2)
- 可用率公式:A = MTBF / (MTBF + MTTR)
- 阿姆达尔定律:S = 1 / [(1-P) + P/N]
5.3 🟨 理解记忆清单(看一眼有印象就行)
考前Part 3扫一遍,重点理解辨析关系:
- 微服务 vs SOA 对比
- 仓库 vs 黑板 区别
- V/W/H/X 测试模型
- 黑盒 vs 白盒测试方法
- 隔离级别 vs 并发问题(脏读/不可重复读/幻读)
- B+树 vs 哈希索引
- 同步 vs 互斥信号量
- 设计模式各模式的"场景关键词"
- 架构风格选型关键词对照
5.4 ⚠️ 常见易错点提醒
- 完善性维护占比最大(不是改正性)
- 互斥条件无法消除(4个死锁条件中只此一个)
- 微服务去中心化、SOA集中式(ESB是SOA标志)
- 黑板=仓库+知识源+推理(黑板比仓库多了推理引擎)
- 解释器属于虚拟机类架构(不是独立构件)
- 消息传递是抽象连接件,消息队列是实现手段
- 进程是资源分配单位,线程是CPU调度单位
- 栈指针SP是线程私有的(不是共享)
- 互斥信号量初值=1,同步信号量初值=0
- 2PC是提交协议,2PL是锁协议(别搞混)
- 离职1年内开发的与原单位业务相关 → 归原单位
- ATAM输出:风险点+敏感点+权衡点,不是直接给方案
- DSSA三角色:领域架构师/应用工程师/操作员(没有程序员)
- 质量场景四要素简版:刺激/环境/响应/响应度量
- ABSDM六过程:需求/设计/文档化/复审/实现/演化(别漏文档化)
- 范式判断:从1NF开始一路检查到BCNF
- CAP三选二,分布式中P不可避免
- 缓存击穿是单key过期,雪崩是大量key同时过期
- Cortex-M用FreeRTOS,Cortex-A用Linux
5.5 📝 案例题答题套路(应试技巧)
通用答题三段式
- 识别题干关键词 → 对应到知识库
- 结构化作答 → ① ② ③ 分点列写
- 结合需求 → 套用模板时结合题目具体场景,不要空谈理论
给分点关键词
案例题给分按关键词,写到关键词就给分:
- 架构风格类:风格名称 + 优缺点关键词
- 质量属性类:刺激/环境/响应/度量四要素
- 评估类:风险点/敏感点/权衡点
- 微服务类:注册发现/网关/熔断/限流/链路追踪
- 高并发类:CDN/负载均衡/缓存/读写分离/分库分表/消息队列
时间分配(下午案例 90 分钟,5 题选 3)
- 看题 5 分钟:哪 3 题最有把握
- 每题 25-28 分钟:先列要点再展开
- 检查 5 分钟
5.6 🎯 考试当天
装备清单
- 身份证
- 准考证
- 黑色签字笔(多带2支)
- 2B铅笔(涂卡)
- 橡皮
- 手表(机械/电子,不能智能表)
心态
- 选择题不会的先猜后看,绝不空着(猜也有25%命中)
- 案例题结构化写,能写多少写多少,关键词先写上
- 论文(如有)先列大纲再展开,带数字+具体技术
🌟 三天突击建议
Day 1(必做)
- 上午:Part 1 选择题区扫一遍(2-3小时)
- 下午:Part 2 案例题区前半部分(2.1架构定义、2.2架构风格、2.3质量属性场景)—— 反复背
- 晚上:Part 5.4 易错点 + 5.5 答题套路
Day 2(重点)
- 上午:Part 2 案例题区后半部分(2.4-2.10:ABSD/DSSA/微服务/Web高并发/数据库)
- 下午:Part 2 后半部分(2.11-2.17:嵌入式/安全/大数据/中间件/UML/计算)
- 晚上:Part 3 理解记忆区
Day 3(查漏补缺)
- 上午:Part 4 补充考点扫一遍
- 下午:再过一遍 Part 2 案例答题模板,模拟答一道题
- 晚上:Part 5 总清单 + 易错点回顾,早睡
祝考试顺利!稳住,你能行! 💪🎯