中级软考(软件工程师)常用错题整理
- 前言
- 一、计算机系统知识
-
-
- [1. 计算平均 CPI(每条指令所需的平均时钟周期数)](#1. 计算平均 CPI(每条指令所需的平均时钟周期数))
- [2. 计算运算速度 MIPS(每秒百万条指令)](#2. 计算运算速度 MIPS(每秒百万条指令))
- [1. 理解已知条件](#1. 理解已知条件)
- [2. 计算寻址范围](#2. 计算寻址范围)
- [1. 三种寻址方式的详细对比](#1. 三种寻址方式的详细对比)
- [2. 总结排序](#2. 总结排序)
- 总结:
- [1. 拆解二进制序列](#1. 拆解二进制序列)
- [2. 计算阶码(指数部分)](#2. 计算阶码(指数部分))
- [3. 计算尾数(数值部分)](#3. 计算尾数(数值部分))
- [4. 组合得到浮点数值](#4. 组合得到浮点数值)
- [5. 结论](#5. 结论)
-
- 二、程序设计语言基础
- 三、数据结构
- 四、操作系统知识
-
-
- [情况 1:若 P1 "等待/阻塞"(如请求 I/O 或等待某信号)](#情况 1:若 P1 “等待/阻塞”(如请求 I/O 或等待某信号))
- [情况 2:若 P1 "时间片到"(A 选项)](#情况 2:若 P1 “时间片到”(A 选项))
- [情况 3:若 P1 "释放了打印机"(C 选项)](#情况 3:若 P1 “释放了打印机”(C 选项))
- [情况 4:若 P1 "释放了扫描仪"(B 选项)](#情况 4:若 P1 “释放了扫描仪”(B 选项))
- [情况 5:若 P1 "已完成"(D 选项)](#情况 5:若 P1 “已完成”(D 选项))
- 考试常见答案:
- [1. 计算读取"一个"数据块所需的时间:](#1. 计算读取“一个”数据块所需的时间:)
- [2. 计算读取"100 个"数据块的总时间:](#2. 计算读取“100 个”数据块的总时间:)
- 结论:
- [一、 核心参数核算](#一、 核心参数核算)
- [二、 问题 (27) 解析:最长时间(非优化排列)](#二、 问题 (27) 解析:最长时间(非优化排列))
- [三、 问题 (28) 解析:最短时间(优化排列)](#三、 问题 (28) 解析:最短时间(优化排列))
- [1. 核心理论:不发生死锁的条件](#1. 核心理论:不发生死锁的条件)
- [2. 解题步骤](#2. 解题步骤)
- [3. 情景模拟(验证 i = 4 i=4 i=4)](#3. 情景模拟(验证 i = 4 i=4 i=4))
- 结论:
- 核心解析:
- 结论:
- 选项分析:
- 结论:
- 解析:
- 结论:
- 核心解析:
- 结论:
- 核心知识点:APIPA (自动私有 IP 地址)
- 选项分析:
- 结论:
- 核心解析:
- 选项对比:
- 结论:
-
- 五、软件工程基础知识
-
-
- **选项分析:**
- **结论:**
- [**A. 易于看出每个子任务的持续时间**](#A. 易于看出每个子任务的持续时间)
- [**B. 易于看出目前项目的实际进度情况**](#B. 易于看出目前项目的实际进度情况)
- [**C. 易于看出子任务之间的衔接关系**](#C. 易于看出子任务之间的衔接关系)
- [**D. 易于识别出关键的子任务**](#D. 易于识别出关键的子任务)
- [**总结对比:甘特图 vs PERT图**](#总结对比:甘特图 vs PERT图)
- [1. 公理内容解析](#1. 公理内容解析)
- [2. 知识点总结(Armstrong 三大公理)](#2. 知识点总结(Armstrong 三大公理))
- 结论
-
- 六、结构化开发方法
-
-
- [1. 题目解析](#1. 题目解析)
- [2. 选项详解与对比](#2. 选项详解与对比)
-
- [**A. 数据耦合 (Data Coupling) ------ [正确项]**](#A. 数据耦合 (Data Coupling) —— [正确项])
- [**B. 标记耦合 (Stamp Coupling) ------ [易错项]**](#B. 标记耦合 (Stamp Coupling) —— [易错项])
- [**C. 控制耦合 (Control Coupling)**](#C. 控制耦合 (Control Coupling))
- [**D. 外部耦合 (External Coupling)**](#D. 外部耦合 (External Coupling))
- [3. 知识点总结(耦合程度从低到高)](#3. 知识点总结(耦合程度从低到高))
- [1. 核心概念解析](#1. 核心概念解析)
- [2. 选项分析](#2. 选项分析)
- [3. 补充考点:可用性 (Availability)](#3. 补充考点:可用性 (Availability))
- [1. ISO/IEC 9126 质量模型解析](#1. ISO/IEC 9126 质量模型解析)
- [2. 结论](#2. 结论)
- [1. 正确答案分析](#1. 正确答案分析)
- [2. 与 OOA 的对比(避坑指南)](#2. 与 OOA 的对比(避坑指南))
- 总结记忆法:
-
- 七、面向对象技术
- 八、算法设计与分析
-
-
- [1. 题目关键信息分析](#1. 题目关键信息分析)
- [2. 选项详细解析](#2. 选项详细解析)
- [3. 知识点对比总结](#3. 知识点对比总结)
-
- 九、数据库技术基础
-
-
- 结论:
- [1. 第一空分析:局部数据模型透明](#1. 第一空分析:局部数据模型透明)
- [2. 第二空分析:分块存储透明](#2. 第二空分析:分块存储透明)
- 知识扩展:其他透明性概念
- 总结结论:
-
- 十、网络与信息安全基础知识
- 十一、标准化和软件知识产权基础知识
-
-
- [1. 核心规则解析](#1. 核心规则解析)
- [2. 选项详细分析](#2. 选项详细分析)
- [3. 常见行业标准代号举例(供记忆):](#3. 常见行业标准代号举例(供记忆):)
- 结论:
-
前言
这一章整理出做题过程中频繁错的题目,加深记忆。
一、计算机系统知识

本题考查安全电子邮箱服务相关基础知识。
MIME它是一个互联网标准,扩展了电子邮件标准,使其能够支持,与安全无关。与安全电子邮件相关的是S/MIME安全多用途互联网邮件扩展协议。
A选项SSL和B选项HTTPS涉及邮件传输过程的安全,D选项PGP(全称:Pretty Good Privacy,优良保密协议),是一套用于信息加密、验证的应用程序,可用于加密电子邮件内容。

根据题目提供的信息,我们可以按照以下步骤进行计算:
1. 计算平均 CPI(每条指令所需的平均时钟周期数)
平均 CPI 是各类指令 CPI 的加权平均值。计算公式为:
平均 CPI = ∑ ( 各指令比例 × 各指令 CPI ) \text{平均 CPI} = \sum (\text{各指令比例} \times \text{各指令 CPI}) 平均 CPI=∑(各指令比例×各指令 CPI)
代入数据:
平均 CPI = 35 % × 4 + 45 % × 2 + 20 % × 6 \text{平均 CPI} = 35\% \times 4 + 45\% \times 2 + 20\% \times 6 平均 CPI=35%×4+45%×2+20%×6
平均 CPI = 0.35 × 4 + 0.45 × 2 + 0.20 × 6 \text{平均 CPI} = 0.35 \times 4 + 0.45 \times 2 + 0.20 \times 6 平均 CPI=0.35×4+0.45×2+0.20×6
平均 CPI = 1.4 + 0.9 + 1.2 = 3.5 \text{平均 CPI} = 1.4 + 0.9 + 1.2 = 3.5 平均 CPI=1.4+0.9+1.2=3.5
因此,(4) 的填空值为 3.5。
2. 计算运算速度 MIPS(每秒百万条指令)
MIPS 的计算公式为:
MIPS = 主频 (Hz) 平均 CPI × 10 6 = 主频 (MHz) 平均 CPI \text{MIPS} = \frac{\text{主频 (Hz)}}{\text{平均 CPI} \times 10^6} = \frac{\text{主频 (MHz)}}{\text{平均 CPI}} MIPS=平均 CPI×106主频 (Hz)=平均 CPI主频 (MHz)
已知 CPU 主频为 2.8 GHz 2.8\text{ GHz} 2.8 GHz,即 2800 MHz 2800\text{ MHz} 2800 MHz。
代入数据:
MIPS = 2800 3.5 \text{MIPS} = \frac{2800}{3.5} MIPS=3.52800
MIPS = 800 \text{MIPS} = 800 MIPS=800
因此,(5) 的填空值为 800。

1. 理解已知条件
- 字长 (Word Length) : 32 32 32 位。在计算机中, 1 1 1 字节 (Byte) = 8 8 8 位 (bit),所以该计算机的字长为 32 / 8 = 4 32 / 8 = 4 32/8=4 字节。
- 内存容量 (Memory Capacity) : 2 GB 2\text{GB} 2GB。
- 编址方式 :按字编址。这意味着每一个地址单元对应一个"字"的大小(即 4 4 4 字节)。
2. 计算寻址范围
寻址范围指的是内存中总共有多少个可编址的单位(在这里是"字")。
计算公式为:
寻址范围 = 总容量 编址单位的大小 \text{寻址范围} = \frac{\text{总容量}}{\text{编址单位的大小}} 寻址范围=编址单位的大小总容量
代入数据:
寻址范围 = 2 GB 4 B \text{寻址范围} = \frac{2\text{GB}}{4\text{B}} 寻址范围=4B2GB
因为 1 GB = 1024 MB 1\text{GB} = 1024\text{MB} 1GB=1024MB,所以:
寻址范围 = 2 × 1024 MB 4 B = 2048 MB 4 = 512 M \text{寻址范围} = \frac{2 \times 1024\text{MB}}{4\text{B}} = \frac{2048\text{MB}}{4} = 512\text{M} 寻址范围=4B2×1024MB=42048MB=512M

PCI总线:是目前微型机上广泛采用的内总线,采用并行传输方式。

程序中用到的是虚拟地址,硬件中访问的通常是物理地址

这个知识点很常见,不过这道题考的比较细致,我们经常会把CPU的干预和CPU等待高混淆,正确的是两者都不需要CPU进行等待,保证了某种意义上的并行,但不是说不需要CPU干预,尤其是中断方式,是需要CPU搬运数据的。

1. 三种寻址方式的详细对比
-
立即寻址 (Immediate Addressing)
- 原理: 操作数直接就在指令中。
- 过程: CPU 在"取指令"阶段,指令和操作数就一起被取到了 CPU 内部。
- 访问次数: 0 次额外访问(指令取到手,数据也就到手了)。
- 速度: 最快。
-
寄存器寻址 (Register Addressing)
- 原理: 指令中给出的是寄存器的编号,操作数存放在 CPU 内部的寄存器里。
- 过程: CPU 取指、译码后,需要去指定的寄存器里读一下数据。
- 访问次数: 1 次寄存器访问。虽然寄存器在 CPU 内部,速度极快,但比起立即寻址还是多了一个动作。
- 速度: 次之。
-
直接寻址 (Direct Addressing)
- 原理: 指令中给出的是操作数在主存(内存)中的地址。
- 过程: CPU 取指、译码后,必须根据地址去访问一次内存才能拿到数据。
- 访问次数: 1 次访存操作。内存的访问速度远慢于 CPU 内部的寄存器和指令执行速度。
- 速度: 最慢。
2. 总结排序
按照获取操作数的速度从快到慢排列为:
立即寻址 > 寄存器寻址 > 直接寻址
(如果还有"间接寻址",它需要多次访存,速度会比直接寻址更慢。)

-
循环冗余校验 (CRC):
- 它的核心原理是利用多项式除法。
- 在计算校验位时,将数据看作一个长多项式,除以一个固定的生成多项式。这个除法过程是模2运算(即模2除法,不借位的除法,其加减法等同于异或操作)。
- 除法得到的余数即为校验位(FCS,帧校验序列)。
-
奇偶校验 (A和B):
- 虽然奇偶校验在本质上也可以看作是模2加法(异或),但通常直接描述为"统计1的个数"。在考题语境中,当提到"采用模2运算来构造"这种数学化描述时,通常特指 CRC。
-
海明码 ©:
- 海明码是利用多个奇偶校验位来确定出错的具体位置,它具备检错和纠错能力。虽然也涉及异或,但其最显著的标签是"纠错"。
总结:
在各类计算机水平考试(如软考)中,"模2运算" (特别是模2除法)是循环冗余校验 (CRC) 的标志性关键词。
因此,选项 D 是正确答案。

1. 拆解二进制序列
给定的二进制串是:1 0001 0 0000000001
根据题目给出的格式图:
- 阶符(1位) :
1 - 阶码(4位) :
0001 - 数符(1位) :
0 - 尾数(10位) :
0000000001
2. 计算阶码(指数部分)
题目说明"阶码以补码表示"。通常在这种格式中,阶符是整个阶码部分的最高位(符号位),所以阶码是一个 5 位的补码。
- 二进制补码:
10001 - 转换为十进制:
由于最高位是1,这是一个负数。
方法一:按权展开, − 1 × 2 4 + 0 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0 = − 16 + 1 = − 15 -1 \times 2^4 + 0 \times 2^3 + 0 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = -16 + 1 = -15 −1×24+0×23+0×22+0×21+1×20=−16+1=−15。
方法二:取反加1得原码。10001取反为01110,加1为01111,其绝对值为 15 15 15,故真值为 − 15 -15 −15。 - 所以,阶码 E = − 15 E = -15 E=−15。
3. 计算尾数(数值部分)
题目说明"尾数以原码表示",且"允许非规格化表示"。
- 数符 :
0,表示正数。 - 尾数 :
0000000001。 - 在浮点数标准中,尾数通常表示为一个纯小数。由于有 10 位,且这是非规格化表示(不隐含领先的 1),其值为:
0.0000000001 2 = 1 × 2 − 10 0.0000000001_2 = 1 \times 2^{-10} 0.00000000012=1×2−10 - 所以,尾数 M = 2 − 10 M = 2^{-10} M=2−10。
4. 组合得到浮点数值
浮点数的通用公式为: 值 = 尾数 × 2 阶码 \text{值} = \text{尾数} \times 2^{\text{阶码}} 值=尾数×2阶码
代入我们计算出的值:
值 = 2 − 10 × 2 − 15 = 2 − 15 × 2 − 10 \text{值} = 2^{-10} \times 2^{-15} = 2^{-15} \times 2^{-10} 值=2−10×2−15=2−15×2−10
5. 结论
对比题目选项:
- A. 2 − 16 × 2 − 10 2^{-16} \times 2^{-10} 2−16×2−10
- B. 2 − 15 × 2 − 10 2^{-15} \times 2^{-10} 2−15×2−10
- C. 2 − 16 × ( 1 − 2 − 10 ) 2^{-16} \times (1 - 2^{-10}) 2−16×(1−2−10)
- D. 2 − 15 × ( 1 − 2 − 10 ) 2^{-15} \times (1 - 2^{-10}) 2−15×(1−2−10)
计算结果与选项 B 完全吻合。
因此,正确答案是 B。
二、程序设计语言基础

核心概念解析:
- 绑定 (Binding):指将一个标识符(如函数名、变量名)与其对应的属性(如内存地址、代码段)联系起来的过程。简单来说,就是确定"这个名字对应哪段具体代码"的过程。
- 静态绑定 (Static Binding) :也称前期绑定。指在编译或链接阶段就已经确定了调用哪个具体的函数。
- 动态绑定 (Dynamic Binding) :也称后期绑定。指在程序运行时(Runtime),根据对象的实际类型来决定调用哪一段代码。这通常与面向对象编程中的"多态性"密切相关。
题目分析:
题目明确指出是在"运行时"将调用和对应的执行代码结合。根据上述定义:
- 运行时结合 = 动态绑定。
选项对比:
- A. 强类型 和 B. 弱类型:描述的是编程语言对数据类型检查的严格程度,与代码结合机制无关。
- C. 静态绑定:是在编译阶段结合,不符合题干中的"运行时"。
- D. 动态绑定:完全符合题意。
因此,正确答案是 D。

1. 编译过程的各阶段及功能
- 词法分析 (Lexical Analysis) :
- 输入:源程序(字符流)。
- 功能:识别出单词(Token),如关键字、标识符、常数等。
- 输出:记号流(Token序列)。
- 检查错误:词法错误(如非法的字符、拼写错误的关键字)。
- 语法分析 (Syntax Analysis) :
- 输入 :记号流(Token序列) ------ 对应题目第一个空。
- 功能:根据语法规则将单词组成各类语法单位(如表达式、语句、程序)。
- 检查错误 :语法结构错误 。例如:括号不配对 、缺少分号、控制语句结构不完整(如
if后面没跟条件)等 ------ 对应题目第二个空。
- 语义分析 (Semantic Analysis) :
- 功能:检查程序是否符合语言定义的语义规则。
- 检查错误:语义错误。例如:变量未定义就使用、赋值时类型不匹配、运算对象类型不兼容。
- 中间代码生成:生成一种独立于机器的中间语言代码(如四元式)。
- 代码优化:对中间代码进行变换,提高执行效率。
- 目标代码生成:将中间代码转换成特定机器的汇编语言或机器语言。
2. 针对本题的解析
- 第一个空 :语法分析阶段的输入是记号流(或称单词流/Token流)。它是词法分析阶段的产出。
- 第二个空 :括号不配对属于语法结构上的问题。词法分析只管单词对不对,不管单词怎么组合;语义分析管意思对不对。这种结构上的逻辑错误是由 语法分析 阶段负责的。
结论:
题目问:"若程序中的括号不配对,则会在 ( ) 阶段检查出该错误"。
根据分析,应选 B. 语法分析。
知识点小结(常考点):
- 词法错误:非法的字符。
- 语法错误:括号不匹配、结构不完整。
- 语义错误:类型不匹配、变量未定义。
三、数据结构

1. 优先队列的实现数据结构
优先队列是一种特殊的队列,其中的每个元素都有一个"优先级"。在优先队列中,出队顺序是根据优先级高低来决定的,而不是简单的先进先出。
- 堆(Heap):通常是二叉堆,是实现优先队列最有效、最常用的数据结构。它可以保持半有序状态,使得获取最大或最小元素(最高优先级)非常快。
- 栈(Stack):后进先出(LIFO),不适合实现优先队列。
- 队列(Queue):普通队列是先进先出(FIFO),无法处理优先级。
- 线性表(Linear List) :虽然可以用数组或链表实现,但插入或删除操作的时间复杂度通常较高(为了保持有序需要 O ( n ) O(n) O(n),如果不保持有序,查找最高优先级需要 O ( n ) O(n) O(n))。
因此,第一空应填:堆。
2. 插入元素的时间复杂度
在基于二叉堆实现的优先队列中:
- 插入操作 :将新元素放在堆的末尾,然后进行"上滤"(Heapify Up)操作以恢复堆属性。因为堆是一个完全二叉树,其高度为 log 2 n \log_2 n log2n,所以插入一个元素的时间复杂度为 O ( log n ) O(\log n) O(logn)。


详情可看博客:中级软考(软件工程师)算法特辑------常考的六大基础排序算法,介绍的很详细

这道题考查的是**二叉排序树(Binary Sort Tree, BST)**的基本性质以及平衡二叉树的相关概念。
下面对各个选项进行详细分析:
A. 对二叉排序树进行中序遍历,不可能得到结点关键字的有序序列
- 错误。
- 二叉排序树的一个核心性质就是:中序遍历(左-根-右)得到的结果一定是一个递增的有序序列。这是二叉排序树最基础的特征之一。
B. 依据关键字无序的序列建立二叉排序树,也可能构造出单支树
- 正确。
- 虽然序列被称为"无序"(通常指随机给出,而非预先排好序),但如果这组数据恰好是按递增 或递减 的顺序输入的(例如输入序列为 1 , 2 , 3 , 4 , 5 1, 2, 3, 4, 5 1,2,3,4,5),那么构造出来的二叉排序树就会退化成一个单支树 (形状像链表一样,每个节点只有一个子节点)。题目中使用了"可能"二字,因此该表述是正确的。
C. 若构造二叉排序树时进行平衡化处理,则根结点的左子树结点数与右子树结点数的差值一定不超过1
- 错误。
- 平衡化处理(如构造 AVL 树 )主要控制的是子树的高度差(平衡因子),使其绝对值不超过 1。
- 由于树的形态不同,高度差不超过 1 并不代表节点数的差值也不超过 1。例如,一个根节点的左子树高度为 2(有 3 个节点),右子树高度为 1(有 1 个节点),这依然满足 AVL 树的高度平衡要求,但节点数的差值为 2,超过了 1。
D. 若构造二叉排序树时进行平衡化处理,则根结点的左子树高度与右子树高度的差值一定超过1
- 错误。
- 这与平衡二叉树的定义完全相反。平衡二叉树的要求是任意节点的左、右子树高度差(平衡因子)的绝对值不超过 1 (即 ≤ 1 \le 1 ≤1),而不是超过 1。

| 特性 | B-树 (B树) | B+树 |
|---|---|---|
| 关键字与子树 | n n n 个关键字, n + 1 n+1 n+1 个子树 | n n n 个关键字, n n n 个子树 |
| 数据存储 | 所有节点都存数据 | 只有叶子节点存数据 |
| 叶子节点链接 | 不链接 | 通过指针串联(有序链表) |
| 查询性能 | 路径不固定,有的很快有的慢 | 路径固定(必须查到叶子),更稳定 |
| 适用场景 | 内存索引、随机检索 | 数据库磁盘索引、范围检索 |
根据表格所述,D选项为B+树的特性,所以这道题选D。
我们需要注意,A选项的说明是通用的,两者都适合,和表格的子树并不冲突,这里描述的是m阶。

核心知识点
- 完全图的边数 :一个具有 n n n 个顶点的无向完全图(即每两个顶点之间都有一条边)的边数为 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n−1)。
- 非连通图的最大边数定理 :若一个无向图 G G G 有 n n n 个顶点且是非连通 的,则它的边数 E E E 最大不能超过其 ( n − 1 ) (n-1) (n−1) 个顶点构成完全图时的边数。即:
E ≤ ( n − 1 ) ( n − 2 ) 2 E \le \frac{(n-1)(n-2)}{2} E≤2(n−1)(n−2)
原理:为了让图不连通,最极端的情况是其中 n − 1 n-1 n−1 个顶点构成一个完全图,而第 n n n 个顶点是孤立的。
解题步骤
题目已知边数 E = 28 E = 28 E=28,且图为非连通图,求顶点数 n n n 的最小值。
根据上述公式,我们有:
28 ≤ ( n − 1 ) ( n − 2 ) 2 28 \le \frac{(n-1)(n-2)}{2} 28≤2(n−1)(n−2)
将公式变形:
56 ≤ ( n − 1 ) ( n − 2 ) 56 \le (n-1)(n-2) 56≤(n−1)(n−2)
我们需要找一个最小的正整数 n n n,使得 ( n − 1 ) × ( n − 2 ) (n-1) \times (n-2) (n−1)×(n−2) 的积大于或等于 56 56 56:
- 若 n = 8 n=8 n=8,则 ( 8 − 1 ) × ( 8 − 2 ) = 7 × 6 = 42 (8-1) \times (8-2) = 7 \times 6 = 42 (8−1)×(8−2)=7×6=42。 42 < 56 42 < 56 42<56,说明 8 8 8 个顶点的图如果有 28 28 28 条边,必然是连通的。
- 若 n = 9 n=9 n=9,则 ( 9 − 1 ) × ( 9 − 2 ) = 8 × 7 = 56 (9-1) \times (9-2) = 8 \times 7 = 56 (9−1)×(9−2)=8×7=56。 56 ≥ 56 56 \ge 56 56≥56,条件成立。
这意味着当顶点数为 9 9 9 时,可以让 8 8 8 个顶点构成一个完全图(拥有 28 28 28 条边),而剩下的第 9 9 9 个顶点是孤立的,从而满足"非连通图"且"有 28 28 28 条边"的条件。
结论
图 G G G 至少有 9 个顶点。
因此,正确答案是 B。

核心分析:
-
深度优先遍历 (DFS) 的基本过程:
- 从某个顶点出发,访问它,并标记为已访问。
- 依次检查该顶点的所有邻接点,如果邻接点未被访问,则递归地进行 DFS。
-
在邻接矩阵(数组表示法)下的执行情况:
- 查找邻接点的时间 :在邻接矩阵中,要查找一个顶点 i i i 的所有邻接点,必须完整地扫描矩阵中第 i i i 行的所有 n n n 个元素。
- 总次数 :图中共有 n n n 个顶点,每个顶点在遍历过程中都会作为起始点去查找一次邻接点。
- 计算公式 :查找一个顶点的邻接点耗时 O ( n ) O(n) O(n),总共有 n n n 个顶点,因此总的时间复杂度为 n × O ( n ) = O ( n 2 ) n \times O(n) = \mathbf{O(n^2)} n×O(n)=O(n2)。
知识点对比(常考点):
- 邻接矩阵存储 :无论边数 e e e 有多少,查找邻接点都必须扫描整行。时间复杂度为 O ( n 2 ) O(n^2) O(n2)。
- 邻接表存储 :查找邻接点只需要遍历该顶点对应的链表。总的查找次数等于所有顶点的出度之和(即边数)。时间复杂度为 O ( n + e ) O(n+e) O(n+e)。
结论:
由于题目明确指出采用数组表示法(邻接矩阵) ,因此在遍历过程中,访问每个顶点时都需要扫描一行( n n n个元素)来寻找邻接点。
因此,正确答案是 A。

切记:无向连通图两个顶点之间不一定有边,但是路径是可以存在的。
注意点 :"边"是直达,"路径"是转乘,所以说A是错误的。

在树结构中,总边数等于所有节点度数之和,同时等于总节点数减一。设叶子结点数为n₀,总节点数为7+5+8+10+n₀ = 30+n₀。总度数之和计算为4×7 +3×5 +2×8 +1×10 = 69。根据树的性质,69 = (30+n₀)-1,解得n₀ = 40。选项C符合计算结果。

在二叉树中,如果从根结点开始按层序(自上而下、每层自左向右)进行编号(从 1 开始编号),结点 i i i 与其孩子结点的编号之间存在如下固定的数学关系:
1. 核心性质
对于编号为 i i i 的结点:
- 其左孩子 结点的编号为:2 i 2i 2i
- 其右孩子 结点的编号为:2 i + 1 2i + 1 2i+1
- 其父结点的编号为:⌊ i / 2 ⌋ \lfloor i / 2 \rfloor ⌊i/2⌋(向下取整,根结点除外)
2. 结合题目条件分析
题目中给出两个结点的编号分别为 m m m 和 n n n,且满足关系式:
n = 2 m + 1 n = 2m + 1 n=2m+1
根据上述二叉树的性质:
- 如果我们要找编号为 m m m 的结点的左孩子 ,它的编号应该是 2 m 2m 2m。
- 如果我们要找编号为 m m m 的结点的右孩子 ,它的编号应该是 2 m + 1 2m + 1 2m+1。
因为题目给出的条件正是 n = 2 m + 1 n = 2m + 1 n=2m+1,这说明 n n n 是 m m m 的右孩子。
3. 验证
我们可以用题目中提到的例子验证一下:
- 根结点编号为 1 1 1(即 m = 1 m=1 m=1)。
- 它的右孩子编号为 3 3 3。
- 代入公式: n = 2 × 1 + 1 = 3 n = 2 \times 1 + 1 = 3 n=2×1+1=3。完全吻合。
结论
- A : m m m 是 n n n 的左孩子(错误, m m m 是父结点)
- B : m m m 是 n n n 的右孩子(错误, m m m 是父结点)
- C : n n n 是 m m m 的左孩子(错误, m m m 的左孩子应该是 2 m 2m 2m)
- D :n n n 是 m m m 的右孩子 (正确)
因此,正确答案是 D。

给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。所以D选项的说法正确。
在构造哈夫曼树的过程中不能保证一定是完全树或是平衡树,因此A、B选项错误,而对于哈夫曼树左右孩子结点的权值之和构造其父结点,因此父结点权值一定大于其左右孩子结点,因此C选项错误。

这道题很有意思,其实只要画出一个哈夫曼树即可,但是这个树的构建还是有一点困难的。

哈夫曼树的每一个动作,都必须遵循一个铁律:在当前所有剩下的"数字"里,挑最小的两个。
- 初始状态(排序后):
[4, 5, 8, 13, 17, 24, 34] - 第一次合并(4+5):
生成新数字 9 。现在列表变成:[8, 9, 13, 17, 24, 34](注意:我重新排了序) - 第二次合并(8+9):
生成新数字 17(内) 。现在列表变成:[13, 17, 17(内), 24, 34]
(注:这里有两个17,一个是原有的17,一个是刚合出来的。)
关键的第三步来了!
现在你的列表里有:13, 17, 17(内), 24, 34。
你要挑最小的两个。
- 最小的是 13。
- 次小的是 17。
- 24 是排在后面的,它比 13、17、17(内) 都大。
所以,你必须让 13 和 17 合并! 即使你心里想让 24 去凑热闹,规则也不允许,因为 24 太大了,还没轮到它。
这里我们记着一点,一旦是新合成的节点,层级就得往上一步,如果是两个合并的节点中都是初始值,那就在同一层级。

这道题考查的是二维数组按行优先存储时的地址计算公式。
1. 核心公式
在二维数组 A A A 中,假设每个元素占用 L L L 个存储单元,按行优先方式存储,第一个元素为 A [ 0 ] [ 0 ] A[0][0] A[0][0],数组的总列数为 N N N,则元素 A [ i ] [ j ] A[i][j] A[i][j] 的地址公式为:
Addr ( A [ i ] [ j ] ) = Addr ( A [ 0 ] [ 0 ] ) + ( i × N + j ) × L \text{Addr}(A[i][j]) = \text{Addr}(A[0][0]) + (i \times N + j) \times L Addr(A[i][j])=Addr(A[0][0])+(i×N+j)×L
2. 解题步骤
第一步:求出数组的列数 N N N
题目给出:
- 基地址 Addr ( A [ 0 ] [ 0 ] ) = 100 \text{Addr}(A[0][0]) = 100 Addr(A[0][0])=100
- 元素大小 L = 2 L = 2 L=2
- 元素 A [ 3 ] [ 3 ] A[3][3] A[3][3] 的地址为 220 220 220
代入公式:
100 + ( 3 × N + 3 ) × 2 = 220 100 + (3 \times N + 3) \times 2 = 220 100+(3×N+3)×2=220
( 3 N + 3 ) × 2 = 120 (3N + 3) \times 2 = 120 (3N+3)×2=120
3 N + 3 = 60 3N + 3 = 60 3N+3=60
3 N = 57 3N = 57 3N=57
N = 19 N = 19 N=19
得出该数组每行有 19 19 19 个元素(列数为 19 19 19)。
第二步:计算元素 A [ 5 ] [ 5 ] A[5][5] A[5][5] 的地址
现在已知 N = 19 N = 19 N=19,求 A [ 5 ] [ 5 ] A[5][5] A[5][5] 的地址:
Addr ( A [ 5 ] [ 5 ] ) = 100 + ( 5 × 19 + 5 ) × 2 \text{Addr}(A[5][5]) = 100 + (5 \times 19 + 5) \times 2 Addr(A[5][5])=100+(5×19+5)×2
Addr ( A [ 5 ] [ 5 ] ) = 100 + ( 95 + 5 ) × 2 \text{Addr}(A[5][5]) = 100 + (95 + 5) \times 2 Addr(A[5][5])=100+(95+5)×2
Addr ( A [ 5 ] [ 5 ] ) = 100 + 100 × 2 \text{Addr}(A[5][5]) = 100 + 100 \times 2 Addr(A[5][5])=100+100×2
Addr ( A [ 5 ] [ 5 ] ) = 100 + 200 = 300 \text{Addr}(A[5][5]) = 100 + 200 = 300 Addr(A[5][5])=100+200=300
3. 结论
元素 A [ 5 ] [ 5 ] A[5][5] A[5][5] 的地址是 300。
对应选项,正确答案是 A。
四、操作系统知识

在单处理机系统中,同一时刻只能有一个进程处于"运行"状态。当正在运行的进程 P1 发生某种事件导致状态改变时,系统会根据就绪队列的情况重新调度。
目前的初始状态是:
- P1:运行态(Running)
- P2:就绪态(Ready)
- P3:等待态(Waiting,等待打印机)
- P4:等待态(Waiting,等待扫描仪)
根据 P1 发生的动作,我们可以推算出所有对应的状态变化:
情况 1:若 P1 "等待/阻塞"(如请求 I/O 或等待某信号)
- P1 :由"运行"变为 等待。
- P2 :因为 P1 让出了处理机,P2 又是就绪队列中唯一的进程,所以 P2 由"就绪"变为 运行。
- P3 :依然在 等待 打印机。
- P4 :依然在 等待 扫描仪。
- 状态总结:(等待, 运行, 等待, 等待)
情况 2:若 P1 "时间片到"(A 选项)
- P1 :由"运行"变为 就绪(进入就绪队列末尾)。
- P2 :由"就绪"变为 运行。
- P3 :依然在 等待。
- P4 :依然在 等待。
- 状态总结:(就绪, 运行, 等待, 等待)
情况 3:若 P1 "释放了打印机"(C 选项)
- 注意:P1 只是释放了资源,并没有结束或阻塞。
- P1 :依然保持 运行。
- P3 :因为等待的资源(打印机)被释放,满足了运行条件,由"等待"变为 就绪(排在 P2 之后)。
- P2 :依然保持 就绪。
- P4 :依然在 等待 扫描仪。
- 状态总结:(运行, 就绪, 就绪, 等待)
情况 4:若 P1 "释放了扫描仪"(B 选项)
- P1 :依然保持 运行。
- P4 :因为等待的资源(扫描仪)被释放,由"等待"变为 就绪。
- P2 :依然保持 就绪。
- P3 :依然在 等待 打印机。
- 状态总结:(运行, 就绪, 等待, 就绪)
情况 5:若 P1 "已完成"(D 选项)
- P1 :退出/消亡。
- P2 :由"就绪"变为 运行。
- P3 :依然在 等待。
- P4 :依然在 等待。
- 状态总结:(无/退出, 运行, 等待, 等待)
考试常见答案:
在实际的这类软考题目中,通常题目问的是 "若 P1 阻塞" (进入等待状态)。
此时对应的结果是:P1 等待,P2 运行,P3 等待,P4 等待。
关键点总结:
- 只要 P1 离开"运行"态(无论是阻塞、时间片到还是完成),P2 必然变为"运行"态,因为它是目前唯一的就绪进程。
- 若 P1 只是释放了 P3/P4 所需的资源,P1 仍旧运行,而对应的 P3/P4 会进入 就绪 状态。

这道题考察的是磁盘访问时间的计算。读取一个文件的总时间通常由寻道时间 、旋转延迟时间 和传输时间三部分组成。
1. 计算读取"一个"数据块所需的时间:
- 寻道时间 (Seek Time) :指磁头移动到目标磁道所需的时间。
- 平均移动距离为 5 个磁道,移动一个磁道需 2ms。
- 寻道时间 = 5 × 2 = 10 ms = 5 \times 2 = 10\text{ ms} =5×2=10 ms。
- 旋转延迟时间 (Rotational Latency) :指目标扇区旋转到磁头下方所需的时间。
- 题目已知每块的旋转延迟时间为 10 ms 10\text{ ms} 10 ms。
- 传输时间 (Transfer Time) :指从磁盘读取数据并传输到内存的时间。
- 题目已知每块的传输时间为 1 ms 1\text{ ms} 1 ms。
读取一个数据块的总时间 = 10 ms ( 寻道 ) + 10 ms ( 旋转 ) + 1 ms ( 传输 ) = 21 ms = 10\text{ ms} (\text{寻道}) + 10\text{ ms} (\text{旋转}) + 1\text{ ms} (\text{传输}) = 21\text{ ms} =10 ms(寻道)+10 ms(旋转)+1 ms(传输)=21 ms。
2. 计算读取"100 个"数据块的总时间:
由于文件在磁盘上是非连续存放的,这意味着读取每一个逻辑上相邻的数据块时,磁头都需要重新进行寻道操作并等待磁盘旋转到对应的扇区。
- 总时间 = 读取一个块的时间 × 块数 = \text{读取一个块的时间} \times \text{块数} =读取一个块的时间×块数
- 总时间 = 21 ms/块 × 100 块 = 2100 ms = 21\text{ ms/块} \times 100\text{ 块} = 2100\text{ ms} =21 ms/块×100 块=2100 ms。
结论:
读取这个 100 块的文件共需要 2100 ms。
对应选项,正确答案是 C。

一、 核心参数核算
- 磁盘转速 : 10 ms/ 10\text{ms/} 10ms/周。一圈有 10 个块,所以磁头经过 1 个物理块的时间 是 1 ms 1\text{ms} 1ms(即读取时间)。
- 记录处理时间 : 2 ms 2\text{ms} 2ms(在此期间,磁盘不停,继续旋转)。
- 单缓冲区特性 :系统必须先读取 (花费 1 ms 1\text{ms} 1ms)记录到缓冲区,然后处理 (花费 2 ms 2\text{ms} 2ms)。在处理期间,缓冲区被占用,磁头不能读取下一个记录。
二、 问题 (27) 解析:最长时间(非优化排列)
记录按 R1、R2...R10 顺序存储在物理块 1、2...10 中。
- 处理 R1 :
- 0 ms 0\text{ms} 0ms:磁头在 R1(块1)开头,开始读取。
- 1 ms 1\text{ms} 1ms:R1 读取完毕,磁头到达块 2 的开头。
- 1 ms ∼ 3 ms 1\text{ms} \sim 3\text{ms} 1ms∼3ms:CPU 处理 R1(耗时 2 ms 2\text{ms} 2ms)。
- 关键位置 :到 3 ms 3\text{ms} 3ms 时,处理完成,但磁盘一直在转。因为每毫秒转 1 块,所以磁头此时已经转到了块 4 的开头。
- 定位 R2 :
- 系统现在想读 R2(在块 2),但块 2 刚刚已经转过去了。磁头必须等磁盘转完几乎一整圈,重新回到块 2 的开头。
- 磁头目前在块 4 头,回到块 2 头需要经过块 4, 5, 6, 7, 8, 9, 10, 1,共 8 个块,耗时 8 ms 8\text{ms} 8ms。
- R2 开始读取的时间 = 3 ms 3\text{ms} 3ms(处理完)+ 8 ms 8\text{ms} 8ms(旋转等待)= 11 ms 11\text{ms} 11ms。
- 推导规律 :
- 读取并处理完 R1 并让磁头重新定位到 R2 开头 总共耗时 11 ms 11\text{ms} 11ms。
- 同理,从 R2 开头到 R3 开头也要 11 ms 11\text{ms} 11ms。
- 前 9 个记录(R1 到 R9)共耗时: 9 × 11 ms = 99 ms 9 \times 11\text{ms} = 99\text{ms} 9×11ms=99ms。
- 此时,磁头刚好到达 R10(块 10)的开头。
- 处理最后一个 R10 :
- 读取 R10( 1 ms 1\text{ms} 1ms)+ 处理 R10( 2 ms 2\text{ms} 2ms)= 3 ms 3\text{ms} 3ms。
- 总时间 = 99 ms + 3 ms = 102 m s 99\text{ms} + 3\text{ms} = \mathbf{102ms} 99ms+3ms=102ms。 (对应选项 D)
三、 问题 (28) 解析:最短时间(优化排列)
优化目标:当 CPU 处理完上一个记录时,磁头恰好转到下一个记录的起始位置。
- 计算间隔 :
- 读取( 1 ms 1\text{ms} 1ms)+ 处理( 2 ms 2\text{ms} 2ms)= 3 ms 3\text{ms} 3ms。
- 这说明为了不等待,逻辑上的下一个记录应该放在距离上一个记录 3 个物理块之后的位置。
- 优化排列方案 :
- R1 放在块 1。
- R2 放在块 4(R1 读完 1 ms 1\text{ms} 1ms,处理完 3 ms 3\text{ms} 3ms,磁头正好到块 4)。
- R3 放在块 7... 依此类推。
- 计算总时间 :
- 在这种完美配合下,处理每个记录只需要 1 ms ( 读 ) + 2 ms ( 处 ) = 3 ms 1\text{ms}(\text{读}) + 2\text{ms}(\text{处}) = 3\text{ms} 1ms(读)+2ms(处)=3ms。
- 总时间 = 10 × 3 ms = 30 m s 10 \times 3\text{ms} = \mathbf{30ms} 10×3ms=30ms。 (对应选项 A)

1. 核心理论:不发生死锁的条件
在一个系统中,如果有 n n n 个进程,每个进程对某种资源 R R R 的最大需求量为 i i i 个,资源的总数为 m m m。
要保证系统一定不会 发生死锁,必须满足以下公式:
m ≥ n × ( i − 1 ) + 1 m \ge n \times (i - 1) + 1 m≥n×(i−1)+1
这个公式的直观理解是:在最坏的情况下,每个进程都拿到了它所需要资源数减 1 1 1 个(此时谁也运行不完,处于死锁边缘),只要系统再多出 1 1 1 个资源,就能打破僵局,让其中一个进程运行完并释放资源。
2. 解题步骤
根据题目已知条件:
- 资源总数 m = 8 m = 8 m=8
- 进程数 n = 3 n = 3 n=3
- 每个进程的需求量为 i i i
第一步:求不发生死锁的最大 i i i 值
代入公式:
8 ≥ 3 × ( i − 1 ) + 1 8 \ge 3 \times (i - 1) + 1 8≥3×(i−1)+1
7 ≥ 3 × ( i − 1 ) 7 \ge 3 \times (i - 1) 7≥3×(i−1)
2.33 ≥ i − 1 2.33 \ge i - 1 2.33≥i−1
3.33 ≥ i 3.33 \ge i 3.33≥i
这意味着,当 i i i 取 1 , 2 , 3 1, 2, 3 1,2,3 时,系统是绝对安全的,永远不会发生死锁。
第二步:求可能发生死锁的最小 i i i 值
既然 i ≤ 3 i \le 3 i≤3 是安全的,那么第一个破坏安全条件的整数就是 i = 4 i = 4 i=4。
3. 情景模拟(验证 i = 4 i=4 i=4)
假设每个进程都需要 4 4 4 个资源:
- P 1 P1 P1 拿到了 3 3 3 个资源;
- P 2 P2 P2 拿到了 3 3 3 个资源;
- P 3 P3 P3 拿到了 2 2 2 个资源。
- 此时总分配资源数 : 3 + 3 + 2 = 8 3 + 3 + 2 = 8 3+3+2=8(正好耗尽了系统所有资源)。
结果 :
P 1 P1 P1 还在等 1 1 1 个资源, P 2 P2 P2 在等 1 1 1 个资源, P 3 P3 P3 在等 2 2 2 个资源。由于系统已经没资源可分了,三个进程进入永久等待状态,发生死锁。
结论:
该系统可能会发生死锁的最小 i i i 值为 4。
因此,正确答案是 D。

核心解析:
题干中的关键信息是 "对应用层的通信数据流进行监控和过滤"。
-
包过滤防火墙 (Packet Filtering):
- 主要工作在 网络层 (IP地址)和 传输层(端口号)。
- 它只检查数据包的报头,不关心数据包里面的具体内容(即应用层数据)。
- 速度快,但安全性较低,无法防范深层攻击。
-
应用级网关防火墙 (Application-level Gateway):
- 也称为"代理防火墙",主要工作在 应用层(OSI模型的第七层)。
- 它能够理解各种应用协议(如 HTTP、FTP、Telnet 等),可以拆开数据包,检查里面的具体业务数据流。
- 因为它能监控到应用层,所以完全符合题干描述的"对应用层通信数据流进行监控和过滤"。
-
数据库 (Database) 和 Web:
- 这两个选项不属于防火墙的基本分类类型。
结论:
由于题目强调了"应用层"的监控能力,这正是应用级网关的典型特征。
因此,正确答案是 B。

选项分析:
- A. ACL (访问控制列表,Access Control List):这是防火墙最核心的功能之一。它通过定义一系列规则,根据源IP地址、目的IP地址、协议类型、端口号等条件,来决定是否允许某个数据包通过。配置 ACL 规则是阻止外部未授权用户访问内部网络最直接、最常用的手段。
- B. SNAT (源网络地址转换,Source NAT):主要用于隐藏内部网络的真实 IP 地址,让多个内网用户共用一个外网公网 IP 访问互联网。它虽然能提供一定的隐蔽性,但主要功能不是访问控制。
- C. 入侵检测 (IDS):侧重于对网络流量进行实时监控,发现可疑行为或攻击时发出警报。它通常是"监视器",而不像防火墙那样直接在流量出口执行"拦截"指令。
- D. 防病毒:主要用于识别和拦截流量中的恶意代码(如病毒、木马),而不是针对用户访问授权进行管理。
结论:
通过配置 ACL 规则,管理员可以明确禁止来自特定外部地址或所有未授权外部用户的访问请求,从而保护内部网络安全。
因此,正确答案是 A。

这道题考查的是 OSI 七层参考模型 中各层的功能定义。
解析:
- A. 物理层 (Physical Layer) :主要任务是透明地传送比特流 (bit stream),定义了电压、线缆插头等物理特性,但它本身不提供纠错和可靠性保证,只是负责传输。
- B. 数据链路层 (Data Link Layer) :它的核心功能是在物理层提供的服务基础上,通过差错控制、流量控制和帧同步等手段,将一条有差错的物理线路转变为逻辑上无差错的数据链路 。简而言之,它负责在物理线路上提供可靠的数据传输。
- C. 网络层 (Network Layer):负责路由选择、拥塞控制和网际互连,主要处理数据包(Packet)的跨网络传输,而不是针对"物理线路"的可靠性。
- D. 应用层 (Application Layer):是最高层,直接为用户的应用进程提供网络服务(如 HTTP、FTP),不涉及底层的物理线路传输。
结论:
题目中提到的关键点"物理线路上 "和"提供可靠的数据传输 "正是数据链路层的定义特征。
因此,正确答案是 B。

这道题考查的是电子邮件相关的应用层协议。
核心解析:
在电子邮件系统中,不同的动作由不同的协议负责:
-
SMTP (Simple Mail Transfer Protocol,简单邮件传输协议):
- 作用 :主要用于发送邮件。
- 它负责将邮件从客户端(如 Outlook、Foxmail)发送到邮件服务器,或者在邮件服务器之间进行转发。
- 关键词:发送、传输。
-
POP3 (Post Office Protocol version 3,邮局协议第3版):
- 作用 :主要用于接收(下载)邮件。
- 客户端通过该协议从服务器上把邮件抓取到本地电脑。通常下载后,邮件会从服务器上删除(除非特别设置)。
-
IMAP4 (Internet Message Access Protocol version 4,交互式邮件存取协议第4版):
- 作用 :也是用于接收和管理邮件。
- 与 POP3 不同的是,它在客户端和服务器之间进行双向同步,邮件保留在服务器上,方便在多个设备上查看。
-
MIME (Multipurpose Internet Mail Extensions,多用途互联网邮件扩展):
- 作用 :这不是传输协议,而是一种格式标准。
- 它扩展了邮件内容,使其能够支持非 ASCII 字符(如中文)、附件(图片、音视频等)。
结论:
题目问的是"向服务器发送邮件 "的协议,这正是 SMTP 的核心功能。
因此,正确答案是 A。

核心知识点:APIPA (自动私有 IP 地址)
当一台设置了"自动获取 IP 地址"的主机开机后,它会发送广播寻找 DHCP 服务器。如果经过多次尝试仍然 没有得到 DHCP 服务器的响应 ,操作系统(如 Windows)会启动一种自动配置机制,为自己分配一个临时地址,这种机制被称为 APIPA (Automatic Private IP Addressing)。
- 目的:允许主机在没有 DHCP 服务器的小型局域网内,依然可以与同一网段的其他主机进行基本通信。
- 保留地址段 :IANA 为此功能专门保留了一个 B 类地址段:169.254.0.1 到 169.254.255.254。
- 子网掩码 :通常为 255.255.0.0 (即 /16)。
选项分析:
- A. 202.117.0.0/24:这是一个公网 C 类地址。
- B. 192.168.1.0/24:这是一个常用的私有 C 类地址,通常由家用路由器通过 DHCP 分配。
- C. 172.16.0.0/16:这是一个私有 B 类地址范围内的地址。
- D. 169.254.0.0/16 :这正是标准定义的 APIPA 保留网段。
结论:
当主机无法从 DHCP 服务器获取地址时,它会自动获取一个以 169.254 开头的 IP 地址。
因此,正确答案是 D。

这道题考查的是 TCP/IP 协议族 与 OSI 参考模型中各层的功能对应关系。
核心解析:
题干中的关键点是 "建立连接" 和 "进行可靠通信"。
-
在 TCP/IP 架构中:
- 提供这种功能的协议是 TCP(传输控制协议)。
- TCP 通过"三次握手"建立连接,并提供超时重传、流量控制和拥塞控制,从而保证通信的可靠性。
- TCP 协议工作在 传输层。
-
在 OSI 参考模型(OSI/RM)中:
- 负责端到端(End-to-End)的连接管理、差错控制和流量控制,确保数据可靠传输的层级也是 传输层。
选项对比:
- A. 网络层 (Network Layer):在 TCP/IP 中由 IP 协议实现。它是无连接的、不可靠的,只负责尽力而为的报文转发和路由选择。
- B. 数据链路层 (Data Link Layer):负责物理链路上相邻节点间的帧传输和差错控制,不是端到端的可靠连接。
- C. 应用层 (Application Layer):直接面向用户应用,它依赖下层提供的传输能力,本身不负责底层的连接可靠性。
- D. 传输层 (Transport Layer):完全符合题干描述的功能定义。
结论:
建立连接进行可靠通信的功能在 TCP/IP 网络中由传输层协议(如 TCP)完成,在 OSI 模型中同样对应传输层。
因此,正确答案是 D。


这张图就是解析,一定要背下来这张图片
五、软件工程基础知识

选项分析:
- A. 能清晰地表达每个任务的开始时间、结束时间和持续时间
- 正确叙述:甘特图通过横条表示任务,横条的起点是开始时间,终点是结束时间,长度就是持续时间。这是它的基本功能。
- B. 能清晰地表达任务之间的并行关系
- 正确叙述:在甘特图中,如果两个任务的横条在时间轴上重叠,就表示它们是并行(同时)进行的,非常直观。
- C. 不能清晰地确定任务之间的依赖关系
- 正确叙述(甘特图的缺点) :传统的甘特图主要关注时间节点。虽然现代软件可以加箭头,但标准理论中认为甘特图难以显式地表达任务间的逻辑依赖关系(例如谁必须在谁之后开始)。这也是它和网络图(如PERT图)的主要区别。
- D. 能清晰地确定影响进度的关键任务
- 错误叙述 :关键任务(关键路径上的任务)是指那些一旦延误就会导致整个项目延期的任务。确定关键路径和关键任务是网络图(如PERT图、CPM图)的核心优势,而甘特图无法直接、清晰地确定关键任务。
结论:
题目要求选出"不正确 "的一项,根据以上分析,选项 D 描述的功能不是甘特图具备的,而是网络图的功能。
正确答案是:D

这道题考查的是项目管理进度管理工具------**PERT图(计划评审技术图)**的特点。在备考(如软考)时,通常会将 PERT图 与 甘特图(Gantt图) 进行对比记忆。
下面对各个选项进行详细分析:
A. 易于看出每个子任务的持续时间
- 描述正确。
- 在PERT图中,每个任务(通常用箭头或结点表示)上方或内部都会标注该任务的预计持续时间。因此,它是可以清晰看到的。
B. 易于看出目前项目的实际进度情况
- 描述错误(本题正确答案)。
- 这是甘特图的优势,却是PERT图的劣势。
- PERT图是一个静态的网络逻辑图,侧重于任务间的逻辑关系 和关键路径。它没有像甘特图那样基于日历的时间轴,因此很难直观地体现出"当前时间点,项目实际完成了多少"这种进度对比。
C. 易于看出子任务之间的衔接关系
- 描述正确。
- 这是PERT图最大的优点。它利用箭头清晰地展示了任务之间的先后顺序、依赖关系(谁是前置任务,谁是后置任务),而甘特图在表达复杂依赖关系方面较弱。
D. 易于识别出关键的子任务
- 描述正确。
- 通过计算PERT图中的最早开始时间和最晚开始时间,可以很容易地确定项目的关键路径。关键路径上的任务即为"关键子任务",这些任务的任何延迟都会直接导致整个项目工期的延长。
总结对比:甘特图 vs PERT图
| 特性 | 甘特图 (Gantt) | PERT图 |
|---|---|---|
| 主要重点 | 强调时间 和进度进度 | 强调任务逻辑关系 和关键路径 |
| 时间表达 | 直观(横条长短代表时间) | 需阅读数字标识 |
| 任务依赖 | 较弱,不直观 | 很强,非常直观 |
| 关键路径 | 无法直接看出 | 易于计算和识别 |
| 进度跟踪 | 非常易于查看实际进度 | 较难看出实际进度 |
结论:
由于PERT图不具备直观展示项目实时进度与计划对比的功能,选项 B 的叙述是不正确的。

Armstrong 公理系统是用于从给定的函数依赖集 F F F 推导出所有可能的函数依赖的一套完备的推理规则。它包含三条最基本的公理:
1. 公理内容解析
-
A. 自反律 (Reflexivity Rule):
- 内容:若 Y ⊆ X ⊆ U Y \subseteq X \subseteq U Y⊆X⊆U,则 X → Y X \rightarrow Y X→Y 被 F F F 所蕴涵。
- 解释:如果属性集 Y Y Y 是属性集 X X X 的子集,那么 X X X 自然能唯一确定 Y Y Y。例如,知道了"姓名和学号",当然能知道"学号"。这正是题目所求的选项。
-
B. 传递律 (Transitivity Rule) 的错误表述:
- 标准表述应为:若 X → Y X \rightarrow Y X→Y 且 Y → Z Y \rightarrow Z Y→Z,则 X → Z X \rightarrow Z X→Z。
- 选项 B 的后半部分表述有误(写成了 X → Y X \rightarrow Y X→Y)。
-
C. 分解律 (Decomposition Rule) 的推导过程:
- 若 X → Y X \rightarrow Y X→Y 且 Z ⊆ Y Z \subseteq Y Z⊆Y,根据自反律有 Y → Z Y \rightarrow Z Y→Z,再根据传递律可得 X → Z X \rightarrow Z X→Z。这是由公理推导出的定理,不是公理本身。
-
D. 合并律 (Union Rule):
- 内容:若 X → Y X \rightarrow Y X→Y 且 X → Z X \rightarrow Z X→Z,则 X → Y Z X \rightarrow YZ X→YZ。这也是一条推导出的定理。
2. 知识点总结(Armstrong 三大公理)
为了方便记忆,建议将这三条基础公理一起复习:
- 自反律: 若 Y ⊆ X Y \subseteq X Y⊆X,则 X → Y X \rightarrow Y X→Y。(对应选项 A)
- 增广律 (Augmentation Rule): 若 X → Y X \rightarrow Y X→Y,则对于任何属性集 Z Z Z,有 X Z → Y Z XZ \rightarrow YZ XZ→YZ。
- 传递律: 若 X → Y X \rightarrow Y X→Y 且 Y → Z Y \rightarrow Z Y→Z,则 X → Z X \rightarrow Z X→Z。
结论
题目要求找的是自反律 ,其定义完全符合选项 A。
正确答案是:A
六、结构化开发方法

1. 题目解析
- 情景:采购子系统计算出金额后,将"采购金额、收款方和采购日期"这几个信息传递给财务子系统。
- 动作 :传递的是具体的、离散的数据项。
- 结论 :当两个模块之间通过参数列表 传递简单的数据信息 (如数值、字符串、日期等)时,这种耦合类型被称为 数据耦合。
2. 选项详解与对比
为了让你彻底分清这几种耦合,我们对比来看:
A. 数据耦合 (Data Coupling) ------ [正确项]
- 定义 :两个模块间通过参数传递基本类型的数据。
- 本题情况:传递的是"金额"、"收款方"、"日期",这些是基础的业务数据,且财务系统通常会用到这些全部信息。这是耦合程度最低、最理想的一种耦合方式。
- 特点:模块间的接口简单,独立性强。
B. 标记耦合 (Stamp Coupling) ------ [易错项]
- 定义 :两个模块间传递的是数据结构 (如结构体、对象、记录),但接收模块只使用了其中的一部分数据。
- 区别 :
- 数据耦合:我需要盐和糖,你给我一包盐和一包糖(我全用了)。
- 标记耦合:我需要盐,你给我拎来一个调味盒(里面有盐、糖、醋、辣),但我只拿了里面的盐。
- 为什么本题不是 B:题目描述的是传递特定的信息,并没有提到传递了一个包含冗余信息的大数据包或复杂数据结构。
C. 控制耦合 (Control Coupling)
- 定义 :一个模块向另一个模块传递一个控制信号(如开关、标志位、状态码),目的是告诉对方"你应该执行哪段逻辑"。
- 例子 :采购系统给财务系统传一个参数
type=1表示"立即转账",type=0表示"记录待办"。这种传递"动作指令"的行为是控制耦合。 - 本题情况:传的是业务数据,不是控制指令。
D. 外部耦合 (External Coupling)
- 定义 :多个模块通过外部环境(如特定的I/O设备、特定的文件格式、通信协议、全局变量等)发生关联。
- 本题情况:这是典型的子系统间的接口调用,属于内部逻辑关联,不涉及外部环境约束。
3. 知识点总结(耦合程度从低到高)
耦合程度越低,软件质量越高:
- 无直接耦合:完全没关系。
- 数据耦合:传简单参数(最推荐)。
- 标记耦合:传大包裹只用一部分。
- 控制耦合:传开关控制对方。
- 外部耦合:依赖外部环境。
- 公共耦合:共用全局变量。
- 内容耦合:直接改对方代码(最糟糕)。
总结建议 :判断的关键在于"传的是什么 "。传具体数值且对方全用 -> 数据耦合 ;传大对象但对方挑着用 -> 标记耦合 ;传旗标控制对方干活 -> 控制耦合。

1. 核心概念解析
- MTTF (Mean Time To Failure, 平均无故障时间) :指系统从一次失效到下一次失效之间能够正常工作的平均时间。它是衡量可靠性(Reliability)的主要指标。MTTF 越大,可靠性越高。
- MTTR (Mean Time To Repair, 平均故障修复时间) :指系统从发生故障到修复完成并恢复正常工作所需的平均时间。它是衡量可维护性(Maintainability)的主要指标。MTTR 越小,表示维护越容易,可维护性越高。
2. 选项分析
题目要求给出"软件可维护性"的计算公式:
- 可维护性 关注的是修复的难易程度。在数学模型中,通常将其定义为一个在 0 0 0 到 1 1 1 之间的概率。当 MTTR 越小时,这个值应该越接近 1 1 1。
- 公式 1 / ( 1 + MTTR ) 1 / (1 + \text{MTTR}) 1/(1+MTTR) 满足这一特性:
- 如果 MTTR = 0 \text{MTTR} = 0 MTTR=0(即瞬间修复),可维护性为 1 / ( 1 + 0 ) = 1 1 / (1 + 0) = 1 1/(1+0)=1,表示满分。
- 随着 MTTR \text{MTTR} MTTR 增大,分母变大,整个分数值减小,表示可维护性降低。
因此,根据题目提供的选项,正确答案是 D。
3. 补充考点:可用性 (Availability)
在考试中,另一个经常出现的公式是可用性。可用性是可靠性和可维护性的综合体现,指系统在给定时间点能够正常工作的概率。
其计算公式为:
可用性 = MTTF MTTF + MTTR \text{可用性} = \frac{\text{MTTF}}{\text{MTTF} + \text{MTTR}} 可用性=MTTF+MTTRMTTF
- 总结记忆:
- 可靠性 看 MTTF。
- 可维护性 看 MTTR (公式为 1 / ( 1 + MTTR ) 1 / (1 + \text{MTTR}) 1/(1+MTTR))。
- 可用性看两者之比(正常工作时间占总时间的比例)。

这道题考查的是 ISO/IEC 9126 软件质量模型 中质量特性的分类。
1. ISO/IEC 9126 质量模型解析
该模型将软件质量分为 6 个一级特性,每个特性下包含若干个子特性。具体分类如下:
- 功能性 (Functionality) :
- 子特性:适合性、准确性、互操作性、安全性 (Security)、功能性依从性。
- 可靠性 (Reliability) :
- 子特性:成熟性、容错性、易恢复性、可靠性依从性。
- 易用性 (Usability) :
- 子特性:易理解性、易学性、易操作性、吸引性、易用性依从性。
- 效率 (Efficiency) :
- 子特性:时间特性、资源利用性、效率依从性。
- 可维护性 (Maintainability) :
- 子特性:可分析性、可修改性、稳定性、可测试性、维护性依从性。
- 可移植性 (Portability) :
- 子特性:适应性、易安装性、共存性、易替换性、移植性依从性。
2. 结论
根据上述标准定义,安全性(Security) 是 功能性(Functionality) 的子特性。
- 易错点拨:很多同学直觉上会觉得安全性应该和可靠性挂钩,但在 ISO/IEC 9126 标准中,安全性被定义为"软件保护信息和数据,使未授权人员或系统不能阅读或修改,而授权人员或系统不被拒绝访问的能力",它被归类为功能的一个方面。
因此,正确答案是 A。

这道题考查的是面向对象方法学中面向对象设计 (OOD) 与 面向对象分析 (OOA) 在活动内容上的区别。
在软件工程(特别是针对软考等考试教材)中,通常会对这两个阶段的任务进行明确划分:
1. 正确答案分析
正确答案是 D:识别类及对象、定义属性、定义服务、识别关系、识别包。
面向对象设计 (OOD) 是在面向对象分析 (OOA) 的基础上,对分析模型进行精化、细化并考虑具体实现的过程。其主要活动包括:
- 识别类及对象:在分析模型的基础上,进一步确定系统中的具体类及其职责。
- 定义属性:确定属性的数据类型、初始值、可见性(公有/私有)等实现细节。
- 定义服务:即定义类的方法或操作。在设计阶段,这些"操作"通常被称为"服务",需要确定其算法细节。
- 识别关系:明确类与类之间的关联、聚合、组合及继承关系。
- 识别包:为了提高模块化程度,将功能相关的类组织到"包"中,构建系统的物理结构。
2. 与 OOA 的对比(避坑指南)
很多同学会混淆 OOD 和 OOA,通过对比可以快速记忆:
- OOA (面向对象分析) :重点在于做什么 ,主要从用户需求中提取对象。其活动通常表述为:认定对象、组织对象、描述对象间的相互作用、定义属性、定义操作。(这正是选项 A 和 B 的主要构成部分)
- OOD (面向对象设计) :重点在于怎么做 ,将分析模型转换为实现方案。关键词是"服务 "和"包"。
总结记忆法:
- 看到"服务 "和"包 "字眼的,通常对应 设计 (OOD)。
- 看到"认定对象 "、"组织对象 "这类比较宽泛、倾向于理解领域的词汇,通常对应 分析 (OOA)。
因此,根据题目图示,正确选项为 D。
七、面向对象技术

核心解析:
题干中的关键信息是 "对业务流程进行建模"。
- B. 活动图 (Activity Diagram) :这是正确答案。活动图是一种行为图,用于描述系统中从一个活动到另一个活动的控制流。它非常适合用来表示工作流(Workflow)或业务流程。它能清晰地展示复杂的逻辑判断(分支)、并行处理(分叉与汇合)以及具体的执行步骤。
其他选项分析:
- A. 交互图 (Interaction Diagrams) :包含顺序图和协作图。它们侧重于描述对象之间如何通过发送消息进行交互,通常用于描述某个特定用例的实现细节,而不是宏观的业务流程。
- C. 部署图 (Deployment Diagram):属于静态结构图。它描述的是软件构件是如何部署到物理硬件节点上的,与业务逻辑流程无关。
- D. 用例图 (Use Case Diagram) :描述的是系统的功能需求,即"谁(参与者)使用系统做什么(用例)"。它只告诉我们系统有什么功能,但不说明实现这些功能的具体业务处理步骤或流程。
结论:
在 UML 中,专门用来"画流程、画步骤"的图就是活动图。
因此,正确答案是 B。

这道题考查的是 UML 顺序图(Sequence Diagram) 的基本构成元素。顺序图是一种交互图,重点描述对象之间消息传递的时间顺序。
1. 选项详细分析
- A. 对象生命线(Object Lifeline) :
- 属于顺序图基本元素。它是从对象框向下延伸的虚线,表示对象在一段时期内的存在。
- B. 控制焦点(Focus of Control) :
- 属于顺序图基本元素。也叫"激活期"或"执行规格",是生命线上方的小窄矩形,表示对象正在执行某个操作的时间段。
- C. 消息(Message) :
- 属于顺序图基本元素。它是对象之间通信的表示方式,通常用带箭头的线表示,用来触发对象的操作。
- D. 链(Link) :
- 不属于顺序图的基本元素。
- 在 UML 中,"链"是"关联(Association)"的实例。它主要出现在 对象图(Object Diagram) 或 通信图(Communication Diagram,原称协作图) 中,用于表示两个对象之间存在的物理或逻辑连接。在顺序图中,对象间的交互是通过"消息"来体现的,而不是显式地画出"链"。
2. 知识点总结(顺序图的 4 个核心要素)
为了方便记忆,你可以记住顺序图必有的四件套:
- 对象(Object):顶部的方框。
- 生命线(Lifeline):虚线。
- 激活(Activation)/ 控制焦点:细长矩形。
- 消息(Message):横向箭头(包括同步消息、异步消息、返回消息等)。
结论:
由于"链"是对象图和通信图的特有元素,不属于顺序图的绘图符号。
因此,正确答案是 D。

这道题考查的是面向对象软件测试的层次划分。
在面向对象软件工程中,测试通常分为四个由小到大的层次:
-
算法层(Algorithm Level):
- 测试内容:针对类中定义的每一个方法(操作)进行测试。
- 地位:相当于传统软件测试中的单元测试(方法级)。
-
类层(Class Level):
- 测试内容:测试同一个类中所有方法之间的相互作用。
- 地位:将整个类作为一个测试单元。
-
模板层(Template Level,也称簇层/Cluster Level):
- 测试内容 :测试一组协同工作的类之间的相互作用。
- 地位:这对应了题目中描述的内容。它关注的是多个类集成在一起时的协作逻辑和接口调用。
-
系统层(System Level):
- 测试内容:在所有类和模块集成后,对整个软件系统进行的全面测试。
- 地位:确保整个系统满足用户需求。
结论:
题目中提到的"一组协同工作的类之间的相互作用 "明确指向了 模板层。
- A 算法:范围太小(仅限单个方法)。
- B 系统:范围太大(整个软件)。
- C 类:范围不够(仅限单个类内部)。
- D 模板:符合定义。
因此,正确答案是 D。

这道题考查的是面向对象方法中**继承(Inheritance)**的基本概念和用途。
核心解析:
继承是面向对象程序设计中的一个核心机制,它允许程序员在保持原有类特性的基础上进行扩展,从而建立起类之间的层次关系。
- A 选项:在已存在的类的基础上创建新类。
- 这是继承的准确定义。通过继承,子类(派生类)可以自动拥有父类(基类)的所有属性和方法。开发者只需要在子类中编写特有的功能或修改原有的功能,而不需要从零开始重新编写。这极大地提高了代码的复用性 和可维护性。
其他选项分析:
- B 和 C 选项 (在已存在的类中添加新的方法/属性):
- 这描述的是对类本身进行修改 或扩展,属于类的定义或维护过程,而不是"继承"这种跨类之间关系的特征。继承产生的是一个全新的类,而不是修改原来的那个类。
- D 选项 (在已存在的状态中添加新的状态):
- 这通常涉及状态机建模或状态模式,与面向对象中的类继承概念无关。
总结:
继承的最直接目的就是代码复用 和扩展,即通过"拿来主义"在旧类的基础上快速构建出更具体、功能更丰富的新类。
因此,正确答案是 A。
八、算法设计与分析

这道题考查的是数据仓库与数据分析领域的核心概念。
1. 题目关键信息分析
- 数据背景 :数据最终存入"数据仓库"中。
- 用户需求 :高管需要进行"分析"。
- 核心要求 :从"时间、地区和商品种类"三个维度来分析。
这里的关键词是"多维分析 "。在数据仓库技术中,专门用于支持复杂的分析操作、提供多维数据视图的技术就是 OLAP。
2. 选项详细解析
-
B. OLAP (Online Analytical Processing,联机分析处理) ------ [正确项]
- 定义:专门设计用于支持复杂的分析操作,侧重于对决策支持人员和高层管理人员的数据分析需求。
- 核心特性 :支持多维分析(如题目中提到的时间、地区、商品种类)。它允许用户进行切片(Slice)、切块(Dice)、下钻(Drill-down)和上卷(Roll-up)等操作,非常适合高管查看趋势和汇总数据。
-
C. OLTP (Online Transaction Processing,联机事务处理) ------ [易混项]
- 定义:主要用于日常的业务操作和事务处理。
- 应用场景:超市收银系统每卖出一件商品记录一笔账单。它关注的是数据的实时增删改,处理的是短小的原子事务,不适合做跨度大的多维分析。
-
D. ETL (Extract, Transform, Load,抽取、转换、清洗、加载)
- 定义:这是将数据从各种业务系统(如各超市的收银系统)搬运到数据仓库中的过程。
- 作用:它属于后台的数据处理过程,是"准备数据"的阶段,而不是高管用来"看数据和分析数据"的工具。
-
A. Data Extraction (数据抽取)
- 作用:这只是 ETL 过程中的第一个环节,即将数据从源头拿出来的动作。
3. 知识点对比总结
| 特性 | OLTP (联机事务处理) | OLAP (联机分析处理) |
|---|---|---|
| 主要功能 | 日常操作、事务处理 | 管理决策、复杂分析 |
| 用户 | 一线员工、收银员 | 经理、高管、分析师 |
| 数据源 | 业务数据库 | 数据仓库 |
| 分析特性 | 单一维度、简单查询 | 多维分析 (维度模型) |
| 典型例子 | 银行转账、超市结账 | 销售趋势分析、地区利润对比 |
结论:
由于题目明确提到了"三个维度分析 "且基于"数据仓库 ",这正是 OLAP 的标准应用场景。
正确答案是:B
九、数据库技术基础

这道题考查的是数据库设计过程中概念结构设计的具体步骤。
数据库设计通常分为:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和运行维护。
在概念结构设计阶段,目标是产生一个能够反映整个企业组织信息需求的全局概念模式(通常是 E-R 图)。其标准的工作步骤如下:
- 抽象数据 (②):这是第一步。通过对需求分析得到的数据进行分类、聚集和概括,确定实体、属性以及它们之间的联系。
- 设计局部视图 (①):针对不同的用户或不同的应用需求,分别设计各自的局部 E-R 图(局部视图)。
- 合并取消冲突 (④):将所有的局部视图合并成一个全局的视图。在合并过程中,需要解决可能出现的命名冲突(同名异义或异名同义)、属性冲突(域不同或单位不同)以及结构冲突(同一对象在不同视图中抽象为不同的概念)。
- 修改重构消除冗余 (③):对合并后的全局 E-R 图进行进一步检查、优化和重构,利用规范化理论消除不必要的冗余数据和冗余联系,得到最终的全局概念模型。
结论:
正确的操作顺序是:② → ① → ④ → ③。
对应选项,正确答案是 D。

这道题考查的是**分布式数据库中的透明性(Transparency)**概念。分布式数据库通过多层模式结构和相互间的映射,为用户屏蔽了数据的分片、存储位置、副本以及局部数据库模型的差异。
根据题目中的描述,我们来逐一分析:
1. 第一空分析:局部数据模型透明
- 题目描述:"指局部数据模型透明,即用户或应用程序无需知道局部使用的是哪种数据模型"。
- 对应概念 :这是分布式数据库透明性的最低层次,也称为局部映射透明性 或逻辑透明性。它确保用户在全局层面上操作时,不需要关心各个分节点上运行的是关系数据库、层次数据库还是网状数据库。
- 对应选项 :D. 逻辑透明。
2. 第二空分析:分块存储透明
- 题目描述:"指用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的"。
- 对应概念 :这是分布式数据库透明性的最高层次,称为分片透明性。在这种层次下,用户只需面对全局关系(逻辑表),编写程序时就像在操作一个非分布式的中央数据库一样,完全不需要知道这些表是被水平分片还是垂直分片存储的。
- 对应选项 :A. 分片透明。
知识扩展:其他透明性概念
为了方便你完整记忆,这里补全另外两个常考概念:
- 位置透明性:指用户不必关心数据的具体物理存储节点。只要知道数据分片的名称,就能进行访问。
- 复制透明性:指用户不必关心数据是否有副本,以及副本存储在哪些节点上。系统会自动维护副本间的一致性。
总结结论:
- 第一个括号填:D(逻辑透明)
- 第二个括号填:A(分片透明)
由于题目下方标注为"问题2 ",根据此类考题的惯例,通常是指针对第二个括号的提问。因此,对于"问题2",最合适的选项是 A。
十、网络与信息安全基础知识

这道题考察的是信息安全等级保护或常用安全体系中对安全需求的分类。
根据题目给出的四个维度,我们来逐一匹配选项:
- 物理线路安全 (Physical Security) :涉及机房、设备、线路等物理层面的保护。
- 对应选项 A. 机房安全。
- 网络安全 (Network Security) :涉及网络传输、边界防护、访问控制等。
- 对应选项 B. 入侵检测(以及防火墙、VPN等)。
- 系统安全 (System Security) :侧重于操作系统 、服务器硬件及其运行环境的安全。
- 对应选项 C. 漏洞补丁管理。及时更新系统补丁是保障操作系统安全的核心手段。
- 应用安全 (Application Security) :侧重于具体的业务系统、数据库、Web服务 等层面的安全。
- 对应选项 D. 数据库安全。
结论:
- 属于系统安全 的是 C. 漏洞补丁管理。
- 属于应用安全 的是 D. 数据库安全。

这道题考查的是 DNS(域名系统)的查询原理和顺序。
为了正确解题,我们需要区分"主机(客户端) "和"域名服务器(服务端)"查询顺序的细微差别。
1. 核心解析:主机的查询顺序 vs 服务器的查询顺序
-
如果是主机(你的电脑)发起请求:
- 首先查看自己的本地缓存。
- 然后查看本地 hosts 文件。
- 如果都没有,才向"本地域名服务器"发起请求。
-
如果是主域名服务器(或本地域名服务器)接到请求:
- 它是专门干活的服务端。在接到主机的请求后,它为了提高效率,第一步一定是先检查自己的"本地缓存"。
- 如果缓存里没有,它会查看自己的区域记录(本地区域数据库文件看自己是不是该域名的"授权服务器"。
- 如果还是找不到,它才会开启后续的递归查询或转发给其他服务器。
2. 选项分析:
- A. 本地hosts文件 :这是在"主机(客户端)"层面查询的,服务器不会去查它。
- B. 转发域名服务器:这是在本地服务器查不到结果后的后续动作。
- C. 本地缓存 :正确答案。无论是为了减轻网络负担还是提高响应速度,服务器首选都是查询缓存。
- D. 授权域名服务器:这是 DNS 层次结构中最终给出权威答案的地方,是在查询链条的最后阶段。
总结建议:
在软考或各类网络考试中,关于 DNS 查询顺序有一个万能逻辑:"先本地后外部,先缓存后文件/数据库"。
对于域名服务器 而言,它接收到请求的那一刻,它唯一能立刻触达的内部存储就是它运行内存中的缓存。
正确答案是:C

这道题考查的是常用的网络诊断命令及其用途。
选项详细分析:
-
A. netstat (Network Statistics) ------ [正确答案,即不能用于诊断DNS的命令]
- 功能:用于显示活动的 TCP 连接、计算机监听的端口、以太网统计信息、IP 路由表、IPv4/IPv6 统计信息等。
- 用途 :主要用于查看本地网络的连接状态、监控端口占用情况,它不具备查询 DNS 服务器或诊断域名解析过程的功能。虽然它在显示结果时可能会尝试将 IP 解析为域名,但这属于其功能的辅助表现,而非诊断工具。
-
B. nslookup (Name Server Lookup)
- 功能:专门用于查询 DNS 记录(如 A 记录、MX 记录等)。
- 用途 :它是诊断 DNS 故障最直接、最核心的工具。通过它你可以直接指定某个 DNS 服务器来解析特定域名,看是否能返回正确的 IP 地址。
-
C. ping
- 功能:测试网络连通性。
- 用途 :虽然 ping 主要用于测试 IP 连通,但如果你输入的是域名(如
ping www.google.com),系统在执行 ping 之前必须先通过 DNS 进行解析 。如果你发现ping 8.8.8.8(IP)能通,但ping www.google.com(域名)报错"找不到主机",这本身就是一种非常有效的 DNS 故障诊断手段。
-
D. tracert (Trace Route)
- 功能:显示数据包到达目的地所经过的路径。
- 用途:与 ping 类似,当你对一个域名执行 tracert 时,它的第一步动作就是域名解析。解析失败则无法开始跟踪,因此它也可以辅助判断 DNS 是否正常工作。
总结:
在网络维护中:
- 想看域名解析对不对 ,找 nslookup。
- 想看网络通不通 ,找 ping。
- 想看数据包在哪儿断了 ,找 tracert。
- 想看本地开了哪些端口、连接了哪些服务器 ,找 netstat。

这道题考查的是 IPv4 地址分类 的基础知识。
在 IPv4 中,地址根据其第一个字节(第一个 8 位组)的数值被分为五类(A、B、C、D、E)。判定的标准如下:
1. 判定标准(首段地址范围)
- A 类地址 :1.0.0.0 ~ 126.255.255.255(首位为 0)
- 注:127.x.x.x 为环回测试地址。
- B 类地址:128.0.0.0 ~ 191.255.255.255(首位为 10)
- C 类地址:192.0.0.0 ~ 223.255.255.255(首位为 110)
- D 类地址:224.0.0.0 ~ 239.255.255.255(组播地址,首位为 1110)
- E 类地址:240.0.0.0 ~ 255.255.255.255(保留地址,首位为 1111)
2. 选项解析
- A. 127.0.0.1
- 首字节是 127。这是著名的"本地回环地址",通常归入 A 类范围,但不可分配给网络设备使用。
- B. 202.113.16.8
- 首字节是 202 。它落在 192 ~ 223 之间。
- 结论 :属于 C 类地址。
- C. 224.0.0.234
- 首字节是 224。它落在 224 ~ 239 之间。
- 结论 :属于 D 类地址(组播地址)。
- D. 190.128.3.0
- 首字节是 190。它落在 128 ~ 191 之间。
- 结论 :属于 B 类地址。
总结
题目要求找出属于 C 类网络地址 的选项。经过对比分析,只有选项 B 的首段数字符合 C 类地址的范围。
因此,正确答案是 B。

这道题考查的是传输层协议 TCP 与 UDP 的应用场景区分。
核心解析:
正确答案是 C:VoIP
-
UDP (用户数据报协议) 的特点:
- 无连接、不可靠:它不保证数据包一定到达,也不保证顺序。
- 速度快、延迟低:没有握手和重传机制。
- 适用场景 :对实时性要求极高,但能容忍少量数据丢失的业务。
-
VoIP (Voice over IP,网络电话):
- 在语音或视频通话中,最重要的体验是"流畅"和"无延迟"。
- 如果网络抖动丢了一个包,听起来可能只是卡顿了 0.01 秒,对交流影响不大;但如果采用 TCP 进行重传,声音就会出现严重的延迟,导致无法正常对话。因此,VoIP 以及视频直播、在线游戏通常使用 UDP(通常结合 RTP 协议)。
其他选项分析(均采用 TCP):
- A. 浏览网页 (HTTP/HTTPS) :网页中的文字、图片和代码必须完整无误地传输,不能缺胳膊少腿,因此必须使用可靠的 TCP。
- B. Telnet 远程登录 :远程操作服务器时,输入的每一个指令都必须准确到达,不能有偏差,因此使用 TCP。
- D. 发送邮件 (SMTP) :邮件内容必须百分之百准确完整,丢一个字都可能改变意思,因此使用 TCP。
总结记忆:
- 求"稳" (数据不能丢):用 TCP。如:网页、邮件、文件传输、远程登录。
- 求"快" (不能有延迟):用 UDP。如:视频通话(VoIP)、直播、游戏、DNS查询。
因此,正确答案是 C。

这道题考查的是计算机网络中 ICMP(网际控制报文协议) 的层次归属及其封装方式。
1. 题目解析
- 第一空:ICMP 协议属于因特网中的( )协议。
- ICMP 协议主要用于在主机与路由器之间传递控制信息(如网络通不通、主机是否可达等)。
- 在 TCP/IP 五层模型中,它与 IP 协议、ARP 协议等共同工作在 网络层(Network Layer)。
- 第二空:ICMP 协议数据单元封装在( )中传送。
- ICMP 报文虽然是网络层的协议,但它并不直接传交给下层(数据链路层),而是作为 IP 数据报 的数据部分进行封装。
- 封装路径 :
ICMP 报文→ \rightarrow →IP 数据报→ \rightarrow →以太网帧。 - 在 IP 首部中,协议字段的值为 1 时,表示其负载的数据是 ICMP 报文。
2. 选项分析
- A. 以太帧:这是数据链路层的 PDU,IP 数据报会被封装在以太帧中,但 ICMP 是先封装进 IP 的。
- B. TCP 段:属于传输层,ICMP 不经过传输层。
- C. UDP 数据报:属于传输层,ICMP 不经过传输层。
- D. IP 数据报 :正确。ICMP 直接封装在 IP 报文的数据载荷中。
3. 结论
题目中的"问题2"针对的是第二个括号。
- 第一空应填:网络层(或网际层)。
- 第二空应填:IP 数据报 (对应选项 D)。
知识点小贴士:
之所以 ICMP 要封装在 IP 里而不是直接发,是因为它需要利用 IP 协议提供的寻址和路由功能,把报错信息准确地送回给源主机。常见的 ping 命令和 tracert 命令就是基于 ICMP 协议实现的。
十一、标准化和软件知识产权基础知识

这道题考查的是中国标准化体系中标准代号的命名规则。我们需要区分国家标准、行业标准、地方标准和企业标准,并识别"强制性"与"推荐性"的区别。
1. 核心规则解析
在标准的代号中:
- 层级区分 :
- GB:国家标准 (Guó Biāo)
- 字母组合 (如 SJ, JB, NY):行业标准(如 SJ 代表电子工业,JB 代表机械工业)
- DB:地方标准 (Dì Fāng)
- Q:企业标准 (Qǐ Yè)
- 性质区分 :
- 不带 "/T":强制性标准 (Mandatory)
- 带 "/T":推荐性标准 (Recommended,"T" 是"推"字的汉语拼音首字母)
2. 选项详细分析
-
A. SJ/T ------ [正确答案]
- SJ:是电子工业行业的代号。
- /T:代表推荐性。
- 结论 :这是推荐性行业标准。
-
B. Q/T11
- Q:代表企业标准。
- 结论:这是企业标准,不符合"行业标准"的要求。
-
C. GB/T
- GB:代表国家标准。
- /T:代表推荐性。
- 结论 :这是推荐性国家标准。
-
D. DB11/T
- DB:代表地方标准(11 通常代表北京市的行政区划代码)。
- /T:代表推荐性。
- 结论 :这是推荐性地方标准。
3. 常见行业标准代号举例(供记忆):
- SJ/T:电子行业
- JB/T:机械行业
- NY/T:农业行业
- GA/T:公共安全行业
结论:
题目要求找出"推荐性行业标准 ",符合规则的是 A。