软件设计师考试模拟试题
依据《软件设计师考试大纲》编写,覆盖大纲 12 项知识与能力要求。
考试科目:计算机与软件工程知识(上午,选择题)、软件设计(下午,问答题)。
第一部分 计算机与软件工程知识(选择题)
本部分共 75 道选择题,每题 1 分,满分 75 分。在每小题的四个选项中,只有一项是最符合题目要求的。
一、计算机系统基础知识
1.在计算机中,若采用 IEEE 754 单精度浮点数格式表示一个实数,其尾数部分通常采用______表示。
- A. 原码
- B. 补码
- C. 反码
- D. 移码(偏移码)
2.下列有关补码的叙述中,正确的是______。
- A. 补码表示的数值范围比原码多一个负值
- B. 补码中"0"有两种表示形式
- C. 补码的最高位为符号位,符号位不参与运算
- D. 负数补码等于其原码按位取反后加 1(含符号位)
3.十进制数 -7 的 8 位补码表示为______。
- A. 10000111
- B. 11111000
- C. 11111001
- D. 00000111
4.下列逻辑运算中,可以实现"两个逻辑变量相同时输出为 0、不同时输出为 1"的是______。
- A. 与运算
- B. 或运算
- C. 异或运算
- D. 同或运算
5.设 X、Y 为布尔变量,表达式 X·(X+Y) 化简后的结果等价于______。
- A. X
- B. Y
- C. X+Y
- D. 1
6.一个 8KB 的存储器,按字节编址,则其地址范围用十六进制表示可以是______。
- A. 0000H ~ 1FFFH
- B. 0000H ~ 0FFFH
- C. 0000H ~ 1FFEH
- D. 0000H ~ 3FFFH
7.采用二进制补码进行定点整数运算时,若两正数相加结果的符号位为 1,则说明发生了______。
- A. 上溢(溢出)
- B. 下溢
- C. 进位丢失
- D. 运算正确
二、离散数学与应用数学基础
8.设集合 A={1,2,3},集合 B={2,3,4},则 A∩B 的幂集的元素个数为______。
- A. 2
- B. 4
- C. 8
- D. 16
9.下列关系中,满足自反性、对称性和传递性的是______。
- A. 实数集上的"<"
- B. 集合幂集上的"包含于"
- C. 整数集上的"相等"
- D. 整数集上的"整除"
10.一棵有 7 个结点的完全二叉树,按层次从 0 开始编号,则编号为 6 的结点的父结点编号为______。
- A. 2
- B. 3
- C. 4
- D. 5
11.用欧拉图判断:设 U={1,2,3,4,5,6},A={1,2,3},B={3,4,5},则 A∪B 的补集为______。
- A. {6}
- B. {1,2,4,5}
- C. {3}
- D. ∅
12.在命题逻辑中,蕴含式 P→Q 与下列______逻辑等价。
- A. ¬P∨Q
- B. P∨Q
- C. ¬(P∨Q)
- D. P∧Q
13.应用数学中,若一个算法的执行时间 T(n) 满足 T(n)=O(f(n)),其含义是______。
- A. 算法执行时间恰好等于 f(n)
- B. 算法执行时间的增长率不超过 f(n) 的常数倍
- C. 算法执行时间至少为 f(n)
- D. 算法执行时间与 f(n) 无关
三、计算机体系结构
14.在冯·诺依曼体系结构中,计算机的五大组成部分不包括______。
- A. 运算器
- B. 控制器
- C. 高速缓冲存储器(Cache)
- D. 输入设备和输出设备
15.CPU 中负责从内存取出指令并进行译码的部件是______。
- A. 运算器(ALU)
- B. 控制器
- C. 寄存器组
- D. 总线接口
16.关于流水线技术,下列叙述正确的是______。
- A. 流水线可以缩短单条指令的执行时间
- B. 流水线可以提高系统吞吐率,但不能缩短单条指令的执行时间
- C. 流水线会降低指令执行的吞吐率
- D. 流水线中每条指令都需要等上一条完全结束后才开始
17.某指令流水线有 4 段,各段时间分别为 2ns、1ns、1ns、1ns,则其流水线的吞吐率瓶颈在于______。
- A. 第 1 段
- B. 第 2 段
- C. 第 3 段
- D. 第 4 段
18.下列关于存储体系结构的叙述中,错误的是______。
- A. 采用 Cache 的目的是提高存储系统的访问速度
- B. 虚拟存储技术使得主存容量在逻辑上得以扩充
- C. Cache 与主存之间的映射关系由操作系统动态调整
- D. 页式虚拟存储中,地址变换依赖于页表
19.常见的外部存储器(磁盘)的寻址方式中,影响存取速度的关键因素是______。
- A. 平均寻道时间
- B. 磁头数
- C. 扇区大小
- D. 磁盘盘片数量
20.采用直接寻址、寄存器寻址、立即数寻址三种方式时,指令执行速度由快到慢的次序一般为______。
- A. 立即数寻址 > 寄存器寻址 > 直接寻址
- B. 直接寻址 > 寄存器寻址 > 立即数寻址
- C. 寄存器寻址 > 立即数寻址 > 直接寻址
- D. 立即数寻址 > 直接寻址 > 寄存器寻址
四、操作系统、程序设计语言与编译基础
21.下列不属于操作系统基本功能的是______。
- A. 进程管理
- B. 存储管理
- C. 数据库查询优化
- D. 文件管理
22.在操作系统中,进程从"运行"状态转换到"就绪"状态的典型原因是______。
- A. 进程等待 I/O 完成
- B. 时间片用完
- C. 进程被创建
- D. 进程执行了阻塞原语
23.采用先来先服务(FCFS)调度算法,三个作业同时到达,其运行时间分别为 4、6、12 分钟,则平均周转时间为______分钟。
- A. 12
- B. 15
- C. 16
- D. 20
24.下列关于虚拟存储管理的叙述中,正确的是______。
- A. 采用先进先出(FIFO)页面置换算法时可能出现 Belady 异常
- B. 最优页面置换算法(OPT)在实现时开销最小
- C. LRU 算法不会发生缺页
- D. 页面置换仅与页表有关,与内存分配策略无关
25.关于程序局部性原理,下列说法错误的是______。
- A. 局部性包括时间局部性和空间局部性
- B. 循环结构体现了时间局部性
- C. 顺序执行的指令序列体现了空间局部性
- D. 局部性原理仅适用于分时操作系统
26.编译程序进行词法分析时,采用的数学模型是______。
- A. 有限自动机
- B. 下推自动机
- C. 图灵机
- D. 上下文无关文法
27.下列属于编译过程的中间阶段是______。
- A. 语法分析
- B. 词法分析
- C. 代码优化
- D. 目标代码生成
28.程序设计语言中,用于描述"过程或函数"调用参数传递方式的词法规则属于______。
- A. 词法规则
- B. 语法规则
- C. 语义规则
- D. 语用规则
29.在 C 语言中,下列标识符中合法的是______。
- A. 2name
- B. int
- C. _name_1
- D. my-name
五、数据结构与常用算法
30.一个栈的入栈序列为 a,b,c,d,则下列不可能的出栈序列是______。
- A. a,b,c,d
- B. d,c,b,a
- C. a,d,c,b
- D. d,a,b,c
31.一个队列的初始状态为空,依次执行入队 1、2、3、出队、入队 4、出队操作后,队列中的元素为______。
- A. 3,4
- B. 4,3
- C. 2,3,4
- D. 3,2
32.对长度为 n 的线性表采用顺序存储,在表头插入一个元素,需要移动的元素个数为______。
- A. n
- B. n/2
- C. (n+1)/2
- D. n+1
33.有 n 个结点的完全二叉树,其高度(层数)为______。
- A. ⌊log₂n⌋
- B. ⌈log₂(n+1)⌉
- C. n/2
- D. log₂n
34.一棵二叉树的先序遍历序列为 ABDCE,中序遍历序列为 BDAEC,则其后序遍历序列为______。
- A. DBACE
- B. DEBCA
- C. DBECA
- D. BEDCA
35.下列关于哈希(散列)查找的说法,错误的是______。
- A. 哈希查找的平均查找长度与记录数 n 基本无关
- B. 解决冲突的方法包括开放定址法和链地址法
- C. 哈希函数设计得越好,冲突越少
- D. 哈希查找的最坏时间复杂度一定是 O(1)
36.用冒泡排序对序列 {5,3,8,6,2} 进行升序排序,第一趟排序后的结果为______。
- A. 3,5,6,2,8
- B. 3,5,2,6,8
- C. 3,5,8,2,6
- D. 2,3,5,6,8
37.快速排序的平均时间复杂度为______。
- A. O(n)
- B. O(n log₂n)
- C. O(n²)
- D. O(log₂n)
38.二分查找要求线性表______。
- A. 顺序存储且元素有序
- B. 链式存储且元素有序
- C. 顺序存储,无序也可
- D. 链式存储,无序也可
39.在一个有向图中,若顶点数为 n,则其邻接矩阵占用的存储空间为______。
- A. n
- B. n²
- C. n(n-1)/2
- D. 2n
40.下列算法中,不能用于求图中单源最短路径的是______。
- A. Dijkstra 算法
- B. Floyd 算法
- C. 广度优先搜索(无权图)
- D. Kruskal 算法
41.下列关于二叉排序树(BST)的叙述,正确的是______。
- A. 中序遍历可得到有序序列
- B. 查找效率与树的形态无关
- C. 插入操作会破坏所有结点的平衡
- D. 平均查找长度恒为 O(n)
六、数据库、网络与多媒体基础
42.数据库系统的三级模式结构中,描述数据库全局逻辑结构的是______。
- A. 外模式
- B. 模式(概念模式)
- C. 内模式
- D. 物理模式
43.设关系 R(A,B,C) 和 S(B,D),进行自然连接 R⋈S 后,结果关系的元组数______。
- A. 一定等于 R 的元组数
- B. 一定等于 S 的元组数
- C. 不会超过 R 与 S 元组数的乘积
- D. 一定等于 R 与 S 元组数之和
44.事务的原子性(Atomicity)要求______。
- A. 事务中的所有操作要么全部执行,要么全部不执行
- B. 事务完成后其结果永久保存
- C. 事务并发执行互不干扰
- D. 事务对数据的操作保持一致性约束
45.下列哪个范式要求消除非主属性对码的部分函数依赖______。
- A. 1NF
- B. 2NF
- C. 3NF
- D. BCNF
46.SQL 语句中,用于在表中删除所有记录但保留表结构的语句是______。
- A. DROP TABLE
- B. DELETE FROM 表名
- C. TRUNCATE TABLE
- D. ALTER TABLE
47.在 OSI 参考模型中,负责数据链路层的差错控制与流量控制、实现相邻结点间帧的可靠传输的层次是______。
- A. 物理层
- B. 数据链路层
- C. 网络层
- D. 传输层
48.在 TCP/IP 体系中,负责将 IP 地址解析为 MAC 地址的协议是______。
- A. ARP
- B. RARP
- C. ICMP
- D. DNS
49.下列属于私有 IP 地址的是______。
- A. 192.168.1.1
- B. 202.120.1.1
- C. 8.8.8.8
- D. 172.0.0.1
50.将 IPv4 地址 192.168.10.0/24 划分子网,每个子网需容纳至少 30 台主机,则最少应划分______个子网。
- A. 2
- B. 4
- C. 8
- D. 16
51.多媒体技术中,MPEG-1 标准主要应用于______。
- A. 静止图像压缩
- B. 数字电视和音视频压缩
- C. 传真图像
- D. 文本压缩
52.对一幅 1024×768、24 位真彩色的 BMP 图像,其未压缩的数据量约为______。
- A. 768 KB
- B. 2.25 MB
- C. 9 MB
- D. 24 MB
七、程序设计语言(C 及一种面向对象语言)
53.在 C 语言中,下列关于指针的叙述,错误的是______。
- A. 指针变量存储的是某个变量的地址
- B. 对指针执行 ++ 操作,其移动的字节数取决于指针指向的数据类型
- C. 空指针 NULL 指向地址为 0 的内存单元,其值为 0
- D. 两个不同数据类型的指针可以直接相互赋值
54.在 C 语言中,下列对二维数组 int a[3][4] 的描述,正确的是______。
- A. a 是数组名,其值在程序运行期间可以改变
- B. a+1 指向第二行(下标为 1 的行)的首地址
- C. *(a+2) 表示第 2 行第 0 列元素的地址
- D. sizeof(a)/sizeof(a[0]) 的值为 4
55.在 C 语言中,函数形参采用值传递时,实参与形参之间______。
- A. 共享同一存储单元
- B. 是不同变量,形参的改变不影响实参
- C. 形参的改变会影响实参
- D. 传递的是实参的地址
56.在 Java 语言中,用于描述"一个类只提供一个对外实例入口"的设计思想对应的是______。
- A. 继承
- B. 多态
- C. 单例模式
- D. 抽象类
57.下列关于面向对象程序设计(OOP)三大特性的描述,正确的是______。
- A. 封装:把数据和操作数据的方法捆绑在一起,并隐藏实现细节
- B. 继承只能发生在接口之间,不能发生在类之间
- C. 多态只体现在编译期,与运行时无关
- D. 封装与多态没有任何联系
58.C 语言中,下列关于结构体 struct 的叙述,正确的是______。
- A. 结构体成员变量可以任意定义,但不能包含结构体自身类型的指针
- B. 结构体变量作为函数参数时,默认按地址传递
- C. 结构体类型只有在 main 函数内才能定义
- D. 结构体可以使用 typedef 重新命名,从而定义别名
八、软件工程与项目管理
59.瀑布模型的主要缺点是______。
- A. 难以在开发早期发现需求错误
- B. 不适合任何类型的项目
- C. 开发周期过短
- D. 不便于进行文档管理
60.下列关于敏捷开发(Agile)的描述,正确的是______。
- A. 以文档为中心,重视详尽的前期设计
- B. 采用迭代增量式开发,快速响应需求变化
- C. 必须严格按照瀑布模型分阶段进行
- D. 只适用于小型项目,不适用于团队协作
61.软件能力成熟度模型(CMM/CMMI)中,属于"已定义级(Level 3)"特征的是______。
- A. 软件过程已被文档化、标准化,并得到组织层面的统一应用
- B. 软件过程不可预测,完全依赖个人能力
- C. 项目过程与组织过程无关
- D. 仅关注单个项目的局部改进
62.在软件项目管理中,用于估算软件规模、依据历史数据建立数学模型的方法称为______。
- A. COCOMO 模型
- B. 甘特图
- C. PERT 网络图
- D. 因果图
63.下列不属于软件项目风险的是______。
- A. 需求变更风险
- B. 人员流动风险
- C. 技术不成熟风险
- D. 程序语法错误
64.在软件开发中,"编写软件测试用例以验证程序是否满足需求规格说明"属于______测试阶段。
- A. 单元测试
- B. 集成测试
- C. 系统测试
- D. 验收测试
65.下列关于软件质量保证(SQA)的叙述,正确的是______。
- A. 软件质量保证是软件测试的同义概念
- B. 软件质量保证活动应贯穿整个软件生命周期
- C. 软件质量保证只在交付阶段进行
- D. 软件质量保证仅关注最终代码的质量
九、软件设计方法与技术
66.在结构化设计中,模块划分应遵循的基本原则是______。
- A. 高内聚、低耦合
- B. 低内聚、高耦合
- C. 高内聚、高耦合
- D. 低内聚、低耦合
67.下列不属于 UML 中"行为图"的是______。
- A. 用例图
- B. 状态图
- C. 活动图
- D. 类图
68.在数据流图(DFD)中,用于表示数据的输入、加工、输出变换的图形元素不包括______。
- A. 数据流
- B. 加工(处理)
- C. 数据存储
- D. 控制流
69.面向对象设计原则中,"一个软件实体应当对扩展开放,对修改关闭"描述的是______。
- A. 单一职责原则(SRP)
- B. 开闭原则(OCP)
- C. 里氏替换原则(LSP)
- D. 接口隔离原则(ISP)
70.下列设计模式中,属于"结构型模式"的是______。
- A. 观察者模式
- B. 装饰者模式
- C. 工厂模式
- D. 策略模式
十、信息技术标准、安全性及法律法规
71.下列信息安全措施中,用于实现"身份认证"的是______。
- A. 数字签名
- B. 访问控制列表(ACL)
- C. 数字证书与公钥基础设施(PKI)
- D. 数据加密
72.下列关于防火墙的叙述,错误的是______。
- A. 防火墙可以过滤进入和离开内部网络的数据包
- B. 防火墙能够完全防止内部用户泄露机密信息
- C. 防火墙可以是硬件设备,也可以是软件
- D. 防火墙常部署在网络边界处
73.根据《中华人民共和国计算机软件保护条例》,软件著作权自______起产生。
- A. 软件登记之日
- B. 软件开发完成之日
- C. 软件首次发表之日
- D. 软件销售之日
74.下列关于我国《网络安全法》的叙述,正确的是______。
- A. 它仅适用于政府机构,不适用于一般企业
- B. 网络运营者应当履行网络安全保护义务
- C. 它主要规范计算机硬件的生产制造
- D. 它不涉及个人信息保护
75.下列选项中,属于"计算机病毒"特征的是______。
- A. 传染性、隐蔽性、破坏性、潜伏性
- B. 只读性、稳定性、永久性
- C. 可压缩性、透明性、单向性
- D. 可恢复性、可复制性、可编译性
第二部分 软件设计(问答题)
本部分共 6 道问答题,每题 15 分,满分 90 分。请按照各题的说明作答。
试题一(数据流图)
说明
某高校学籍管理系统拟实现学生选课与成绩管理功能,其部分功能需求如下:
- 教务员维护课程信息(课程号、课程名、学分、任课教师);
- 学生登录系统后,查询可选课程并完成选课;
- 任课教师录入学生成绩;
- 学生可以查询自己的选课结果与成绩;
- 系统自动统计每门课程的选课人数,供教务员查看。
问题 1(4 分)请根据上述需求,画出该系统的顶层数据流图(上下文图),标出外部实体、输入数据流和输出数据流。
问题 2(6 分)将系统分解为若干加工,画出 0 层数据流图,并说明各加工之间的数据流。
问题 3(5 分)请说明在数据流图中使用"加工"“数据存储”"数据流"三种元素的含义,并指出绘制 DFD 时常见的两类错误。
试题二(数据库设计)
说明
某图书馆管理系统需要管理读者、图书、借阅信息。根据系统需求,数据库设计人员首先设计出如下关系模式:
- 读者(读者号,姓名,性别,单位,联系电话)
- 图书(图书号,书名,出版社,单价,类别)
- 借阅(读者号,图书号,借书日期,还书日期)
问题 1(4 分)指出上述三个关系模式的主键,并判断是否存在部分函数依赖或传递函数依赖。
问题 2(6 分)判断"借阅"关系是否满足 3NF?若不满足,说明理由并给出达到 3NF 或 BCNF 的分解方案。
问题 3(5 分)写出实现下列查询的 SQL 语句:
(1)查询借阅过书名为《数据结构》的所有读者姓名;
(2)查询借书次数超过 10 次的读者的读者号和姓名。
试题三(面向对象设计)
说明
某网上书店系统需要支持不同促销策略,系统希望能在不修改现有类的前提下动态增加新的折扣方式(如"满减"、“会员折扣”、“节日折扣”),并支持多种折扣的组合叠加。
问题 1(4 分)采用哪种设计模式最合适?请说明选择该模式的理由。
问题 2(6 分)画出该设计模式对应的 UML 类图,标出抽象类、具体类及它们之间的继承(实现)关系,并简要说明各角色类的作用。
问题 3(5 分)若新增一种"限时抢购折扣",需要如何扩展系统?请说明在该设计下扩展是否符合"开闭原则"。
试题四(数据结构与算法:C 语言实现)
说明
以下是采用顺序存储结构实现栈的 C 语言部分代码,栈的最大容量为 MAXSIZE。
#defineMAXSIZE100typedefstruct{intdata[MAXSIZE];inttop;/* 栈顶指针,top 为 -1 时表示栈空 */}Stack;/* 进栈操作 */intPush(Stack*s,intx){if(s->top==MAXSIZE-1)/* 栈满 */return0;(1);s->data[s->top]=x;return1;}/* 出栈操作 */intPop(Stack*s,int*x){if((2))/* 栈空 */return0;*x=s->data[s->top];(3);return1;}问题 1(5 分)请在(1)(2)(3)处填入正确的代码,使程序功能完整。
问题 2(6 分)编写函数int IsBalanced(char exp[]),利用上述栈判断表达式exp中的圆括号()和方括号[]是否匹配,匹配返回 1,否则返回 0。
问题 3(4 分)说明利用栈求解算术表达式(如中缀转后缀、求值)的基本思路,并写出中缀表达式3 + 4 * 2 - (5 - 1)的后缀表达式。
试题五(C 程序设计)
说明
某公司需要统计销售数据,现编写一个 C 程序,实现以下功能:
- 输入若干名销售员的编号(int)和月销售额(double);
- 计算所有销售员的平均销售额;
- 统计并输出销售额高于平均值的销售员编号和销售额;
- 找出月销售额最高的销售员及其销售额。
问题 1(5 分)请设计一种数据结构(如结构体数组)存储上述数据,并写出对应的类型定义。
问题 2(6 分)编写函数double Average(struct Sales arr[], int n)计算平均销售额,并编写函数void PrintAbove(struct Sales arr[], int n, double avg)输出高于平均值的记录。
问题 3(4 分)写出主函数,完成数据输入、调用上述函数并输出结果(要求合理处理"无数据"的情况)。
试题六(综合设计:用例图与状态图)
说明
某在线考试系统的主要功能包括:
- 考生登录系统进行在线答题、提交试卷、查看成绩;
- 管理员管理考生账号、设置试题与试卷、查看考试统计;
- 监考人员监控考试过程,处理异常情况(如考生掉线)。
问题 1(6 分)画出该系统的用例图,标出参与者(Actor)和主要用例(Use Case)。
问题 2(5 分)画出"考生答题"这一用例所涉及的状态图,描述考生从登录到提交试卷的完整状态迁移过程。
问题 3(4 分)说明用例图与状态图在系统建模中的作用有何不同。
参考答案(简要)
本部分仅提供上午选择题参考答案,供自测使用;下午问答题请参考评分要点自行作答或留作练习。
选择题答案
| 题号 | 答案 | 题号 | 答案 | 题号 | 答案 | 题号 | 答案 | 题号 | 答案 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | D | 16 | B | 31 | A | 46 | C | 61 | A |
| 2 | D | 17 | A | 32 | A | 47 | B | 62 | A |
| 3 | C | 18 | C | 33 | B | 48 | A | 63 | D |
| 4 | C | 19 | A | 34 | C | 49 | A | 64 | C |
| 5 | A | 20 | A | 35 | D | 50 | C | 65 | B |
| 6 | A | 21 | C | 36 | A | 51 | B | 66 | A |
| 7 | A | 22 | B | 37 | B | 52 | B | 67 | D |
| 8 | B | 23 | A | 38 | A | 53 | D | 68 | D |
| 9 | C | 24 | A | 39 | B | 54 | B | 69 | B |
| 10 | A | 25 | D | 40 | D | 55 | B | 70 | B |
| 11 | A | 26 | A | 41 | A | 56 | C | 71 | C |
| 12 | A | 27 | C | 42 | B | 57 | A | 72 | B |
| 13 | B | 28 | C | 43 | C | 58 | D | 73 | B |
| 14 | C | 29 | C | 44 | A | 59 | A | 74 | B |
| 15 | B | 30 | D | 45 | B | 60 | B | 75 | A |
说明:本模拟试题用于覆盖大纲 12 项考查要点,题型结构与真实软件设计师考试一致。实际考试选择题共 75 题、下午问答题 6 题(具体分值分配以官方为准)。下午问答题中"试题四/试题五"为程序设计填空与编码题,请结合 C 语言知识独立完成。