# 计算机软考（一）中级软件设计师与网络工程师：软件工程与UML设计模式、数据库规范化（1NF-BCNF）、知识产权法与网络协议体系

> 覆盖软考中级（软件设计师、网络工程师、系统集成项目管理工程师）综合知识与应用技术核心考点：软件生命周期模型、UML关系与23种GoF设计模式、关系代数与范式分解、计算机软件保护条例与专利法、子网划分与路由协议。

- **Canonical URL:** https://flashcards.world/flashcards/sets/c687c75f-fe5a-4352-acd6-b045f6813c95/
- **Markdown URL:** https://flashcards.world/flashcards/sets/c687c75f-fe5a-4352-acd6-b045f6813c95.md
- **Level:** basic
- **Languages:** zh → zh
- **Total Cards:** 32

## Flashcards (32 Cards)

| # | Front (Term / Prompt) | Back (Definition / Answer) | Example | Multiple-Choice Options |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 在软考《计算机网络与信息安全》中，IPv4 CIDR 无分类编址子网划分、私有 IP 地址范围、常见应用层协议默认端口号（FTP/SSH/Telnet/SMTP/DNS/DHCP/HTTP/POP3/SNMP/HTTPS）是什么？ | 1）三大类私有 IP 地址范围：A类 `10.0.0.0/8`（`10.0.0.0 ~ 10.255.255.255`）；B类 `172.16.0.0/12`（`172.16.0.0 ~ 172.31.255.255`）；C类 `192.168.0.0/16`（`192.168.0.0 ~ 192.168.255.255`）；自动专用地址 APIPA 为 `169.254.x.x`。2）子网掩码 `/n` 拥有主机位数 $m = 32 - n$，每个子网可用主机数为 **$2^m - 2$**（扣掉全0网络地址和全1广播地址）。3）必背端口号及底层传输协议：**FTP（20数据连接 / 21控制连接，基于TCP）**、SSH（22，TCP）、Telnet（23，TCP）、**SMTP（25，TCP）**、**DNS（53，查询用UDP，主辅区域传送用TCP）**、**DHCP（客户端68 / 服务端67，UDP）**、TFTP（69，UDP）、HTTP（80，TCP）、POP3（110，TCP）、IMAP（143，TCP）、**SNMP（管理进程162接收Trap / 代理进程161，UDP）**、HTTPS（443，TCP/TLS）。 |  |  |
| 2 | 数据库事务的四大特性（ACID）与并发控制中“三级封锁协议”分别解决了哪三类不一致问题（丢失修改、不可重复读、读脏数据）？ | 事务四大特性：**原子性（Atomicity，全做或全不做，由日志 Undo 保障）、一致性（Consistency）、隔离性（Isolation，由并发封锁/MVCC保障）、持久性（Durability，由日志 Redo 保障）**。并发三大异常与三级封锁协议：1）**一级封锁协议**：事务 T 在修改数据 R 之前必须先对其加 X 锁（排他锁），直到事务结束才释放——解决**【丢失修改】**；2）**二级封锁协议**：在一级基础上，事务 T 在读取数据 R 之前必须先加 S 锁（共享锁），**读完后即可立即释放 S 锁**——解决丢失修改和**【读“脏”数据】**；3）**三级封锁协议**：在一级基础上，事务 T 在读取数据 R 之前先加 S 锁，且**直到事务结束才释放 S 锁**——彻底解决丢失修改、读脏数据和**【不可重复读】**。 |  |  |
| 3 | 计算机组成中，海明校验码（Hamming Code）的校验位个数公式 $2^k \ge n + k + 1$ 与循环冗余校验码（CRC 模2除法）的计算规则是什么？ | 1）**海明码**：采用奇偶校验和分组交叉校验，具有检错 2 位、**纠错 1 位**的能力。设有效数据位为 $n$ 位，海明校验位为 $k$ 位，则必须满足不等式 **$2^k \ge n + k + 1$**（或 $2^k - 1 \ge n + k$），校验位依次插入在 $2^0, 2^1, 2^2, \dots, 2^{k-1}$（即第 1, 2, 4, 8, 16... 位）上。2）**CRC 循环冗余校验码**：具有极强检错能力（无硬件自动纠错能力，通常结合重传），若生成多项式 $G(x)$ 的最高次幂为 $r$（二进制有 $r+1$ 位），则在原始信息码后面先补 **$r$ 个 0**，然后对生成多项式对应的二进制串做**【模 2 除法（按位异或 XOR，不进位不借位）】**，所得 $r$ 位余数即为 CRC 校验码。 |  |  |
| 4 | 计算机组成原理中，RISC（精简指令集计算机）与 CISC（复杂指令集计算机）的八大核心对比特征是什么？ | 1）指令数量与使用频率：**CISC** 指令系统庞大复杂、字长不固定、使用频率两极分化；**RISC** 只保留使用频率最高的 20% 简单指令，指令字长固定；2）寻址方式：CISC 寻址方式多而复杂；RISC 寻址方式少而简单；3）访存指令限制：CISC 许多算术逻辑指令可直接访问内存；**RISC 严格采用 Load/Store 架构，只有 Load（取数）和 Store（存数）指令才能访问主存**，其余运算指令一律在通用寄存器之间进行；4）通用寄存器数量：RISC 拥有大量通用寄存器（采用寄存器窗口重叠技术）；5）控制器实现方式：CISC 多采用**微程序控制器**；**RISC 绝大多数采用硬布线（组合逻辑）控制器**以追求单周期执行与高效指令流水线。 |  |  |
| 5 | Linux 常用网络与系统管理命令及配置文件（`/etc/resolv.conf`、`/etc/hosts`、`chmod 755`、`ps`、`netstat`、`traceroute`）的作用是什么？ | 1）核心网络配置文件：`/etc/resolv.conf` 配置 **DNS 域名服务器地址**（`nameserver`）；`/etc/hosts` 配置本地静态主机名与 IP 映射（优先级高于 DNS）；2）文件权限 `rwxr-xr-x`（数字表示法：`r=4, w=2, x=1`，故所有者 `rwx=7`、所属组 `r-x=5`、其他用户 `r-x=5`，即 `chmod 755`；目录必须具有 `x` 执行权限才能 `cd` 进入）；3）网络排错命令：`ping`（基于 ICMP 回显请求/应答测试连通性）、`traceroute` / Windows `tracert`（利用 IP 首部 TTL 从 1 递增触发 ICMP 超时报文追踪路由跳数）、`netstat -anp`（查看网络连接、路由表与端口监听进程）。 |  |  |
| 6 | 行为型十一种设计模式中，策略（Strategy）、状态（State）、观察者（Observer）、模板方法（Template Method）、责任链（Chain of Responsibility）、命令（Command）与访问者（Visitor）的核心特征是什么？ | 1）**Strategy（策略）**：定义一系列算法并封装起来，使它们可以【由客户端自由相互替换】；2）**State（状态）**：允许一个对象在其内部状态改变时自动改变它的行为（看起来似乎修改了它的类，状态转换常由 Context 或 State 子类内部自动触发）；3）**Observer（观察者/发布-订阅）**：定义对象间的一种一对多依赖关系，当目标（Subject）状态改变时，所有依赖于它的观察者（Observer）都得到通知并自动更新；4）**Template Method（模板方法）**：在父类中定义一个操作中的算法骨架，而将一些可变步骤延迟到子类中实现；5）**Command（命令）**：将一个请求封装为一个对象，从而支持请求排队、日志记录及【可撤销（Undo）操作】。 |  |  |
| 7 | 在分布式数据库与大数据架构中，CAP 定理与 BASE 理论的含义是什么？备份策略中完全备份、增量备份与差异备份的恢复速度与空间占用有何不同？ | 1）**CAP 定理**：一个分布式系统最多只能同时满足 **一致性（Consistency）、可用性（Availability）、分区容错性（Partition tolerance）** 三项中的两项（由于网络分区 P 不可避免，工程中只能在 CP 与 AP 之间权衡）；**BASE 理论**：基本可用（Basically Available）、软状态（Soft state）、最终一致性（Eventually consistent）。2）**三种数据备份方式对比**：①**完全备份（Full）**：备份全部选中数据；②**差异备份（Differential）**：每次备份【自上一次完全备份以来】所有发生变化的数据（备份耗时中等，**恢复最快**——只需【最近一次完全备份 + 最近一次差异备份】两份数据即可恢复！）；③**增量备份（Incremental）**：每次仅备份【自上一次任意类型备份（完全或增量）以来】新增变化的数据（备份最快、占空间最小，但**恢复最慢**——需依次恢复最近一次完全备份及此后所有的增量备份链）。 |  |  |
| 8 | 软考《知识产权与标准化法律法规》中，职务作品/职务软件著作权归属、保护期限（发表权vs财产权截止到第50年12月31日）、商标权与专利权（发明20年、实用新型10年、外观设计15年）的核心规定是什么？ | 1）**软件著作权与作品著作权保护期**：署名权、修改权、保护作品完整权保护期**不受限制（永久）**；公民作品的发表权与财产权保护期为作者终生及其死亡后 **50年**（截止于作者死亡后第50年的 **12月31日**）；法人或非法人组织职务软件的财产权保护期为 **50年**（截止于软件首次发表后第50年的 **12月31日**，但软件自开发完成之日起50年内未发表的不再保护）。2）**专利权保护期（自【申请日】起算）**：发明专利 **20年**，实用新型专利 **10年**，外观设计专利 **15年**（两人在同日分别就同样发明创造申请专利的，【自行协商】确定申请人，不接受抽签或共有强制；委托开发无约定时，**专利申请权和软件著作权均归【受托人/研发方】享有**！）。3）**注册商标有效期**：自【核准注册之日】起 **10年**（期满前12个月内申请续展，宽展期6个月，可无限次续展）。 |  |  |
| 9 | 面向对象分析与设计（OOAD）中，边界类（Boundary Class）、控制类（Control Class）与实体类（Entity Class）（BCE 架构模式）各自的职责是什么？ | 在面向对象分析（OOA）类图建模中，常将类划分为三种构造型（Stereotype）：1）**实体类（Entity Class）**：代表系统需要持久存储的核心业务数据与领域概念（如“订单”、“账户”、“图书”），通常映射为数据库表；2）**边界类（Boundary Class）**：位于系统与外界（用户界面 UI、外部系统接口、硬件传感器）的交界处，负责接收用户输入、展示结果或与外部系统通信（如“登录窗口”、“支付网关接口”）；3）**控制类（Control Class）**：负责协调、控制用例的业务逻辑流转与事务处理，将边界类接收的请求转发并调度多个实体类完成业务规则（如“订单控制器”）。 |  |  |
| 10 | 编译原理（软件设计师必考）中，词法分析（有限自动机 DFA/NFA）、语法分析（上下文无关文法、后缀表达式/逆波兰式）与传值调用（Call by Value）vs 引用调用（Call by Reference）的区别是什么？ | 1）编译阶段：词法分析（正规式与有限自动机 DFA/NFA，识别单词记号 Token）→ 语法分析（下推自动机与上下文无关文法，构造语法分析树，检查语法结构错误）→ 语义分析（静态类型检查，生成中间代码如后缀式、三地址码、四元式）→ 代码优化 → 目标代码生成（与具体机器强相关）。2）中缀表达式 `(a - b) * (c + d)` 的后缀式（逆波兰式，对应语法树后序遍历）为 **`ab-cd+*`**（利用栈求值，无需括号）。3）参数传递：传值调用中形参是实参的独立副本，函数内修改形参**绝不改变**实参；引用调用（传地址）中形参直接指向实参内存地址，函数内对形参的修改**直接改变**实参的值。 |  |  |
| 11 | RAID（独立磁盘冗余阵列）中，RAID 0、RAID 1、RAID 5、RAID 6 与 RAID 10 的磁盘空间利用率、最少所需硬盘数及容错能力对比是什么？ | 1）**RAID 0（条带化 Striping）**：无冗余无校验，空间利用率 **100%**，读写性能最高，但**无任何容错能力**（任一块盘坏则全盘数据丢失，最少2块盘）；2）**RAID 1（镜像 Mirroring）**：成对镜像备份，空间利用率 **50%**，最少2块盘，允许坏1块镜像盘；3）**RAID 5（分布式奇偶校验）**：将奇偶校验信息均匀分布在所有磁盘上，空间利用率为 **$(N-1)/N$**，**最少需要 3 块盘**，最多允许同时损坏 **1 块盘**；4）**RAID 6（双重分布式奇偶校验）**：空间利用率为 **$(N-2)/N$**，最少需要 4 块盘，最多允许同时损坏 **2 块盘**；5）**RAID 10（先做 RAID 1 镜像，再做 RAID 0 条带化）**：兼顾高速与高安全性，空间利用率 **50%**，最少需要 **4 块盘**。 |  |  |
| 12 | 在软考《软件工程》中，瀑布模型、原型模型、螺旋模型、V模型、喷泉模型与敏捷开发（Scrum / XP）的核心特征及适用场景是什么？ | 1）瀑布模型：严格线性顺序，适合【需求明确且在开发过程中极少变更】的项目（缺点是后期才见结果，难以适应需求变化）；2）原型模型：快速构造可运行原型以获取用户真实需求，适合【需求模糊不清】的系统；3）螺旋模型（Boehm提出）：融合了瀑布模型、原型模型并首次引入【风险分析（Risk Analysis）】，由制定计划、风险分析、实施工程、客户评估四象限组成，适合【庞大、复杂、高风险】的大型系统；4）V模型：强调测试贯穿开发全过程（单元测试对应详细设计，集成测试对应概要设计，系统测试对应需求分析，验收测试对应用户需求）；5）喷泉模型：面向对象的迭代无间隙模型。 |  |  |
| 13 | 操作系统死锁问题中，产生死锁的四个必要条件是什么？若有 $m$ 个同类资源被 $n$ 个进程共享，每个进程最多请求 $k$ 个资源，系统绝对不会发生死锁的最小资源数公式是什么？ | 死锁四大必要条件：**互斥条件、请求和保持条件、不可剥夺条件、环路等待（循环等待）条件**。**绝对不发生死锁的公式（鸽巢原理，高频秒杀题）**：最坏情况下，让所有 $n$ 个进程都分到“距离自己最大需求还差 1 个”的资源数（即每人分得 $k - 1$ 个资源），此时只需系统再多出 **1 个**资源，就必定能让其中一个进程顺利执行完毕并释放全部资源！故不发生死锁的充要条件是：**$m \ge n \cdot (k - 1) + 1$**（或最多允许同时并发的进程数 $n \le \lfloor \frac{m-1}{k-1} \rfloor$）。 |  |  |
| 14 | GoF 23种面向对象设计模式分为哪三大类？创建型五种模式（单例、工厂方法、抽象工厂、建造者、原型）的核心意图分别是什么？ | 三大类：创建型（5种）、结构型（7种）、行为型（11种）。创建型五模式：1）**Singleton（单例模式）**：保证一个类仅有一个实例并提供全局访问点；2）**Factory Method（工厂方法模式）**：定义一个创建对象的接口，但由子类决定实例化哪一个类（使实例化延迟到子类）；3）**Abstract Factory（抽象工厂模式）**：提供一个创建一系列相关或相互依赖对象（产品族）的接口，而无需指定它们具体的类；4）**Builder（建造者/生成器模式）**：将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示；5）**Prototype（原型模式）**：用原型实例指定创建对象的种类，并通过拷贝（浅拷贝/深拷贝）这些原型创建新的对象。 |  |  |
| 15 | 操作系统磁盘管理中，磁盘访问时间（寻道时间 + 旋转延迟时间 + 传输时间）哪部分占比最大？常见磁盘移臂调度算法（FCFS、SSTF、SCAN电梯算法、CSCAN）及旋转调度优化计算是什么？ | 磁盘访问时间 $T_a = T_s(\text{寻道时间}) + \frac{1}{2r}(\text{平均旋转延迟，等于转半圈时间}) + \frac{b}{rN}(\text{传输时间})$，其中**寻道时间（磁头移动到目标柱面的机械运动时间）占比最大**。移臂调度算法：1）先来先服务 FCFS；2）最短寻道时间优先 SSTF（每次选离当前磁头最近的柱面，缺点是可能导致远离磁头的请求产生“饥饿”）；3）扫描算法 SCAN（电梯算法，磁头双向往返，兼顾距离与方向，消除饥饿）；4）循环扫描 CSCAN（单向移动，到头直接返回起点）。注意：若同一柱面有多个不同扇区的请求，读取并处理一个逻辑记录后磁盘已继续旋转，需按磁盘旋转方向计算扇区等待时间！ |  |  |
| 16 | 软件质量模型（ISO/IEC 9126 与 ISO/IEC 25010）的八大质量特性（功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性）及其子特性如何区分？ | 高频易混子特性归属：1）**功能性**：适合性、准确性、依从性；2）**可靠性**：成熟性、**容错性**、**易恢复性**、可用性；3）**维护性**：模块化、可重用性、**易分析性**、**易改变性（可修改性）**、**易测试性**；4）**可移植性**：**适应性**（适应不同运行环境无需额外修改）、**易安装性**、**共存性**、**易替换性**；5）**性能效率**：时间特性（响应时间/吞吐量）、资源利用性、容量。 |  |  |
| 17 | 数据库 E-R 图（实体-联系图，软考下午第2题必考）转换关系模式的三大规则（1:1、1:n、m:n 联系）及弱实体、聚集、泛化如何转换？ | 1）**1:1（一对一）联系**：可以转换为一个独立的关系模式，也可以与**任意一端**对应的关系模式合并（将该联系的属性及另一端实体的主码加入合并端）；2）**1:n（一对多）联系**：可以转换为独立关系模式，也可以与**【n 端（多端）】**对应的关系模式合并（将 **1 端实体的主码**和联系自身的属性加入到 **n 端关系模式**中作为外码！切忌加到1端，否则会产生多值冗余）；3）**m:n（多对多）联系**：**【必须】单独转换为一个独立的关系模式**，该关系模式的主码为**两端实体主码的组合（复合主码）**，再加上联系自身的属性（若为三元联系 $m:n:p$ 同样必须独立建表，以三方主码组合为主码）。 |  |  |
| 18 | 在软考《数据库系统》中，函数依赖的 Armstrong 公理系统、候选键（Candidate Key）快速求解四步法（L类、R类、LR类、N类属性）是什么？ | 求关系模式 $R(U, F)$ 的候选码快速分类法：1）**L类属性（只在函数依赖左部出现，从不在右部出现的属性）及 N类属性（左右两边都未出现的外部属性）**：**【必定包含在任何候选码中】**！若求得 $(L \cup N)^+ = U$（闭包包含全集），则 $L \cup N$ 就是**唯一候选码**；2）**R类属性（只在函数依赖右部出现，从不在左部出现的属性）**：属于非主属性，**【绝不可能出现在任何候选码中】**；3）**LR类属性（左右两边均出现）**：若 $(L \cup N)^+ \neq U$，则将 $L \cup N$ 依次与 LR 类属性逐个组合求闭包，闭包等于 $U$ 的最小组合即为候选码。 |  |  |
| 19 | 数据库规范化理论中，第一范式（1NF）、第二范式（2NF）、第三范式（3NF）与巴斯-科德范式（BCNF）的定义及消除了什么异常？模式分解的“无损连接性”与“保持函数依赖”如何判定？ | 1）**1NF**：每一个分量都是不可分的数据项（原子性）；2）**2NF**：在 1NF 基础上，消除了**非主属性对码的【部分函数依赖】**；3）**3NF**：在 2NF 基础上，消除了**非主属性对码的【传递函数依赖】**；4）**BCNF**：在 3NF 基础上，消除了**主属性对码的部分和传递函数依赖**（即每一个非平凡函数依赖 $X \to Y$ 的左部 $X$ 都必包含候选码）。一分为二分解 $\rho = \{R_1(U_1), R_2(U_2)\}$ 的**无损连接充要条件定理**：当且仅当 **$(U_1 \cap U_2) \to (U_1 - U_2) \in F^+$** 或 **$(U_1 \cap U_2) \to (U_2 - U_1) \in F^+$**（即两子模式的公共属性集是其中一个子模式的超键）！ |  |  |
| 20 | 结构化设计（SD）中，“模块内聚（Cohesion）”从低到高分为哪七级？“模块耦合（Coupling）”从低到高分为哪七级？软件设计的基本原则是什么？ | 核心原则：**【高内聚、低耦合】**！1）**内聚性（从低到高，越往后越好）**：偶然内聚（巧合内聚，最差）→ 逻辑内聚 → 时间内聚 → 过程内聚 → 通信内聚（操作同一数据集）→ 顺序内聚（前一个加工输出是后一个输入）→ **功能内聚（完成单一明确功能，最高最好）**；2）**耦合性（从低到高，越往前越好）**：**非直接耦合（无直接联系，最好）** → **数据耦合（仅通过参数表传递简单基本数据，工程常用理想状态）** → 标记耦合（传递数据结构/对象引用）→ 控制耦合（传递控制开关标志 flag）→ 外部耦合 → 公共耦合（多个模块访问同一个全局公共数据环境）→ **内容耦合（一个模块直接访问或修改另一个模块内部数据或跳转到其内部，最差严禁使用）**。 |  |  |
| 21 | 算法设计与分析（软考下午程序设计大题压轴）中，分治法（Divide and Conquer）、动态规划法（DP）、贪心法（Greedy）与回溯法/分支限界法的性质对比及复杂度主定理（Master Theorem）是什么？ | 1）**分治法 vs 动态规划**：二者都具有【最优子结构】，但分治法子问题【相互独立】（如归并排序、快速排序、二分查找），而动态规划子问题具有【重叠子问题（Overlapping Subproblems）】性质，通过自底向上填表备忘避免重复计算（如 0-1背包问题 时间空间复杂度均为 $O(nW)$、最长公共子序列 LCS $O(mn)$、矩阵连乘 $O(n^3)$）；2）**贪心法**：每一步只做当前局部最优选择，无需回溯，能求得**分数背包问题（部分背包，$O(n\log n)$）**、哈夫曼编码、活动安排与单源最短路径的全局最优解，但**不能**求得 0-1 背包问题的最优解；3）**主定理 $T(n) = aT(n/b) + f(n)$**：比较 $n^{\log_b a}$ 与 $f(n)$ 的阶，谁的阶高就取谁；若同阶则乘以 $\log n$，即 $O(n^{\log_b a} \log n)$。 |  |  |
| 22 | 数据流图（DFD，软考下午第1题必考）的四大基本成分是什么？父图与子图平衡原则及常见的三种数据流图语法错误（黑洞、奇迹、灰洞）如何检查？ | DFD 四大要素：**外部实体（External Entity，数据源点或终点）、加工/处理（Process，转换数据）、数据存储（Data Store，静态文件/表）、数据流（Data Flow，带箭头的数据移动路径）**。**下午第1题找错与补全黄金法则**：1）**父图与子图平衡**：0层图中某加工的输入数据流和输出数据流，必须与该加工分解出的子图（1层图）的总输入数据流和总输出数据流在数量和名称上完全一致；2）**每个加工必须既有输入数据流又有输出数据流**：只有输入没有输出叫**【黑洞】**；只有输出没有输入叫**【奇迹（无中生有）】**；输入数据不足以产生输出数据叫**【灰洞】**；3）**外部实体与外部实体之间、外部实体与数据存储之间、两个数据存储之间【绝对不能】直接有数据流相连**（任何数据流动必须经过“加工 Process”处理！）。 |  |  |
| 23 | 结构型七种设计模式（适配器 Adapter、桥接 Bridge、组合 Composite、装饰 Decorator、外观 Facade、享元 Flyweight、代理 Proxy）的核心区别与软考下午题高频识别词是什么？ | 1）**Adapter（适配器）**：“转换接口”，将一个类的接口转换成客户希望的另外一个接口，使原本由于接口不兼容而不能一起工作的类可以协同工作；2）**Bridge（桥接）**：“抽象与实现解耦”，将抽象部分与它的实现部分分离，使它们都可以独立地沿各自维度扩展变化（用组合代替多层继承爆炸）；3）**Composite（组合）**：“树形部分-整体”，将对象组合成树形结构以表示“部分-整体”层次，使客户对单个对象（Leaf）和组合对象（Composite）的使用具有一致性（如文件夹与文件）；4）**Decorator（装饰器）**：“动态透明叠加职责”，动态地给一个对象添加一些额外的职责；5）**Facade（外观）**：为子系统中的一组复杂接口提供一个一致的高层简单界面；6）**Flyweight（享元）**：运用共享技术有效地支持大量细粒度对象的复用（区分内部状态与外部状态）。 |  |  |
| 24 | 面向对象设计的七大基本原则（SOLID + 迪米特法则 + 合成复用原则）分别是什么？ | 1）**单一职责原则（SRP）**：一个类应该有且仅有一个引起它变化的原因；2）**开放-封闭原则（OCP，核心）**：软件实体应当**对扩展开放，对修改关闭**；3）**里氏替换原则（LSP）**：子类必须能够替换掉它们的基类（子类可重写扩展父类抽象方法，但尽量不要覆盖父类非抽象已实现方法）；4）**依赖倒置原则（DIP）**：高层模块不应依赖低层模块，二者都应依赖抽象；**针对接口编程，不要针对实现编程**；5）**接口隔离原则（ISP）**：使用多个专门的小接口，而不使用单一庞大总接口；6）**合成/聚合复用原则（CARP）**：**优先使用对象组合/聚合，而不是类继承**；7）**迪米特法则（LoD，最少知识原则）**：一个对象应当对其他对象有尽可能少的了解（只与直接朋友通信）。 |  |  |
| 25 | 软件项目估算中，COCOMO II 模型、功能点分析法（FPA）与专家判定德尔菲法（Delphi / 敏捷扑克估算）的特点是什么？ | 1）**功能点估算（Function Point, FP）**：从用户功能视角出发，在需求分析早期即可根据外部输入（EI）、外部输出（EO）、外部查询（EQ）、内部逻辑文件（ILF）、外部接口文件（EIF）评估软件规模，**与具体采用哪种程序设计语言无关**（代码行 LOC 估算则强依赖编程语言）；2）**COCOMO II 模型**：分应用组装模型（早期原型阶段，用对象点）、早期设计阶段模型（用功能点）和体系结构阶段后模型（用代码行或功能点）；3）**专家德尔菲法（Wideband Delphi）**：采用**匿名背靠背多轮征询汇总**，消除权威盲从与从众心理。 |  |  |
| 26 | 软件测试中，黑盒测试（功能测试）与白盒测试（结构测试）的常见方法有哪些？白盒测试六种逻辑覆盖（语句、判定、条件、判定/条件、条件组合、路径）的强弱关系及 McCabe 环路复杂度公式是什么？ | 1）黑盒测试方法：等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交实验法、场景法；2）白盒测试逻辑覆盖从弱到强：**语句覆盖（最弱）→ 判定覆盖（分支覆盖）→ 条件覆盖（注意：判定覆盖与条件覆盖互不包含！）→ 判定/条件覆盖 → 条件组合覆盖 → 路径覆盖（最强）**；3）**McCabe 环路复杂度（圈复杂度 $V(G)$，等于线性独立路径条数，即基本路径测试所需最少测试用例数）**：**$V(G) = m - n + 2 = P + 1 = \text{封闭区域数} + 1$**（其中 $m$ 为控制流图边数，$n$ 为结点数，$P$ 为判定结点/二分支结点个数）。 |  |  |
| 27 | 操作系统进程管理中，前趋图与信号量 PV 操作如何配合？若信号量初值为 1，现有 5 个进程并发进入临界区，信号量 S 的取值范围及等待队列中最多有几个阻塞进程？ | 信号量 $S$ 表示可用资源数量：每次执行 `P(S)` 操作使 $S = S - 1$，若 $S < 0$ 则调用进程阻塞并插入等待队列；每次执行 `V(S)` 操作使 $S = S + 1$，若 $S \le 0$ 则唤醒等待队列中的一个进程。当互斥信号量 $S$ 初值为 1，有 $n=5$ 个并发进程竞争同一临界区时：无人进入时 $S = 1$；1人进入无人等待时 $S = 0$；1人进入且其余 4 人全部尝试进入被阻塞时 $S = 1 - 5 = -4$。因此 $S$ 的取值范围为 **$[-4, 1]$**（当 $S < 0$ 时，$\|S\|$ 的绝对值即为当前阻塞队列中等待的进程个数，最多有 4 个进程阻塞）。 |  |  |
| 28 | 在 SQL 语言中，视图（View）、索引（Index）、触发器（Trigger）与存储过程（Stored Procedure）的作用是什么？分组查询 `WHERE` 与 `HAVING` 子句的根本区别是什么？ | 1）**视图（View）**：是从一个或多个基本表导出的**虚表**，数据库中只存放视图的定义（SELECT查询语句）而不存放对应的数据，提供逻辑数据独立性与安全保密机制；2）**`WHERE` vs `HAVING`**：`WHERE` 作用于基本表或视图的单个元组（行），在分组（`GROUP BY`）**之前**过滤，**绝对不能包含聚集函数**（如 `COUNT/SUM/AVG/MAX/MIN`）；`HAVING` 作用于分组**之后**的组，专门用于根据聚集函数结果筛选分组；3）SQL语句执行顺序：`FROM → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY`。 |  |  |
| 29 | 密码学与网络安全中，对称加密算法（DES/3DES/AES/SM4/RC5）、非对称公钥加密算法（RSA/ECC/SM2）、哈希摘要算法（MD5/SHA/SM3）及数字签名与数字证书（PKI/CA）的工作流程是什么？ | 1）算法分类与国密标准：**对称加密**（加密解密同一密钥，速度快适合大数据加密）：DES（56位密钥，64位分组）、3DES（112/168位）、AES（128/192/256位）、**国密 SM1 / SM4（128位分组与密钥）**；**非对称加密**（公钥公开，私钥保密，适合密钥交换与数字签名）：RSA（基于大整数质因数分解难题）、ECC（椭圆曲线）、**国密 SM2（基于ECC）**；**单向散列 Hash 摘要算法**（防篡改完整性校验）：MD5（128位摘要）、SHA-1（160位）、SHA-256、**国密 SM3（256位摘要）**。2）**加密 vs 签名密钥用法（必考）**：甲向乙发送机密且签名的文件——甲先对原文求 Hash 摘要，用【甲自己的私钥】对摘要加密生成**数字签名**（保证不可抵赖与真实性），再用【乙的公钥】加密对称会话密钥（数字信封，保证机密性）；乙收到后用【乙自己的私钥】解密会话密钥，并用【甲的公钥】验证数字签名。 |  |  |
| 30 | CMMI（能力成熟度模型集成）连续式表示与阶段式表示的五个等级分别是什么？软件维护的四种类型（改正性、适应性、完善性、预防性）占比最高的是哪一种？ | CMMI 阶段式五级：1级初始级（混乱无序）→ 2级已管理级（项目级管理）→ 3级已定义级（组织级标准过程）→ 4级量化管理级（统计与量化预测控制）→ 5级优化级（持续过程改进与创新）。软件维护四类型（必考区分）：1）**改正性维护（Corrective）**：修复运行中暴露的潜伏错误/Bug；2）**适应性维护（Adaptive）**：为适应外部硬件、操作系统、数据库或法规环境变化而修改软件；3）**完善性维护（Perfective，占全部维护工作量的 50%–60% 以上，占比最高！）**：扩充功能、改善性能、应用户新需求升级；4）**预防性维护（Preventive）**：为提高未来可维护性与可靠性而主动重构“明日系统”。 |  |  |
| 31 | 网络协议与子网规划中，VLAN（IEEE 802.1Q）、STP（生成树协议 IEEE 802.1D）、ARP 与 NAT（网络地址转换）的工作原理是什么？ | 1）**VLAN（虚拟局域网）**：在二层数据链路层通过交换机端口或 IEEE 802.1Q 标签（在以太网帧插入4字节 Tag）隔离**广播域**（不同 VLAN 间通信必须经过三层路由器或三层交换机 SVI 接口）；2）**ARP（地址解析协议）**：将已知 **IP 地址解析为 MAC 物理地址**，**ARP 请求采用广播发送，ARP 响应采用单播返回**；3）**NAT（网络地址转换）**：将内网私有 IP 地址映射为公网合法 IP 地址，其中 NAPT（端口多路复用 PAT）通过映射不同的源 TCP/UDP 端口号实现多个内网主机共用 1 个公网 IP 上网。 |  |  |
| 32 | UML（统一建模语言）中，类与类之间的六种关系（依赖、关联、聚合、组合、泛化/继承、实现）的耦合强弱与图例箭头分别是什么？用例图（Use Case Diagram）中 include、extend 与泛化有何区别？ | 1）类图六大关系：依赖（虚线开箭头 `..>`，作为局部变量或形参，最弱）、关联（实线开箭头 `-->`，作为成员变量）、聚合（空心菱形实线 `o--`，整体与部分可分离，生命周期独立，如雁群与大雁）、组合（实心菱形实线 `*--`，整体与部分不可分离，同生共死，如大雁与翅膀）、泛化/继承（实线空心三角 `--\|>`）、实现接口（虚线空心三角 `..\|>`）。2）用例图三大关系（下午大题第1题必考）：**`<<include>>` 包含关系**（基础用例指向被包含公共子用例，只要执行基础用例就【必须】执行被包含用例，如“取款”和“转账”都 `<<include>>` “验证密码”）；**`<<extend>>` 扩展关系**（**扩展用例指向基础用例**，注意箭头方向与 include 相反！只在特定条件满足时才可选触发，如“借书超期” `<<extend>>` 指向“还书”）。 |  |  |

---
Study this deck interactively with FSRS-6 spaced repetition, audio review, and multiple-choice mode at [Flashcards World](https://flashcards.world/flashcards/sets/c687c75f-fe5a-4352-acd6-b045f6813c95/).
