软件中级设计师
📌 本文档收录软件设计师考试的练习题,按知识点分类整理。
软件工程基础
题目 1 ⭐
详细设计结束后,重点审查的内容不包括( )。
- A. 数据流图
- B. 算法
- C. 数据结构
- D. 软件界面
✅ 正确答案:A
解析
详细设计阶段主要关注模块内部逻辑的实现,包括算法、数据结构、界面设计等内容。数据流图属于需求分析阶段的工具,用于描述系统数据流动和处理过程,其审查通常在需求定义或概要设计阶段完成。
在详细设计结束后的审查重点是模块的具体实现细节,而非早期需求模型。参考软件工程中设计阶段划分的相关理论,详细设计的审查对象通常聚焦于模块内部设计元素。
💡 选项 A 不在此阶段审查范围内。
题目 2 ⭐
结构化开发方法中,( )主要包含对数据结构和算法的设计。
- A. 体系结构设计
- B. 数据设计
- C. 接口设计
- D. 过程设计
✅ 正确答案:D
解析
数据结构跟算法是系统的基础,是过程设计确定的任务。
| 设计类型 | 说明 |
|---|---|
| 体系结构设计 | 定义软件系统各主要部件之间的关系 |
| 数据设计 | 基于 E-R 图确定软件涉及的文件系统的结构及数据库的表结构 |
| 接口设计(人机界面设计) | 软件内部,软件和操作系统间以及软件和人之间如何通信 |
| 过程设计 | 系统结构部件转换成软件的过程描述,确定各组成部分的算法及内部数据结构,并选定过程表达形式来描述算法 |
信息安全
题目 3 ⭐⭐
下列关于报文摘要的叙述中,错误的是( )。
- A. 在物联网环境中,可以为资源受限的传感器生成轻量级摘要
- B. 对电子文档生成摘要,接收方用私钥解密
- C. 对发送方报文生成的摘要值,接收方应重新计算并与原始摘要比对
- D. 报文摘要仅用于验证完整性,传输数据仍需 TLS 加密
✅ 正确答案:B
解析
为什么 B 是错误的?
- 报文摘要(Message Digest) 是通过哈希算法(如 MD5、SHA-256)生成的固定长度字符串。哈希算法是单向函数,不可逆,因此不存在”解密”这一说法。
- 如果涉及”私钥”,那通常是指数字签名的过程:发送方用自己的私钥对摘要进行加密(签名),接收方用发送方的公钥进行解密(验签)。
- 选项 B 说”接收方用私钥解密”,这在逻辑上是完全错误的:
- 摘要本身不能被解密。
- 即使是指数字签名,接收方也应该用公钥来验证,而不是私钥(私钥只有发送方自己有)。
其他选项为什么是正确的?
- A 正确:物联网传感器资源(计算能力、电量)有限,确实需要使用轻量级的哈希算法(如 PHOTON、SPONGENT 等)来生成摘要,以节省能耗。
- C 正确:这是验证数据完整性的标准流程。接收方收到数据和摘要后,使用相同的哈希算法对收到的数据重新计算摘要,如果计算结果与收到的摘要一致,说明数据在传输过程中未被篡改。
- D 正确:报文摘要(哈希值)只能保证数据完整性(没被改过),但不能保证机密性(别人能看到内容)或身份认证(除非结合数字签名)。因此,如果需要保密传输,仍需配合 TLS/SSL 等加密协议。
💡 核心概念:哈希(摘要)是”指纹”,不是”锁”。指纹只能用来比对是不是同一个人(完整性),不能用来把信息藏起来(加密),所以谈不上”解密”。
知识产权
题目 4 ⭐
以下关于软件著作权产生时间的叙述中,正确的是( )。
- A. 自开发者获得软件著作权登记证书起
- B. 自开发计划文档完成时
- C. 自软件首次公开发表时
- D. 自软件开发完成之日起
✅ 正确答案:D
解析
根据《计算机软件保护条例》,软件著作权自软件开发完成之日起自动产生,不需要登记或发表。登记证书仅起证明作用,首次发表也不是著作权产生的条件。
软件测试
题目 5 ⭐
黑盒测试的主要依据是( )。
- A. 代码复杂度
- B. 软件需求规格说明书
- C. 设计文档
- D. 程序内部逻辑
✅ 正确答案:B
解析
黑盒测试基于软件的外部功能和需求,而不考虑内部代码结构。软件需求规格说明书定义了软件的功能和性能要求,是黑盒测试的主要依据。
操作系统
题目 6 ⭐
某文件系统文件存储采用文件索引节点法。假设文件索引节点中有8个地址项 iaddr[0]~iaddr[7],每个地址项大小为4字节,磁盘索引块和磁盘数据块大小均为1KB。其中地址项 iaddr[0]~iaddr[4] 是直接地址索引,iaddr[5]~iaddr[6] 是一级间接地址索引,iaddr[7] 是二级间接地址索引。若要访问 iclsClient、dll 文件的逻辑块号分别为 5、517,则系统应分别采用( )。
- A. 直接地址索引、一级间接地址索引
- B. 直接地址索引、二级间接地址索引
- C. 一级间接地址索引、一级间接地址索引
- D. 一级间接地址索引、二级间接地址索引
✅ 正确答案:D
解析
文件索引节点法中直接地址索引对应逻辑块号 0-4(每个地址项直接指向数据块),一级间接索引每个索引块可存储 1KB/4B = 256 个地址项,故 iaddr[5]、iaddr[6] 分别覆盖 5-260 和 261-516;二级间接索引通过两层索引表可寻址更大范围(iaddr[7] 对应 517 及以上)。逻辑块号 5 处于一级间接索引范围内,而 517 需通过二级间接索引访问,因此分别采用一级和二级间接地址索引。
题目 7 ⭐
当函数调用执行时,在栈顶创建项目用来支持被调用函数执行的一段存储空间称为活动记录或栈帧,栈帧中不包括( )。
- A. 形参变量
- B. 全局变量
- C. 返回地址
- D. 局部变量
✅ 正确答案:B
解析
当函数调用执行时,在栈顶创建并临时保留的一段存储空间即栈帧中,会存放调用函数时的返回地址、形参变量和局部变量。而全局变量存放在程序的静态存储区,位置是相对固定、独立的。
💡 全局变量位于静态存储区,不在栈帧中。
数据库
题目 8 ⭐
两个函数依赖集 F 和 G 等价是指( )。
- A. F→G
- B. F⁺ = G⁺
- C. G→F
- D. F = G
✅ 正确答案:B
解析
在关系数据库理论中,两个函数依赖集 F 和 G 等价的定义基于它们的闭包是否相等。闭包(F⁺ 或 G⁺)指的是从给定依赖集出发,通过 Armstrong 公理推导出的所有函数依赖的集合。若 F 的闭包包含 G 的所有依赖,且 G 的闭包也包含 F 的所有依赖,则二者闭包相同,即 F⁺ = G⁺。
- A 错误:仅表示单向推导关系,不满足双向覆盖。
- C 错误:同上,仅表示单向推导关系。
- D 错误:要求 F 和 G 显式相等,忽略了逻辑等价但形式不同的情况。
💡 此定义可见于《数据库系统概念》等教材的函数依赖与规范化部分。
计算机网络
题目 9 ⭐
下列不能用于远程登录或控制的是( )。
- A. IGMP
- B. SSH
- C. Telnet
- D. RFB
✅ 正确答案:A
解析
- Telnet 协议是 Internet 远程登录服务的标准协议和主要方式,为用户提供了在本地计算机上完成远程主机工作的能力。
- RFB(Remote Frame Buffer,远程帧缓冲) 协议是一个用于远程访问图形用户界面的简单协议。
- SSH 协议是较可靠、专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
- IGMP(Internet Group Management Protocol) 是主机与本地路由器之间用来进行组播组成员信息交互的协议,不用于远程登录或控制。
💡 IGMP 是组播管理协议,与远程登录无关。
数据结构与算法
题目 10 ⭐
某递归算法的时间复杂度计算公式为 T(n) = 4T(n/2) + nlgn,其中 n 为问题规模,则该算法的时间复杂度是( )。
- A. Θ(nlgn)
- B. Θ(n³)
- C. Θ(n²)
- D. Θ(n²lgn)
✅ 正确答案:C
解析
递归式 T(n) = 4T(n/2) + nlgn 的时间复杂度可通过主定理分析:
主定理形式:对形如 T(n) = aT(n/b) + f(n) 的递归式,主定理通过比较 f(n) 与 n^(log_b a) 的阶来确定时间复杂度。
参数分析:
- a = 4,b = 2 → log_b a = log₂4 = 2,因此 n^(log_b a) = n²。
- f(n) = nlgn,需与 n² 比较阶。
主定理情况判断:若 f(n) = O(n^{log_b a - ε})(存在 ε > 0),则 T(n) = Θ(n^{log_b a})。这里 nlgn 的阶低于 n²(因为 lgn 的增长速度远慢于 n),且存在 ε = 0.5 使得 nlgn = O(n^{2 - 0.5}) = O(n^{1.5})。因此满足情况1,时间复杂度为 Θ(n²)。
💡 主定理三种情况的核心是比较 f(n) 与 n^(log_b a) 的增长速度。
题目 11 ⭐
采用循环队列的优点是( )。
- A. 入队和出队可以在队列的同端点进行操作
- B. 入队和出队操作都不需要移动队列中的其他元素
- C. 避免出现队列满的情况
- D. 避免出现队列空的情况
✅ 正确答案:B
解析
循环队列的优点:可以有效利用资源。用数组实现队列时,如果不移动,随着数据的不断读写,会出现假满队列的情况(尾数组已满但头数组还是空的)。循环队列在逻辑上把数组的头和尾相连,当数组尾满时,会判断数组头是否为空,不为空则继续存放数据。
循环队列的缺点:入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等,因此无法通过条件 front == rear 来判别队列是"空"是"满"。
- A 错误:入队和出队在同端点操作是栈的特征,不是循环队列的。
- C 错误:循环队列仍可能出现满的情况。
- D 错误:循环队列仍可能出现空的情况。
💡 循环队列的核心价值在于充分利用数组空间,克服"假溢出"问题。
题目 12 ⭐
数据库中的视图是一个虚拟表。若设计师为 user 表创建一个 user1 视图,那数据字典中保存的是( )。
- A. user1 查询语句
- B. user1 视图定义
- C. user1 查询结果
- D. 所引用的基本表的数据
✅ 正确答案:B
解析
视图是一个虚拟表,其内容由查询定义。视图在数据字典中保存的是视图定义(即创建视图的 SQL 语句及其相关元数据),而非查询结果或基本表数据。每次查询视图时,数据库会根据视图定义动态生成结果。
- A 不够准确:"查询语句"只是视图定义的一部分,视图定义还包含列名、权限等元数据。
- C 错误:视图不存储查询结果,每次访问时实时计算。
- D 错误:数据字典保存的是视图的定义信息,而非基本表的数据。
💡 视图是"虚表",数据字典存的是定义,不存数据。
