软考笔记

5 阅读1小时+

软考系统架构设计师 · 考前冲刺背诵手册(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/WSDLSOA集中式(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
用循环+引用位近似LRUClock

磁盘调度

题干描述选项
按请求到达顺序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、FreeRTOSCortex-M(M=MCU)
应用处理器,运行Linux、AndroidCortex-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/L3Cache
程序运行时存放数据指令,易失主存(内存)
长期保存、容量大、速度最慢、非易失(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服务器,微软ASPVB等

1.33 🟦 CORBA构件模型【题干→选哪个】

题干描述选项
衔接底层传输平台与服务实现的核心协调组件POA(可移植对象适配器)
最终完成客户请求、提供具体服务逻辑实现Servant(伺服对象)⭐

1.34 🟦 软件失配类型【题干→选哪个】

架构集成时常见问题:构件失配 + 连接子失配


1.35 🟦 物联网三层【题干→选哪个】

感知层 → 网络层(传输层)→ 应用层

题干描述选项关键技术
信息采集(传感器、RFID)感知层传感器、RFID、二维码
数据传输网络层4G/5G、WiFi、ZigBee、蓝牙
业务应用应用层智能家居、智慧城市、车联网

1.36 🟦 区块链分类【题干→选哪个】

公有链、私有链、联盟链

题干描述选项
完全开放,任何人可参与(如比特币)公有链
单一组织内部使用私有链
多个机构联合参与(如银行间)联盟链

1.37 🟦 云计算服务【题干→选哪个】

题干描述选项例子
应用层,软件即服务SaaSOffice 365、钉钉
平台层,平台即服务(开发运行环境)PaaS阿里云ACK、AWS Beanstalk
基础设施层,虚拟机/存储IaaSEC2、阿里云ECS
数据即服务DaaS数据交换平台
函数即服务(Serverless)FaaSAWS 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 🟦 常用端口【题干→选哪个】

服务端口
HTTP80
HTTPS443
FTP20/21
SSH22
Telnet23
SMTP25
POP3110
DNS53
MySQL3306
Redis6379

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 + DoCommit3PC

陷阱题

  • "扩展阶段、收缩阶段"→ 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)

关注:系统响应能力

标准场景

  • 刺激源:外部用户/系统
  • 刺激:到达请求(周期性/随机/突发)
  • 环境:正常运行/过载/降级模式
  • 制品:系统服务
  • 响应:系统处理请求/改变服务级别
  • 度量响应时间、吞吐量、延迟、抖动、缺失率

性能战术(要会答)

  1. 资源需求控制

    • 减少计算开销(提高算法效率)
    • 管理事件率(限流)
    • 控制采样频率
  2. 资源管理

    • 增加资源(升级硬件)
    • 引入并发(多线程、多进程)
    • 数据缓存(Redis/Memcached)
    • 数据复制(主从复制)
  3. 资源仲裁

    • 调度策略(FIFO、优先级、SJF)

典型场景例

"在峰值并发1000用户的环境下,用户提交订单请求,系统在500ms内完成处理并返回响应。"

  • 刺激源:用户
  • 刺激:提交订单请求
  • 环境:峰值并发1000用户
  • 制品:订单服务
  • 响应:处理订单
  • 度量:500ms内完成

🔴 可用性(Availability)

关注:系统可正常使用的程度

标准场景

  • 刺激源:内部/外部
  • 刺激:故障(崩溃、错误响应、错误时序)
  • 环境:正常/降级模式
  • 制品:系统/服务/数据
  • 响应:检测错误、恢复、预防
  • 度量MTBF、MTTR、可用率%、故障恢复时间、停机时间

可用性战术

  1. 错误检测

    • Ping/Echo(心跳)
    • 异常捕获
    • 看门狗(Watchdog)
    • 超时机制
  2. 错误恢复

    • 冗余备份(主备、双活)
    • 状态再同步
    • 回滚事务
    • 检查点机制
    • 选举新主节点
  3. 错误预防

    • 从服务中移除可能出错的组件
    • 事务保证一致性
    • 进程监视器

典型场景例

"在数据库主节点发生宕机时,系统在30秒内自动切换到备节点并恢复服务,月度可用率达到99.99%。"


🔴 安全性(Security)

关注:抵抗未授权访问的能力

标准场景

  • 刺激源:攻击者(已识别/未识别)
  • 刺激:尝试显示数据/修改数据/访问系统服务/拒绝服务
  • 环境:在线/离线、连接/未连接
  • 制品:系统服务/数据
  • 响应:抵抗、检测、恢复
  • 度量抵御时间、攻击恢复时间、攻击影响范围

安全战术

  1. 抵抗攻击

    • 认证(用户身份验证)
    • 授权(权限控制)
    • 加密(数据/通信加密)
    • 维护数据完整性(哈希/签名)
    • 限制暴露(最小特权)
    • 限制访问(防火墙)
  2. 检测攻击

    • 入侵检测系统(IDS)
  3. 从攻击中恢复

    • 审计跟踪
    • 数据备份
    • 系统恢复

典型场景例

"未授权用户尝试访问用户隐私数据时,系统在认证环节拦截,并在5秒内记录审计日志,攻击成功概率低于0.01%。"


🔴 可修改性(Modifiability)

关注:变更的成本

标准场景

  • 刺激源:开发者/系统管理员/最终用户
  • 刺激:增加/删除/修改功能、改变质量属性
  • 环境:设计时/编译时/运行时/构建时
  • 制品:系统组件、用户界面、平台
  • 响应:完成修改、测试、部署
  • 度量修改的成本(人月/工时)、修改时间、修改影响范围

可修改性战术

  1. 局部化修改

    • 维护语义一致性(高内聚)
    • 预测预期变更(变化点设计)
    • 泛化模块(参数化)
    • 限制可能选项
  2. 防止连锁反应

    • 信息隐蔽
    • 维护现有接口
    • 限制通信路径
    • 使用中介(中介者模式)
  3. 延迟绑定时间

    • 运行时注册
    • 配置文件
    • 多态

典型场景例

"新增一种支付方式(如数字货币),不影响现有功能,工作量在5人天以内。"


🔴 可测试性(Testability)

关注:通过测试暴露缺陷的容易程度

标准场景

  • 刺激源:单元开发者/集成测试者/系统验证者
  • 刺激:完成增量开发、完成系统集成
  • 环境:开发/集成/部署阶段
  • 制品:组件/系统
  • 响应:执行测试套件并捕获输出
  • 度量测试覆盖率、测试时间、缺陷发现数

可测试性战术

  1. 输入输出控制

    • 接口/实现分离
    • 专用访问路径
    • 测试桩/Mock
  2. 内部监控

    • 内置监视器
    • 日志输出

典型场景例

"开发者完成一个模块开发后,单元测试覆盖率达到80%以上,回归测试在1小时内完成。"


🔴 易用性(Usability)

关注:用户使用系统的容易程度

标准场景

  • 刺激源:最终用户
  • 刺激:希望学习/有效使用系统/最小化错误影响/适应/感受满意
  • 环境:运行时/配置时
  • 制品:系统
  • 响应:系统提供帮助、撤销、可定制性
  • 度量学习时间、任务完成时间、错误数、满意度

易用性战术

  1. 运行时

    • 维护用户模型(记住用户偏好)
    • 维护系统模型(系统状态可见)
    • 维护任务模型(理解用户意图)
  2. 设计时

    • 界面与功能分离
  3. 支持用户主动性

    • 取消、撤销
    • 聚合操作
    • 显示进度

典型场景例

"新用户首次使用系统时,能在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 输出

  1. 架构方法/风格集合
  2. 质量属性效用树
  3. 风险点、敏感点、权衡点
  4. 通过的质量需求与未通过的质量需求

SAAM(场景分析法)

全称:Scenarios-based Architecture Analysis Method

目标:通过场景评估架构是否满足质量需求,比较多个候选架构的优劣。

SAAM 5步骤

  1. 特征化场景:收集典型使用、增长、探索性场景
  2. 描述架构:用通用方式描述架构(构件+连接件)
  3. 场景分类:分为直接场景(架构直接支持)和间接场景(需要修改)
  4. 场景评估:评估每个间接场景的修改成本
  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 关键要素(背!)

  1. 三大驱动:商业需求 + 质量需求 + 功能需求

  2. 描述手段:视角(Viewpoint)与视图(View)

  3. 需求捕获

    • 功能需求 → 用例(Use Case)
    • 质量需求 → 质量属性场景(Quality Scenarios)
  4. 设计流程:自顶向下、递归细化

  5. 设计目标:生成可支撑开发的构件/模块

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 🟥 软件复用与构件

软件复用层次(从低到高)

  1. 代码复用(最低)
  2. 设计复用
  3. 分析复用
  4. 测试信息复用

软件复用的内容

需求分析文档、设计文档、程序代码、测试用例、领域知识

软件复用类型

  • 机会复用:开发完成后发现可复用,临时整合
  • 系统复用:从一开始就计划好的有组织的复用

软件复用三阶段

  1. 获取可复用资产:识别、评估、获取(自主开发、购买、开源)
  2. 管理可复用资产:分类、存储、版本控制、文档化
  3. 使用可复用资产:在新项目中集成和适配

构件五种形态

独立而成熟、有限制、适应性、装配、可修改

构件四大特征

独立部署性、封装性、复用性、唯一性

构件组装方式(案例可能考)🆕

方式说明
黑盒组装不需要修改构件内部,仅通过接口集成
白盒组装需要修改构件源代码
灰盒组装介于两者之间,部分扩展

构件组装步骤

定制 → 集成 → 扩展

答题范文:构件复用方案

在本系统中,可采用以下构件复用策略: ① 构件库建设:建立公司级构件库,对支付、登录、消息等通用功能进行构件化封装,便于多项目复用。 ② 复用形式:以黑盒组装为主,通过定义清晰的构件接口(API)进行集成,避免修改构件内部实现,降低耦合。 ③ 复用流程:遵循"获取→管理→使用"三阶段,由专门团队维护构件库,开发团队按需引用。 ④ DSSA思想:针对核心业务域(如电商域),抽象领域模型与参考架构,形成领域特定复用资产,加速新业务系统开发。


2.8 🟥 微服务架构(案例高频)

微服务核心特征(背!)

  1. 服务自治:每个服务独立部署、独立技术栈
  2. 去中心化数据管理:每个服务有专属数据库
  3. 基础设施自动化:CI/CD、自动部署
  4. 故障容忍设计:熔断、降级、限流
  5. 轻量通信:HTTP/REST、RPC
  6. 业务能力组织:按业务领域划分服务

微服务核心组件(案例必背)

组件作用代表产品
服务注册发现服务动态定位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属性不可再分复合属性
2NF1NF + 消除非主属性对码的部分函数依赖部分依赖
3NF2NF + 消除非主属性对码的传递函数依赖传递依赖
BCNF3NF + 消除主属性对码的部分和传递依赖主属性内部依赖
4NFBCNF + 消除多值依赖多值依赖

判断范式步骤

  1. 找候选码
  2. 看每个非主属性是否完全依赖于码(否 → 1NF)
  3. 看是否有传递依赖(有 → 2NF)
  4. 看主属性内部是否有依赖(有 → 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取模/范围/一致性哈希)
NewSQLTiDB、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 + 外设)]

嵌入式系统四大特点

  1. 专用性:为特定应用定制
  2. 资源受限:CPU、内存、功耗有限
  3. 实时性:满足时序约束
  4. 可裁剪:根据需求裁剪OS和功能

BSP(板级支持包)作用

  • 衔接特定硬件平台和特定操作系统
  • 硬件有关性:适配硬件
  • OS有关性:与目标OS内核接口一致
  • 主要功能:硬件初始化、设备驱动、硬件中断处理

嵌入式RTOS核心能力

  • 实时性(确定性、及时性)
  • 可裁剪、可配置
  • 优先级抢占调度
  • 任务间同步与通信(信号量、消息队列、邮箱、事件标志)
  • 资源占用小

嵌入式调度算法

算法类型优先级规则
RMS(速率单调)静态周期短的优先级高
EDF(最早截止期优先)动态截止期近的优先
DM(截止期单调)静态截止期短的优先级高

RMS可调度判定:n个任务,CPU利用率 ≤ n×(2^(1/n) - 1) 时一定可调度。

EDF:单处理器最优算法,利用率达100%仍可调度。

嵌入式低功耗设计三大策略

  1. 编译优化技术:减少指令执行
  2. 软硬件协同设计:硬件辅助降功耗
  3. 算法优化:选择低复杂度算法

嵌入式中间件🆕

  • 提供应用与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+扩展)

  1. 机密性(Confidentiality):未授权不能访问
  2. 完整性(Integrity):数据不被篡改
  3. 可用性(Availability):合法用户可正常使用
  4. 不可抵赖性(Non-repudiation):操作不能否认
  5. 可控性(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(跨站脚本)注入JSHTML转义、CSP内容安全策略
CSRF(跨站请求伪造)借用用户身份Token、Referer校验、SameSite Cookie
DDoS(分布式拒绝服务)大流量打挂服务器流量清洗、CDN、WAF、限流
中间人攻击(MITM)拦截通信HTTPS、证书校验
暴力破解穷举密码验证码、账号锁定、密码强度
会话劫持窃取SessionIDHTTPS、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、GreenplumHDFS、对象存储

数据中台🆕

定义:将企业数据资产化、标准化、服务化的中间平台。

核心能力

  • 数据资产管理
  • 数据服务(OneService)
  • 标签体系(OneID)
  • 数据建模(OneModel)

2.14 🟥 消息中间件(案例考点)

主流消息中间件对比(背!)

中间件特点吞吐量适用场景
Kafka高吞吐、分布式日志、持久化极高(百万级/s)大数据日志、事件驱动
RabbitMQAMQP、灵活路由、可靠中(万级/s)业务异步、解耦
RocketMQ阿里、支持事务消息、顺序消息高(十万级/s)电商、金融
ActiveMQJMS标准、稳定较低传统企业
Pulsar计算存储分离云原生

消息中间件四大作用

  1. 异步处理:耗时操作异步化
  2. 应用解耦:服务间解耦,独立演进
  3. 流量削峰:缓冲突发流量
  4. 最终一致:分布式事务方案

消息可靠性问题

问题解决方案
消息丢失持久化 + 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 三大原则

  1. 流动:代码从开发→测试→生产快速流动
  2. 反馈:快速反馈机制(监控、告警)
  3. 持续学习:实验文化、复盘改进

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】序列图(借书流程) : 读者 → 系统 → 数据库 → 系统 → 读者

  1. 读者扫码图书
  2. 系统验证借阅资格
  3. 数据库更新借阅记录
  4. 系统返回借阅成功

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,求系统可靠性。

  1. A、B串联:R(AB) = 0.9 × 0.9 = 0.81
  2. (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、SOAPSOA
互联网大规模、独立部署、敏捷迭代微服务
共享数据中央仓库 + 知识源推理黑板(=仓库+推理)
构件靠消息、层次化、并行C2
处理流程固定、需求稳定、批量处理批处理
主从控制、主控+从节点主从
浏览器访问、HTTP、跨平台B/S
客户端响应快、专用客户端C/S

3.2 🟨 设计模式速查(看场景选模式)

创建型场景识别

场景描述模式
不确定具体类型,工厂决定工厂方法
创建一族相关产品(一个工厂多个产品)抽象工厂
全局唯一(如配置管理器、连接池)单例
复杂对象分步构建(同一过程产出不同对象)建造者
通过克隆已有对象创建(避免重复初始化)原型

结构型场景识别

场景描述模式
接口不兼容,接口转换适配器
动态扩展功能,不影响其他对象装饰器
控制对其他对象的访问(远程、虚拟、保护)代理
简化复杂子系统的统一接口外观
抽象与实现分离(两个维度独立变化)桥接
树形结构,叶子和组合统一处理组合
共享细粒度对象,节省内存享元

行为型场景识别

场景描述模式
多种算法可互换策略
固定算法骨架,子类实现细节模板方法
一对多依赖,状态变化通知观察者
顺序访问聚合对象迭代器
请求沿链传递直到被处理责任链
请求封装为对象(支持撤销/记录)命令
保存/恢复对象状态备忘录
行为随状态改变状态
操作与数据结构解耦访问者
集中处理对象间复杂通信中介者
解释特定语言/表达式解释器

3.3 🟨 易混对比

微服务 vs SOA

维度微服务SOA
治理去中心化集中式(ESB)
数据每服务独立DB共享DB常见
通信轻量HTTP/RESTSOAP(重)
部署独立部署整体部署
技术栈自由选择统一约束
粒度细粒度粗粒度
适合互联网、快速迭代大型企业集成

C/S vs B/S

对比C/SB/S
客户端专用客户端浏览器
部署客户端要安装零安装
升级客户端逐个升级服务端统一升级
跨平台
性能受网络限制
安全性较高较低

仓库 vs 黑板

维度仓库黑板
构成中央数据 + 独立构件黑板 + 知识源 + 推理引擎
求解过程确定不确定(启发式)
触发方式主动读写数据驱动触发知识源
适用数据库、IDEAI、语音识别

RTOS vs 分时操作系统

维度RTOS分时OS
调度核心确定性、及时性公平性
抢占优先级抢占时间片轮转
任务实时任务普通任务
例子μC/OS、FreeRTOS、VxWorksLinux、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

对比TCPUDP
连接面向连接(三次握手)无连接
可靠性可靠(确认+重传)不可靠
速度
顺序保证不保证
应用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不可避免,所以是 CPAP

BASE 理论(CAP的妥协)

  • Basically Available:基本可用
  • Soft state:软状态(中间状态可以存在)
  • Eventual consistency:最终一致

4.4 🆕 数据库锁深入

按粒度

  • 全局锁:FLUSH TABLES WITH READ LOCK,全库只读
  • 表级锁:开销小,并发低
  • 行级锁:开销大,并发高

按使用方式

  • 共享锁(S锁) :读锁,可并发读
  • 排他锁(X锁) :写锁,独占
  • 意向锁:表明在更细粒度上要加锁

死锁处理

  • 预防:破坏四个条件之一
  • 避免:银行家算法
  • 检测:定期检测等待图
  • 解除:撤销进程、回滚事务

4.5 🆕 软件成本估算

估算方法

  • 专家判断法:Delphi(多专家匿名估算,重复直至收敛)
  • 类推法:参考类似项目
  • 算法模型法:COCOMO、功能点法

COCOMO II 模型阶段

  1. 应用组装模型:原型阶段,使用对象点
  2. 早期设计模型:架构阶段,使用功能点
  3. 后体系结构模型:详细设计阶段,使用代码行

功能点法(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
远程过程调用RPCgRPC、Dubbo
对象请求代理ORBCORBA
事务中间件事务管理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大约束

  1. 客户端-服务器分离
  2. 无状态
  3. 缓存
  4. 统一接口
  5. 分层系统
  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 ⚠️ 常见易错点提醒

  1. 完善性维护占比最大(不是改正性)
  2. 互斥条件无法消除(4个死锁条件中只此一个)
  3. 微服务去中心化、SOA集中式(ESB是SOA标志)
  4. 黑板=仓库+知识源+推理(黑板比仓库多了推理引擎)
  5. 解释器属于虚拟机类架构(不是独立构件)
  6. 消息传递是抽象连接件,消息队列是实现手段
  7. 进程是资源分配单位,线程是CPU调度单位
  8. 栈指针SP是线程私有的(不是共享)
  9. 互斥信号量初值=1,同步信号量初值=0
  10. 2PC是提交协议,2PL是锁协议(别搞混)
  11. 离职1年内开发的与原单位业务相关 → 归原单位
  12. ATAM输出:风险点+敏感点+权衡点,不是直接给方案
  13. DSSA三角色:领域架构师/应用工程师/操作员(没有程序员
  14. 质量场景四要素简版:刺激/环境/响应/响应度量
  15. ABSDM六过程:需求/设计/文档化/复审/实现/演化(别漏文档化
  16. 范式判断:从1NF开始一路检查到BCNF
  17. CAP三选二,分布式中P不可避免
  18. 缓存击穿是单key过期,雪崩是大量key同时过期
  19. Cortex-M用FreeRTOS,Cortex-A用Linux

5.5 📝 案例题答题套路(应试技巧)

通用答题三段式

  1. 识别题干关键词 → 对应到知识库
  2. 结构化作答 → ① ② ③ 分点列写
  3. 结合需求 → 套用模板时结合题目具体场景,不要空谈理论

给分点关键词

案例题给分按关键词,写到关键词就给分

  • 架构风格类:风格名称 + 优缺点关键词
  • 质量属性类:刺激/环境/响应/度量四要素
  • 评估类:风险点/敏感点/权衡点
  • 微服务类:注册发现/网关/熔断/限流/链路追踪
  • 高并发类: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 总清单 + 易错点回顾,早睡

祝考试顺利!稳住,你能行! 💪🎯