☰
软考中级软件设计师考点速查笔记:面向对象、数据结构与算法核心整理
2026/10/15 4:12:11 网站建设 项目流程

简介:这份《软件设计师中级考试知识点整理》面向备考软考中级软件设计师的考生,聚焦考试高频考点,帮助梳理面向对象设计、UML建模与数据结构等核心模块,适合需要系统复习或查漏补缺的应试者。资源包内含1个docx文档,压缩包约31.83MB,内容以笔记形式组织,涵盖面向对象基本概念、七大设计原则、创建型与行为型模式分类、UML关系图解,以及树与二叉树、查找二叉树、平衡二叉树、特殊树和各类排序算法及其情景对比等章节,目录层次清晰,便于按知识点逐项查阅。目前已有892人学习下载,可作为考前速记与专题强化的参考材料,帮助读者快速定位薄弱环节,建立从概念到模式再到算法分析的完整知识框架。

1. 软考中级软件设计师笔记:一份能直接背的考点地图

翻开这份《软件设计师中级考试知识点整理.docx》,第一反应是目录长得离谱——从面向对象 7 大原则一路铺到数据库三级模式,几乎把上午题和下午题会碰到的概念全扫了一遍。它不是教材,也不是题库,而是一份按考点密度重新编排的速查笔记:面向对象设计、UML 关系、树与二叉树、排序算法对比、线性表、算法基础、软件开发模型、需求分析、软件测试、模块设计、系统设计、软件工程、计算机组成、项目管理、数据流图、信息安全、计算机网络、数据库系统,每一块都标了页码,翻起来像查字典。适合谁?适合已经过了一遍教材、但知识点还是散的考生,也适合二战想快速定位薄弱章节的人。软考中级软件设计师的上午题考广度,下午题考数据流图和 UML 的落地能力,这份笔记的价值就在于把散落的概念按考试频率重新排了序。

2. 面向对象与 UML:7 大原则和关系图怎么记不混

2.1 7 大原则的记忆锚点

面向对象设计 7 大原则是上午题的高频区,但很多人背了忘、忘了背,核心问题是没把原则和具体场景挂钩。笔记里列的是单一职责、开闭、李氏替换、依赖倒置、接口隔离、迪米特、合成复用。我一般会按“改一个类会不会牵连别人”这条线串起来:单一职责管的是类本身别太胖,开闭管的是改需求时别动老代码,李氏替换管的是子类别把父类的契约搞坏,依赖倒置管的是别直接 new 具体类,接口隔离管的是别逼实现类写空方法,迪米特管的是别跟陌生人说话,合成复用管的是别为了复用硬继承。

提示:李氏替换原则在真题里常和“子类重写父类方法后行为不一致”一起考,看到“正方形继承矩形”这种例子,先想李氏替换。

2.2 UML 关系与图的对应

UML 关系分依赖、关联、聚合、组合、泛化、实现,笔记里把 UML 关系和 UML 图分开列,这个编排是对的。类图里最常考的是聚合和组合的区别:聚合是空心菱形,整体和部分可以独立存在;组合是实心菱形,部分不能脱离整体。泛化就是继承,实现就是接口落地。用例图考的是参与者和用例之间的关联,活动图考的是并发路径,状态机图考的是事件驱动的状态迁移。

聚合:A ◇—— B (B 可以独立于 A 存在) 组合:A ◆—— B (B 的生命周期由 A 控制) 泛化:子类 ——▷ 父类 实现:类 ——▷ 接口(虚线)

上面这段不是代码,是画图时的符号速记。参数说明:空心菱形画在整体那一端,实心菱形也画在整体那一端,箭头方向别搞反。常见翻车点是组合和聚合的菱形画反,或者把泛化的实线空心三角画成虚线。

2.3 设计模式的分类速判

创建型模式管对象怎么生,结构型模式管对象怎么拼,行为型模式管对象怎么聊。笔记里创建型列了工厂、抽象工厂、builder,行为型列了策略、状态、观察者。上午题常考“以下哪个是创建型模式”,选项里混入适配器、桥接这种结构型。速判方法:看名字里有没有“工厂”“builder”“原型”“单例”,有就是创建型;看名字里有没有“适配器”“桥接”“组合”“装饰”“外观”“享元”“代理”,有就是结构型;剩下的策略、状态、观察者、命令、职责链、中介者、迭代器、访问者、备忘录、解释器、模板方法,全是行为型。

3. 数据结构与算法:树、排序、查找的考场速算

3.1 二叉树的三个必背特性

笔记里二叉树的重要特性写了一条“左子树和右子树的高度不能超过1”,这其实是平衡二叉树的定义,不是普通二叉树的特性。普通二叉树的核心特性是:第 i 层最多有 2^(i-1) 个节点,深度为 k 的二叉树最多有 2^k - 1 个节点,叶子节点数等于度为 2 的节点数加 1。查找二叉树(二叉排序树)的中序遍历是有序序列,这个性质在上午题里反复出现。

普通二叉树:第 i 层最多 2^(i-1) 个节点 满二叉树:深度 k,节点数 2^k - 1 完全二叉树:节点按层序编号,编号 i 的左孩子是 2i,右孩子是 2i+1 查找二叉树:中序遍历得到升序序列 平衡二叉树:左右子树高度差不超过 1

参数说明:完全二叉树的编号从 1 开始,如果从 0 开始,左孩子是 2i+1,右孩子是 2i+2。这个细节在真题里考过,别记混。

3.2 排序算法的情景对比

笔记里有一张“各种排序算法对比”和“排序算法的情景对比”,这是上午题的送分点也是丢分点。送分是因为考来考去就那几个结论,丢分是因为容易把时间复杂度和稳定性记反。我一般按“数据规模小用什么、数据基本有序用什么、要求稳定用什么”三条线记。

算法平均时间复杂度最坏时间复杂度空间复杂度稳定性
直接插入O(n²)O(n²)O(1)稳定
希尔排序O(n^1.3)O(n²)O(1)不稳定
冒泡排序O(n²)O(n²)O(1)稳定
快速排序O(nlogn)O(n²)O(logn)不稳定
简单选择O(n²)O(n²)O(1)不稳定
堆排序O(nlogn)O(nlogn)O(1)不稳定
归并排序O(nlogn)O(nlogn)O(n)稳定

情景对比的结论:数据基本有序时,直接插入和冒泡最快;数据量大且要求稳定,归并排序;数据量大但不要求稳定,快速排序或堆排序;空间紧张选堆排序。快速排序的最坏情况出现在每次划分只分出一个元素时,也就是原序列已经有序或逆序。

3.3 算法基础的四种套路

笔记里把分治法、回溯法、贪心法、动态规划法并列,这个分类对应下午题的算法设计题。分治法的标志是“把问题拆成子问题,子问题独立求解后合并”,二分查找和归并排序都是分治。回溯法的标志是“走不通就退回来”,迷宫问题和 N 皇后是典型。贪心法的标志是“每一步都选当前最优”,但贪心不一定得到全局最优,除非问题满足贪心选择性质。动态规划法的标志是“子问题重叠,用表记录中间结果”,背包问题是典型。

# 分治法——二分查找的递归实现 def binary_search(arr, low, high, target): if low > high: return -1 mid = (low + high) // 2 if arr[mid] == target: return mid elif arr[mid] < target: return binary_search(arr, mid + 1, high, target) else: return binary_search(arr, low, mid - 1, target)

逻辑说明:每次把查找区间缩小一半,时间复杂度 O(logn)。参数说明:arr 必须是有序数组,low 和 high 是当前查找区间的上下界,target 是目标值。常见翻车点:mid 用 (low+high)//2 而不是 (low+high)/2,Python 里除法默认浮点,必须用整除。

4. 软件开发模型与测试:从瀑布到敏捷的考点分布

4.1 开发模型的适用场景

笔记里列了瀑布、原型、增量、螺旋、喷泉、V 模型、敏捷、极限编程 XP,这些模型在上午题里考的是“什么场景用什么模型”。瀑布模型适合需求明确且稳定的小项目,原型模型适合需求不明确时快速验证,增量模型适合可以分批次交付的系统,螺旋模型适合大型高风险项目,喷泉模型适合面向对象开发,V 模型适合强调测试贯穿始终的项目,敏捷和 XP 适合需求频繁变化的项目。

注意:喷泉模型的关键词是“迭代”和“无缝”,V 模型的关键词是“测试与开发对应”,螺旋模型的关键词是“风险分析”。

4.2 软件测试的 McCabe 复杂度

McCabe 复杂度是下午题和上午题的双料考点。计算公式是 V(G) = E - N + 2,其中 E 是边数,N 是节点数。也可以用判定节点数加 1 来算,判定节点包括 if、while、for、case 这些。笔记里把 McCabe 复制度和测试阶段放在一起,这个编排合理,因为 McCabe 复杂度直接决定需要多少条测试用例。

流图:节点是语句或语句块,边是控制流 V(G) = E - N + 2 V(G) = 判定节点数 + 1 V(G) = 闭合区域数 + 1

参数说明:三种算法结果一致,考场上用哪种顺手用哪种。常见翻车点:把顺序执行的多个语句当成多个节点,实际上顺序语句可以合并成一个节点。

4.3 测试阶段的对应关系

单元测试对应详细设计,集成测试对应概要设计,系统测试对应需求分析,验收测试对应用户需求。这个对应关系在上午题里反复考。笔记里把测试阶段单独列了一节,说明作者也意识到这是易混点。记忆方法:测试对象越小,对应的设计文档越细。

5. 计算机网络与信息安全:IP、协议、加密的易混点排查

5.1 特殊 IP 地址与子网划分

笔记里列了特殊的 IP 地址和 TCP/IP 协议簇,这是上午题的高频区。127.0.0.1 是回环地址,10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 是私有地址,169.254.0.0/16 是链路本地地址,0.0.0.0 表示本机所有接口,255.255.255.255 是广播地址。子网划分考的是给定 IP 和掩码求网络地址和广播地址。

IP: 192.168.1.100 掩码: 255.255.255.192 网络地址 = IP AND 掩码 = 192.168.1.64 广播地址 = 网络地址 OR (NOT 掩码) = 192.168.1.127 可用主机数 = 2^(32-26) - 2 = 62

参数说明:/26 表示掩码有 26 个 1,剩下 6 个 0,所以主机位是 6 位。减 2 是因为网络地址和广播地址不能分配给主机。常见翻车点:把网络地址和广播地址算成可用地址。

5.2 对称加密与非对称加密的混用

笔记里把对称加密、数字签名、PKI、防火墙放在信息安全一章。对称加密的密钥只有一个,加密解密用同一个密钥,速度快但密钥分发不安全。非对称加密有公钥和私钥,公钥加密私钥解密,或者私钥签名公钥验签,速度慢但解决了密钥分发问题。实际系统里两者混用:用非对称加密传对称密钥,然后用对称密钥传数据。

提示:数字签名用的是私钥签名、公钥验签,别和公钥加密私钥解密搞混。签名保证的是不可否认性,加密保证的是机密性。

5.3 常见网络诊断命令

笔记里列了常见的网络诊断命令,ping 测连通性,tracert 测路径,netstat 看端口和连接,ipconfig 看本机 IP 配置,nslookup 查 DNS 解析。上午题常考“哪个命令用于查看本机 IP 配置”,选项里混入 netstat 和 nslookup。速判:ipconfig 看自己,ping 看别人,tracert 看路径,netstat 看连接。

6. 避坑排查:软考笔记使用中的五个血泪教训

6.1 把平衡二叉树特性当成普通二叉树特性

现象:做题时看到“二叉树左右子树高度差不超过 1”就选了对,结果错了。原因:这是平衡二叉树的定义,普通二叉树没有这个限制。解决:先看题干问的是普通二叉树还是平衡二叉树,普通二叉树只考层节点数和叶子节点数关系。

6.2 排序稳定性记反

现象:快速排序和归并排序的稳定性搞混,选择题丢分。原因:快排的交换会打乱相同元素的相对顺序,归并的合并会保留相同元素的相对顺序。解决:记“快排不稳定,归并不稳定”是错的,正确是“快排不稳定,归并稳定”,用“快排跳来跳去,归并老老实实”来记。

6.3 McCabe 复杂度把顺序语句拆成多个节点

现象:算出来的 V(G) 比正确答案大。原因:把连续的顺序执行语句当成了多个节点。解决:流图里顺序语句可以合并成一个节点,只有分支和循环才产生新节点。

6.4 子网划分把网络地址当可用地址

现象:算可用主机数时忘了减 2。原因:网络地址和广播地址不能分配给主机。解决:可用主机数 = 2^主机位数 - 2,主机位数 = 32 - 掩码位数。

6.5 UML 组合和聚合的菱形画反

现象:画类图时把聚合画成实心菱形,组合画成空心菱形。原因:记混了“实心组合、空心聚合”。解决:实心菱形代表强关系,部分不能独立存在;空心菱形代表弱关系,部分可以独立存在。记“实心绑得紧,空心绑得松”。

7. 下午题实战:数据流图平衡原则与 E-R 模型转换

下午题第一题通常是数据流图,第二题是 E-R 模型或 UML,第三题是算法设计。笔记里把数据流图平衡原则和 E-R 模型放在数据库系统一章,这个编排对应下午题的出题顺序。

数据流图的平衡原则有两条:父图和子图的输入输出数据流必须一致,每个加工必须有输入和输出。常见考法是给出顶层图和 0 层图,让你找不平衡的地方。我一般先数顶层图的输入输出,再数 0 层图的输入输出,对不上的就是问题点。

顶层图:外部实体 A → 加工 P → 外部实体 B 0 层图:外部实体 A → 加工 P1 → 加工 P2 → 外部实体 B 平衡检查:A 的输入流在 0 层图里必须出现,B 的输出流在 0 层图里必须出现

E-R 模型转换的规则:实体转表,属性转列,1:1 关系可以合并到任意一端,1:n 关系把 1 端的主键放到 n 端做外键,m:n 关系必须单独建表。下午题常考“把 E-R 图转换成关系模式”,并标注主键和外键。

算法设计题常考分治、动态规划、贪心。我一般先判断题目要求的是“最优解”还是“可行解”,最优解优先想动态规划,可行解优先想贪心。如果题目里出现“重叠子问题”或“最优子结构”,基本就是动态规划。

从那以后我每次做下午题都强制走一遍“先画数据流图平衡检查,再转 E-R 模型,最后写算法伪代码”的流程,不跳步。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询