mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1300 字
4 分钟
软考中级软件设计师 · 知识点速查表
2026-05-19

软考中级软件设计师 · 知识点速查表#



📌 面向对象#

1. UML用例图关系#

✅ 包含、扩展、泛化对比#

维度包含(Include)扩展(Extend)泛化(Generalization)
本质强制依赖(必须调用)条件增强(可选触发)继承关系(is-a)
箭头方向基础→被包含扩展→基础子→父
触发条件无条件特定条件无(自动继承)
独立性基础用例依赖被包含用例基础用例可独立存在子类依赖父类,父类可独立
复用目的提取公共功能分离可变行为抽象共性,特化个性
典型场景日志记录、权限验证优惠券使用、增值服务多种支付方式、用户类型

记忆口诀:

Include 必须有(公共功能)
Extend 可以有(可选增强)
Generalization 是一种(继承关系)

📌 操作系统#

1. 索引结点管理模式#

✅ 核心公式#

项目公式
索引块地址数地址数 = 物理块大小 ÷ 地址项大小
直接地址容量直接块数 × 块大小
一级间接容量一级索引项数 × (块大小/地址项大小) × 块大小
二级间接容量二级索引项数 × (块大小/地址项大小)² × 块大小
三级间接容量三级索引项数 × (块大小/地址项大小)³ × 块大小

解题步骤:

  1. 计算每个索引块能存放的地址数
  2. 划分逻辑块号范围
  3. 定位逻辑块号位置
  4. 计算最大文件大小

注意陷阱:

  • 逻辑块号从0开始
  • 计算文件大小只算数据块,不算索引块
  • 注意单位换算:1KB = 1024B

📌 数据结构#

1. 图#

✅ 有向完全图的边数#

无向完全图:n(n-1)/2 条边
有向完全图:n(n-1) 条边(有向 = 无向 × 2)

记忆: 有向完全图每个顶点都能指向其他所有顶点,每个顶点出度 = n-1,所有顶点出度之和 = n(n-1)


✅ Prim vs Kruskal(最小生成树)#

对比项Prim 算法Kruskal 算法
策略,从已选点中选最短边,从全局选最短边
适用密图(边多,顶点少)疏图(边少,顶点密)
时间复杂度O(n²)O(eloge)(e为边数)
判环不需要需要并查集判环

记忆口诀:

Prim 选点(就近扩展)→ 密图 O(n²)
Kruskal 选边(最短优先)→ 疏图 O(eloge)

✅ 邻接矩阵非零元素个数#

有向图:非零元素 = E(边数)
无向图:非零元素 = 2E(矩阵对称)

2. 树#

✅ 树中叶子结点个数计算#

核心公式:
n(总结点数)= 分支数 + 1
分支数 = Σ 各结点度数之和
度:结点的子树个数
叶子结点:度为0的结点
解题步骤:
1. 已知总结点数 n 和各结点度数之和 → 求分支数 → 求叶子数
2. 分支数 = n - 1(树中除了根结点每个结点都有一条边进入)

举例: 一棵树有 n1个度为1的结点,n2个度为2的结点,…,nm个度为m的结点,叶子数为 n0:

总度数 = 1×n1 + 2×n2 + ... + m×nm = 分支数 = n - 1
总结点 n = n0 + n1 + n2 + ... + nm
→ n0 = 1 + Σ(k-1)×nk

3. 数组#

✅ 二维数组地址计算#

存储方式公式
行优先(C语言)LOC(i,j) = LOC(0,0) + (i×m + j) × L
列优先(Fortran)LOC(i,j) = LOC(0,0) + (j×n + i) × L

m = 列数,n = 行数,L = 每个元素占用的存储单元数

注意: 下标从0开始还是从1开始:

  • 从0开始:偏移量 = i×m + j
  • 从1开始:偏移量 = (i-1)×m + (j-1)

4. 栈#

✅ 表达式求值栈深度#

方法: 中缀表达式 → 后缀表达式(逆波兰)→ 模拟栈求值

  • 第一个运算符出现时,栈中操作数的个数 = 栈所需最小容量
  • 关键: 求值过程中栈的最大深度就是所需容量

📌 算法设计#

1. 查找#

✅ 折半查找(二分查找)ASL#

成功查找 ASL:

ASL成功 = (各层结点数 × 该层层数) / 元素总数
树高:⌊log₂n⌋ + 1
第1层:1个结点,比较1次
第2层:2个结点,比较2次
第3层:4个结点,比较3次
...

失败查找 ASL:

ASL失败 = Σ(外部结点比较次数)/(n+1)
外部结点 = 叶子结点(查找失败的位置)= n + 1 个

举例: 有序数组 10个元素,折半查找树:

  • 成功 ASL = 29/10 ≈ 2.9
  • 失败 ASL = 39/11 ≈ 3.5

✅ 分块查找 ASL#

公式:

ASL = (m+1)/2 + (n/m+1)/2

m = 块数,n = 总元素数 每块内用顺序查找

最优块数: m ≈ √n,此时 ASL ≈ √n


2. 算法策略#

✅ 分治法三步骤#

分:将问题划分为若干子问题
治:递归求解各子问题
合:将子问题的解合并为原问题的解

关键理解:

  • 合并时只需检查有限范围(不是全部枚举)
  • 典型应用:二分搜索、归并排序、快速排序

📌 软件工程#

1. 度量#

✅ McCabe圈复杂度(程序复杂度)#

三种算法,结果相同,可互相验证:

方法公式适用场景
边结点公式V(G) = E - N + 2有流程图
判定结点法V(G) = P + 1 ⭐最快有代码/伪代码
封闭区域法V(G) = 封闭区域数 + 1有流程图

E = 边数,N = 结点数,P = 判定结点数(if/while/for/switch等)

判定结点规则:

if → 1个判定结点
while/for → 1个判定结点
switch(n个case) → n-1 个判定结点
A && B 复合条件 → 2个判定结点
A || B 复合条件 → 2个判定结点

举例:

if (A > 0) // 1个判定
while (B < 10) // 1个判定
if (C && D) // 2个判定
P = 4V(G) = 5

2. 分析#

✅ 结构化分析建模方法#

建模工具建模对象核心元素
DFD(数据流图)功能建模加工、数据流、数据存储、外部实体
E-R图数据建模实体、属性、联系
STD(状态转换图)行为建模状态、事件、转换

记忆口诀:

DFD 管功能(数据怎么流)
E-R 管数据(实体什么关系)
STD 管行为(状态怎么变)

📌 数据库#

1. 事务#

✅ 日志文件与故障恢复#

日志文件记录内容:

- 事务开始(BEGIN TRANSACTION)
- 事务结束(COMMIT / ROLLBACK)
- 对数据库的每次操作(INSERT/DELETE/UPDATE)

故障恢复三种策略:

故障类型恢复策略日志操作
事务故障UNDO(撤销)反向扫描日志,撤销该事务所有操作
系统故障UNDO + REDO撤销未完成事务,重做已提交事务
介质故障备份 + 日志先恢复数据库备份,再用日志REDO

核心原则:

WAL(Write-Ahead Logging,先写日志原则):
任何对数据库的修改,必须先写日志记录,再修改数据库
Checkpoint(检查点):
定期将缓冲区内容写入数据文件,缩短恢复时需要扫描的日志范围

记忆口诀:

日志先写后操作(WAL)
事务故障只撤销(UNDO)
系统故障撤加重(UNDO+REDO)
介质故障备份+日志

整理自软考中级软件设计师错题本 · 持续更新中

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

软考中级软件设计师 · 知识点速查表
https://www.rumin.top/posts/软考中级软件设计师知识点速查表/
作者
Rumin
发布于
2026-05-19
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00