软件设计师考试模拟试题(根据官方考试要求编制)
考试科目与要求依据官方大纲整理,覆盖《计算机与软件工程知识》(上午·计算机化考试·选择题)与《软件设计》(下午·计算机化考试·问答题)两大科目。
- 上午科目:单项选择题,每题 1 分,共 75 题,满分 75 分(45 分合格)。
- 下午科目:案例分析问答题,一般 6 道大题,满分 75 分(45 分合格)。
- 本文为模拟练习卷,题量略精简,后附参考答案与解析。
科目一:计算机与软件工程知识(选择题)
说明:本部分共 50 道单选题,每题仅有一个正确答案,覆盖官方要求 1~12 全部考点。
一、数据表示、算术与逻辑运算
1.在补码表示法中,-8的 8 位补码是( )。
- A.
11111000 - B.
10001000 - C.
11111001 - D.
10000000
2.浮点数在机器中的表示由阶码和尾数两部分组成,若阶码与尾数均采用补码,当阶码符号位为 0、尾数最高有效位为 1时,该浮点数是( )。
- A. 规格化的正数
- B. 规格化的负数
- C. 非规格化数
- D. 无法确定
3.设二进制数X = 11001101,执行逻辑右移一位后得到01100110,这等价于( )。
- A. 算术右移一位
- B. 无符号数除以 2
- C. 有符号数除以 2
- D. 循环右移一位
4.对两个无符号 4 位二进制数执行加法1011 + 0110,若结果保存在 4 位寄存器中,则溢出标志与进位标志的状态分别是( )。
- A. 无进位、无溢出
- B. 有进位、有溢出
- C. 有进位、无溢出
- D. 无进位、有溢出
5.表达式(A OR B) AND (NOT C)中,当A=1, B=0, C=1时,运算结果为( )。
- A. 1
- B. 0
- C. 无法计算
- D. 视运算优先级而定
二、应用数学与离散数学基础
6.设集合A={1,2,3},则集合A上可以定义的自反且对称的关系个数为( )。
- A. 3
- B. 6
- C. 8
- D. 16
7.一棵有n个结点的完全二叉树,其高度(根结点层次为 1)为( )。
- A. ⌈log₂(n+1)⌉
- B. ⌈log₂n⌉
- C. ⌊log₂n⌋
- D. ⌈log₂(n−1)⌉
8.用生成树求解最小生成树时,Kruskal 算法的基本思想是( )。
- A. 每次选择权值最小的、且加入后不形成环的边
- B. 每次选择与当前树相连的权值最小的边
- C. 深度优先遍历图中所有顶点
- D. 广度优先遍历图中所有顶点
9.下列命题逻辑公式中,与P → Q逻辑等价的是( )。
- A.
¬P ∨ Q - B.
¬(P ∨ Q) - C.
P ∧ ¬Q - D.
¬P ∧ Q
10.若事件A与B相互独立,且P(A)=0.4,P(B)=0.5,则P(A∪B)为( )。
- A. 0.9
- B. 0.2
- C. 0.7
- D. 0.6
三、计算机体系结构与主要部件
11.冯·诺依曼计算机的核心特征是( )。
- A. 存储程序并按地址顺序执行
- B. 采用并行计算结构
- C. 指令与数据分离存储
- D. 只使用寄存器做运算
12.在流水线处理器中,影响性能的主要"冒险"不包括( )。
- A. 结构冒险(资源冲突)
- B. 数据冒险(数据相关)
- C. 控制冒险(分支转移)
- D. 存储冒险(Cache 缺失)
13.Cache 与主存之间的映射方式中,命中率最高但硬件实现最复杂的是( )。
- A. 直接映射
- B. 全相联映射
- C. 组相联映射
- D. 段页式映射
14.若主存地址空间为 4GB,Cache 块大小为 64B,则主存的块内地址需要( )位二进制表示。
- A. 6
- B. 32
- C. 8
- D. 26
15.中断响应过程中,CPU 保存断点和现场后,接下来的首要工作是( )。
- A. 恢复现场
- B. 转入中断服务程序
- C. 屏蔽所有中断
- D. 清除中断标志
四、操作系统、程序设计语言与编译基础
16.采用抢占式优先级调度算法时,系统可以( )。
- A. 在进程运行中因更高优先级进程就绪而剥夺当前进程的 CPU
- B. 让低优先级进程永远不被调度
- C. 保证所有进程获得相同的 CPU 时间
- D. 只在进程主动让出 CPU 时才切换
17.若系统有 4 个进程并发执行,每个进程最多需要 3 个同类资源,为保证系统不会发生死锁,至少需要的资源数为( )。
- A. 12
- B. 4
- C. 9
- D. 8
18.虚拟存储管理采用请求分页时,页面置换算法中最优(但实际不可实现)的是( )。
- A. FIFO
- B. LRU
- C. OPT(最佳置换)
- D. Clock
19.编译程序的工作过程通常不包括( )。
- A. 词法分析
- B. 语法分析
- C. 语义分析与中间代码生成
- D. 系统调用
20.高级程序设计语言中,变量的作用域由( )决定。
- A. 变量的数据类型
- B. 变量被声明的位置及其所在的程序结构
- C. 变量的初值
- D. 变量所占的内存大小
五、常用数据结构与常用算法
21.在一个长度为n的顺序表中删除第i个元素(1≤i≤n),平均需要移动的元素个数约为( )。
- A. n
- B. n/2
- C. (n−1)/2
- D. 1
22.对长度为n的序列进行直接插入排序,其最坏情况下的时间复杂度为( )。
- A. O(n)
- B. O(n log n)
- C. O(n²)
- D. O(log n)
23.二叉排序树中序遍历的结果是( )。
- A. 无序序列
- B. 递减序列
- C. 递增序列
- D. 完全二叉树的层序序列
24.用栈实现表达式求值时,中缀表达式(a+b)*(c-d)的后缀表达式为( )。
- A.
ab+cd-* - B.
ab+*cd- - C.
a+b*cd- - D.
ab*cd+-
25.对给定序列{49, 38, 65, 97, 76, 13, 27}执行一趟快速排序(以第一个元素为基准)后,基准元素49最终所处位置左边全部( )。
- A. 大于 49
- B. 小于 49
- C. 等于 49
- D. 与 49 无关
六、数据库、网络与多媒体基础
26.关系数据库中,用于消除候选键与候选键之间传递依赖、使所有非主属性完全依赖于主键的规范化级别是( )。
- A. 1NF
- B. 2NF
- C. 3NF
- D. BCNF
27.在关系运算中,连接运算(Join)的结果是( )。
- A. 只保留公共属性
- B. 两个关系的笛卡尔积中选取满足连接条件的元组
- C. 两个关系的并集
- D. 两个关系的差集
28.OSI 参考模型中,负责在相邻节点间进行可靠数据传输(差错控制、流量控制)的层次是( )。
- A. 物理层
- B. 数据链路层
- C. 网络层
- D. 传输层
29.IP 地址192.168.1.0/24表示该网段可分配的主机地址个数为( )。
- A. 254
- B. 256
- C. 255
- D. 250
30.数字音频采样过程中,若采样频率为 44.1kHz、量化位数为 16 位、双声道,则每秒产生的数据量约为( )。
- A. 1411.2 KB
- B. 176.4 KB
- C. 705.6 KB
- D. 88.2 KB
七、C 程序设计语言(兼及 C++/Java/Visual Basic 选考)
31.在 C 语言中,表达式sizeof(int)的值( )。
- A. 恒等于 2
- B. 恒等于 4
- C. 由编译环境(平台)决定
- D. 运行时可改变
32.C 语言中,下列哪个语句能正确实现"将指针 p 指向的 int 变量的值加 1"?( )
- A.
p++; - B.
(*p)++; - C.
*(p++); - D.
&p++;
33.在 C++ 中,通过virtual声明的成员函数主要用于实现( )。
- A. 函数重载
- B. 运算符重载
- C. 运行时多态(动态绑定)
- D. 编译时多态
34.Java 语言中,用于捕获并处理异常的关键字组合是( )。
- A.
try ... catch - B.
try ... finally(缺少 catch) - C.
switch ... case - D.
throw ... throws
35.下列 C 语言数组定义与初始化中,语法错误的是( )。
- A.
int a[3] = {1,2,3}; - B.
int a[] = {1,2,3}; - C.
int a[3]; a = {1,2,3}; - D.
int a[3] = {0};
八、软件工程、软件过程改进与项目管理
36.下列软件生命周期模型中,以文档驱动、严格分阶段、反馈少为特征的是( )。
- A. 瀑布模型
- B. 原型模型
- C. 螺旋模型
- D. 增量模型
37.能力成熟度模型 CMMI 中,描述"组织已建立标准软件过程并被制度化"的成熟度等级是( )。
- A. 初始级(Level 1)
- B. 可重复级(Level 2)
- C. 已定义级(Level 3)
- D. 优化级(Level 5)
38.下列活动中,属于软件项目风险管理范畴的是( )。
- A. 编写单元测试用例
- B. 识别、分析并规划应对项目风险
- C. 绘制数据流图
- D. 进行代码评审
39.甘特图(Gantt Chart)主要用于软件项目管理中的( )。
- A. 需求分析
- B. 进度(时间)安排
- C. 质量度量
- D. 配置管理
40.在软件配置管理中,基线(Baseline)指的是( )。
- A. 所有文档的总称
- B. 经过正式评审和批准的、可作为进一步开发基础的配置项集合
- C. 代码仓库的根目录
- D. 每次提交的版本号
九、软件设计方法和技术
41.结构化设计方法中,衡量模块独立性的两个标准是( )。
- A. 内聚与耦合
- B. 抽象与封装
- C. 继承与多态
- D. 复用与移植
42.下列耦合类型中,耦合度最低(独立性最好)的是( )。
- A. 数据耦合
- B. 内容耦合
- C. 公共耦合
- D. 控制耦合
43.数据流图(DFD)中,用于表示"数据从哪里来、到哪里去"的图形元素是( )。
- A. 加工(圆角矩形)
- B. 数据流(箭头)
- C. 数据存储(双线)
- D. 外部实体(矩形)
44.在面向对象设计中,一个类可以继承多个父类的属性和方法,这种机制称为( )。
- A. 单一继承
- B. 多重继承
- C. 多态
- D. 重载
45.下列设计模式中,属于创建型(Creational)模式的是( )。
- A. 工厂方法(Factory Method)
- B. 观察者(Observer)
- C. 装饰器(Decorator)
- D. 策略(Strategy)
十、信息技术标准、安全性与法律法规
46.下列标准中,属于我国强制性国家标准编号前缀的是( )。
- A. GB/T
- B. GB
- C. ISO
- D. IEEE
47.下列信息安全技术中,用于保证数据完整性的核心手段是( )。
- A. 数字签名中的公钥加密
- B. 消息摘要(Hash 函数)
- C. 对称加密
- D. 访问控制
48.根据我国《计算机软件保护条例》,计算机软件著作权自( )产生。
- A. 软件登记之日
- B. 软件开发完成之日
- C. 软件首次发表之日
- D. 软件销售之日
49.下列行为中,属于侵犯软件著作权的是( )。
- A. 未经许可复制、发行他人享有著作权的软件
- B. 因学习研究需要少量复制他人软件供个人使用
- C. 合法取得软件后为存档制作备份
- D. 按许可证约定安装使用正版软件
十一、信息化与计算机应用基础
50.关于企业信息化与 ERP,下列说法不正确的是( )。
- A. ERP 将企业的物流、资金流、信息流集成管理
- B. 信息化建设应以业务需求为导向
- C. ERP 系统上线后即可完全取代所有管理决策
- D. 数据是企业信息化的重要资产
十二、计算机英文资料阅读理解
51.下列英文句子中,与"软件测试用来发现缺陷"含义最接近的是( )。
- A. Software testing is used to find defects in the system.
- B. Software testing guarantees the absence of all bugs.
- C. Software development is used to test systems.
- D. Software maintenance removes all defects forever.
52.“Object-oriented programming encapsulates data and behavior.” 中,单词encapsulates最恰当的中文含义是( )。
- A. 删除
- B. 封装
- C. 继承
- D. 编译
53.Which of the following best describes a “database transaction”?( )
- A. A unit of work that must be executed atomically (all-or-nothing).
- B. A backup file of the database.
- C. A query that only reads data.
- D. A network protocol.
科目二:软件设计(问答题)
说明:本部分为案例分析题,依据"按照系统总体设计规格说明书进行软件设计、编写程序设计规格说明书"等要求编制。共 4 道大题,覆盖结构化设计、数据库设计、面向对象设计、算法与程序设计。
试题一:结构化设计(数据流图与模块化)
某图书管理系统需完成"读者借书登记"功能,其顶层数据流图描述如下:
- 外部实体:读者、图书管理员
- 加工:登记借书、更新库存、打印借书单
- 数据存储:读者表、图书表、借阅记录
问题 1(4 分):请绘制该系统"登记借书"子系统的数据流图(DFD 0 层),要求标出至少 3 个加工、2 个数据存储和主要数据流。
问题 2(4 分):系统采用模块化设计。请举例说明模块设计中如何提高内聚、降低耦合各一种具体做法。
问题 3(4 分):若"更新库存"模块既要修改图书数量,又要负责打印报表,请问这违反了模块设计的什么原则?应如何改进?
试题二:数据库设计(E-R 图与关系规范化)
某高校选课系统涉及如下实体:
- 学生(学号、姓名、系别)
- 课程(课程号、课程名、学分、任课教师)
- 教师(教师号、姓名、职称)
选课关系为"一名学生可选多门课程,一门课程可被多名学生选修;每门课程由一名教师授课,一名教师可讲授多门课程"。
问题 1(5 分):请画出 E-R 图,标注实体、联系及其类型(1:1、1:n、m:n),并写出联系上的属性。
问题 2(4 分):将 E-R 图转换为关系模式,用下划线标出各关系的主键,并注明外键。
问题 3(4 分):关系"选课(学号,课程号,成绩)"中,若成绩不存在部分函数依赖,则该关系属于第几范式?为什么?
试题三:面向对象设计(类图与设计模式)
某订单处理系统具有以下需求:
- 订单可以按"现金"“信用卡”"支票"等多种方式支付;
- 未来可能增加新的支付方式;
- 系统希望在不同支付方式之间进行切换而不修改现有代码。
问题 1(5 分):请设计类图(Class Diagram),用支付接口/抽象类和具体支付类来满足"开闭原则"。
问题 2(4 分):你采用了哪种设计模式?简述其优点。
问题 3(4 分):若订单对象需要在状态变化时通知多个观察者(如短信通知、库存系统),应选用哪种设计模式?请简要画出其结构。
试题四:算法设计与程序填空(C 语言)
给定一个整数序列,要求设计并实现"二分查找"算法,在有序数组a[0..n-1]中查找关键字key。
问题 1(5 分):请用 C 语言编写二分查找函数,返回下标(未找到返回 -1),要求用递归方式实现,并说明其时间复杂度。
问题 2(4 分):二分查找对数据有何前提条件?若数据未排序,应改用哪种查找方法,其平均时间复杂度是多少?
问题 3(4 分):请将下列程序段补充完整,实现非递归的二分查找(只填①、②、③三处)。
intbinary_search(inta[],intn,intkey){intlow=0,high=n-1,mid;while(low<=high){mid=(low+high)/2;if(key==a[mid])returnmid;elseif(key<a[mid])①=mid-1;/* ① 处填空 */else②=mid+1;/* ② 处填空 */}return③;/* ③ 处填空:未找到返回值 */}参考答案与解析
科目一(选择题)
| 题号 | 答案 | 简要解析 |
|---|---|---|
| 1 | D | -8的补码:1000补-8,即 8 位10000000。 |
| 2 | A | 阶码为正(符号位 0)、尾数最高位为 1,表示规格化正数。 |
| 3 | B | 无符号逻辑右移一位等价于除以 2;算术右移保留符号位。 |
| 4 | C | 1011+0110=10001,产生进位;对无符号数而言"溢出"通常看进位,结果 4 位为 0001,无算术溢出。 |
| 5 | B | (1 OR 0) AND (NOT 1) = 1 AND 0 = 0。 |
| 6 | C | 自反需含 3 个对角元素,另可任选剩余 3 对对称元素中的若干对,共 2³=8 种。 |
| 7 | A | 完全二叉树高度 = ⌈log₂(n+1)⌉。 |
| 8 | A | Kruskal 每次选权值最小且不形成环的边。 |
| 9 | A | P→Q ≡ ¬P∨Q。 |
| 10 | C | 独立:P(A∪B)=0.4+0.5-0.4×0.5=0.7。 |
| 11 | A | 存储程序、按地址顺序执行是冯·诺依曼特征。 |
| 12 | D | 经典三类冒险为结构、数据、控制冒险。 |
| 13 | B | 全相联映射命中率最高但需并行比较全部块,硬件最复杂。 |
| 14 | A | 块大小 64B,块内地址 = log₂64 = 6 位。 |
| 15 | B | 保存断点与现场后转入中断服务程序。 |
| 16 | A | 抢占式调度允许更高优先级进程剥夺当前 CPU。 |
| 17 | C | 为避免死锁,资源数应 ≥ n×(m−1)+1 = 4×2+1 = 9(每个进程最多要 3 个,先各给 2 个后仍能保证有一进程申请到第 3 个并完成)。 |
| 18 | C | OPT 理论最优但无法预知未来,实际不可实现。 |
| 19 | D | 编译过程含词法/语法/语义分析与中间代码生成等,不含系统调用。 |
| 20 | B | 作用域由声明位置及其所在程序结构决定。 |
| 21 | C | 删除第 i 个元素平均移动 (n−1)/2 个。 |
| 22 | C | 直接插入排序最坏(逆序)为 O(n²)。 |
| 23 | C | 二叉排序树中序遍历为递增序列。 |
| 24 | A | 后缀表达式为ab+cd-*。 |
| 25 | B | 一趟快排后基准左侧均小于 49。 |
| 26 | C | 3NF 消除传递依赖,使非主属性完全依赖主键(2NF 消除部分依赖)。 |
| 27 | B | 连接是选取满足条件的笛卡尔积元组。 |
| 28 | B | 数据链路层负责相邻节点间差错与流量控制。 |
| 29 | A | /24 有 256−2=254 个可分配主机地址。 |
| 30 | B | 44100×16×2/8 ≈ 176.4 KB/s。 |
| 31 | C | sizeof(int)由平台/编译器决定。 |
| 32 | B | (*p)++使 p 指向的 int 值加 1。 |
| 33 | C | virtual 实现运行时多态(动态绑定)。 |
| 34 | A | try...catch用于捕获异常。 |
| 35 | C | 数组名不可作为左值整体赋值,语法错误。 |
| 36 | A | 瀑布模型文档驱动、严格分阶段。 |
| 37 | C | Level 3 为已定义级。 |
| 38 | B | 识别、分析、规划应对风险属于风险管理。 |
| 39 | B | 甘特图用于进度(时间)安排。 |
| 40 | B | 基线是经评审批准、可作开发基础的配置项集合。 |
| 41 | A | 模块独立性的标准是内聚与耦合。 |
| 42 | A | 数据耦合耦合度最低。 |
| 43 | B | 数据流用箭头表示。 |
| 44 | B | 一个类继承多个父类为多重继承。 |
| 45 | A | 工厂方法属创建型模式。 |
| 46 | B | GB 为强制性国标,GB/T 为推荐性国标。 |
| 47 | B | 消息摘要(Hash)用于保证数据完整性。 |
| 48 | B | 软件著作权自开发完成之日产生。 |
| 49 | A | 未经许可复制发行属侵权。 |
| 50 | C | ERP 不能完全取代所有管理决策,表述错误。 |
| 51 | A | 测试用于发现缺陷。 |
| 52 | B | encapsulates = 封装。 |
| 53 | A | 数据库事务是需原子执行(要么全成要么全败)的工作单元。 |
科目二(问答题)要点提示
试题一(结构化设计)
- 问题 1:DFD 0 层应包含加工(登记借书、更新库存、打印借书单)、数据存储(读者表、图书表、借阅记录)、外部实体(读者、图书管理员)及数据流(借书请求、读者信息、库存变化、借书单等)。
- 问题 2:提高内聚——将"同一数据对象的一组操作"放入同一模块(功能内聚);降低耦合——模块间仅传递必要参数,不共享全局数据(数据耦合)。
- 问题 3:违反"单一职责/功能内聚"原则,应拆分"更新库存"与"打印报表"为独立模块,保持功能单一。
试题二(数据库设计)
- 问题 1:学生——选课——课程为 m:n 联系;课程——授课——教师为 n:1(多对一)联系。
- 问题 2:学生(学号,姓名,系别);课程(课程号,课程名,学分,任课教师号);教师(教师号,姓名,职称);选课(学号,课程号,成绩),其中学号、课程号为外键。
- 问题 3:选课关系中主键为(学号,课程号),成绩既无部分函数依赖(属于 2NF)也无传递依赖(属于 3NF)。
试题三(面向对象设计)
- 问题 1:定义支付接口
Payment { pay(amount) },具体类CashPayment、CreditCardPayment、CheckPayment实现该接口,订单持有支付接口引用。 - 问题 2:采用策略模式(Strategy),满足开闭原则,便于扩展新支付方式、运行期切换算法。
- 问题 3:采用观察者模式(Observer),主题(订单)维护观察者列表,状态变化时通知所有观察者(短信、库存系统)。
试题四(算法与程序填空)
- 问题 1:递归二分查找;时间复杂度 O(log₂n)。
- 问题 2:前提为数组已有序(升序);若未排序应改用顺序查找,平均时间复杂度 O(n)。
- 问题 3:①
high;②low;③-1。
说明:本模拟卷根据官方《软件设计师》考试大纲要求(数据表示与运算、离散数学、体系结构、操作系统与编译、数据结构与算法、数据库/网络/多媒体、程序设计语言、软件工程与项目管理、软件设计方法、标准/安全/法规、信息化、英文阅读等 12 个方向)编制,供备考练习使用。