2008 上半年软件评测师考试真题及答案-上午卷
在计算机体系结构中,CPU 内部包括程序计数器 PC、存储器数据寄存器 MDR、指令寄存器 IR
和存储器地址寄存器 MAR 等。若 CPU 要执行的指令为:MOV
R0, #100(即将数值 100 传
送到寄存器 R0 中),则 CPU 首先要完成的操作是(1)。
(1)A.100→R0
B.100→MDR
C.PC→MAR
D.PC→IR
【答案】C
【解析】本题考查计算机基本工作原理。
CPU 中的程序计数器 PC 用于保存要执行的指令的地址,访问内存时,需先将内存地址
送入存储器地址寄存器 MAR 中,向内存写入数据时,待写入的数据要先放入数据寄存器 MDR。
程序中的指令一般放在内存中,要执行时,首先要访问内存取得指令并保存在指令寄存器
IR 中。
计算机中指令的执行过程一般分为取指令、分析指令并获取操作数、运算和传送结果等
阶段,每条指令被执行时都要经过这几个阶段。若 CPU 要执行的指令为:MOV R0,# 100(即
将数值 100 传送到寄存器 R0 中),则 CPU 首先要完成的操作是将要执行的指令的地址送入程
序计数器 PC,访问内存以获取指令。
现有四级指令流水线,分别完成取指、取数、运算、传送结果四步操作。若完成上述操
作的时间依次为 9ns、10ns、6ns、8ns,则流水线的操作周期应设计为(2)ns。
(2)A.6
D.10
【答案】D
B.8
C.9
【解析】本题考查计算机流水线基本工作原理。
流水线的基本原理是把一个重复的过程分解为若干个子过程,前一个子过程为下一个子
过程创造执行条件,每一个过程可以与其他子过程同时进行。流水线各段执行时间最长的那
段为整个流水线的瓶颈,一般的,将其执行时间称为流水线的周期。
内存按字节编址,地址从 90000H 到 CFFFFH,若用存储容量为 16K×8bit 的存储器芯片
构成该内存,至少需要(3)片。
(3)A.2
B.4
C.8
D.16
【答案】D
【解析】本题考查计算机中的存储部件组成
内存按字节编址,地址从 90000 到 CFFFFH 时,存储单元数为 CFFFFH-90000H+1=40000H,
即 218B。若存储芯片的容量为 16K×8bit,则需 218/16K=24 个芯片组成该内存。
CPU 中的数据总线宽度会影响(4)。
(4) A.内存容量的大小
B.系统的运算速度
C.指令系统的指令数量
D.寄存器的宽度
【答案】B
【解析】本题考查计算机组成基础知识。
CPU 与其他部件交换数据时,用数据总线传输数据。数据总线宽度指同时传送的二进制
位数,内存容量、指令系统中的指令数量和寄存器的位数与数据总线的宽度无关。数据总线
宽度越大,单位时间内能进出 CPU 的数据就越多,系统的运算速度越快。
利用高速通信网络将多台高性能工作站或微型机互连构成机群系统,其系统结构形式属
于(5)计算机。
(5) A.单指令流单数据流(SISD)
B.多指令流单数据流(MISD)
C.单指令流多数据流(SIMD)
D.多指令流多数据流(MIMD)
【答案】D
【解析】本题考查计算机系统结构基础知识.
传统地,串行计算是指在单个计算机〔具有单个中央处理单元)上顺序地执行指令。CPU
按照一个指令序列执行以解决问题.但任意时刻只有一条指令可提供随时并及时的使用。
并行计算是相对于串行计算来说的,并行计算分为时间上的并行和空间上的并行。时间
上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
空间上的并行导致了两类并行机的产生,按照 Flynn 的说法,根据不同指令流-数据流
组织方式把计算机系统分成 4 类:单指令流单数据流〔SISD,如单处理机)、单指令流多数据
流(SIMD,如相联处理机)、多指令流单数据流( MISD,如流水线计算机)和多指令流多数
据流(MIMD,如多处理机系统)。利用高速通信网络将多台一高性能工作站或微型机互连构
成机群系统,其系统结构形式属于多指令流多数据流(MIMD)计算机。
内存采用段式存储管理有许多优点,但(6)不是其优点。
(6) A.分段是信息的逻辑单位,用户不可见
B.各段程序的修改互不影响
C.地址变换速度快、内存碎片少
D.便于多道程序共享主存的某些段
【答案】C
【解析】本题考查操作系统内存管理方面的基本概念。
操作系统内存管理方案有许多种,其中,分页存储管理系统中的每一页只是存放信息的
物理单位,其本身没有完整的意义,因而不便于实现信息的共享,而段却是信息的逻辑单位,
各段程序的修改互不影响,无内碎片,有利于信息的共享。
在软件设计和编码过程中,采取(7)的做法将使软件更加容易理解和维护。
(7) A.良好的程序结构,有无文档均可
B.使用标准或规定之外的语句
C.编写详细正确的文档,采用良好的程序结构
D.尽量减少程序中的注释
【答案】C
【解析】
软件的易理解程度和可维护程度是衡量软件质量的重要指标,对于程序是否容易修改有
重要影响。为使得软件更加容易理解和维护,需要从多方面做出努力。首先,要有详细且正
确的软件文档,同时文档应始终与软件代码保持一致;其次,编写的代码应该具有良好的编
程风格,如采用较好的程序结构,增加必要的程序注释,尽量使用行业或项目规定的标准等。
软件文档按照其产生和使用的范围可分为开发文档、管理文档和用户文档。其中开发文
档不包括(8)。
(8)A.软件需求说明
B.可行性研究报告
C.维护修改建议 D.项目开发
计划
【答案】C
【解析】本题考查软件文档的分类和作用。
软件文档在软件开发过程和运行维护中起着重要作用,比如文件可以提高软件开发过程
的能见度,提高开发效率,便于协调软件的开发、使用和维护,另外也可对软件的运维和培
训提供相关信息,便于各类相关人员之间进行交流。按照文档产生和使用范围,软件文件可
分为开发文档、管理文档和用户文档,其中开发文档产生于软件开发过程,是前一阶段的工
作成果体现,也是后一阶段工作的依据,用户文档是为用户准备的软件使用、操作、维护的
资料。
软件维护成本在软件成本中占较大比重。为降低维护的难度,可采取的措施有(9)。
(9) A.设计并实现没有错误的软件
B.限制可修改的范围
C.增加维护人员数量
D.在开发过程中就采取有利于维护的措施,并加强维护管理
【答案】D
【解析】
软件的可维护性、维护过程管理是否规范等对于软件维护成本具有举足轻重的作用。为
提高软件的可维护性,在软件开发阶段就必须采取相关措施,如编制相关软件文档、规范软
件编码规范、进行充分有效的测试、组织阶段评审等,而在软件提交用户使用后,必须规范
维护过程管理。另外,各过程中可使用相关的辅助工具软件。
关于软件著作权产生的时间,表述正确的是(10)。
(10)A.自软件首次公开发表时
B.自开发者有开发意图时
C.自软件得到国家著作权行政管理部门认可时
D.自软件完成创作之日起
【答案】D
【解析】
著作权法规定,软件著作权自软件开发完成之日起产生。
李某大学毕业后在 M 公司销售部门工作,后由于该公司软件开发部门人手较紧,李某被
暂调到该公司软件开发部开发新产品,2 周后,李某开发出一种新软件。该软件著作权应归
(11)所有。
(11)A.李某
B.M 公司
C.李某和 M 公司
D.软件开发部
【答案】B
【解析】
因李某大学毕业后在 M 公司销售部门工作,后由于该公司软件开发部门人手较紧,李某
被暂调到该公司软件开发部开发新产品,2 周后,李某开发出一种新软件。该软件与工作任
务有关,属于职务作品。所以,该项作品应属于软件公司所有。
法律依据:著作权法规定“执行本单位的任务或者主要是利用本单位的物质条件所完成
的职务作品,其权利属于该单位。”
职务作品人是指作品人或者设计入执行本单位的任务,或者主要是利用本单位的物质技
术条件所完成的作品的人。该作品的权利为该作品人所在单位所有。职务作品包括以下情形:
①在本职工作中做出的作品。
②履行本单位交付的本职工作之外的任务所做出的作品。
③退职、退休或者调动工作后 1 年内做出的,与其在原单位承担的本职工作或者原单位
分配的任务有关的作品。
④主要利用本单位的物质技术条件(包括本单位的资金、设备、不对外公开的技术资料
等)完成的作品。
(12)是指把数据以及操作数据的相关方法组合在同一个单元中,使我们可以把类作为
软件中的基本复用单元,提高其内聚度,降低其耦合度。面向对象中的(13)机制是对现实
世界中遗传现象的模拟,通过该机制, 基类的属性和方法被遗传给派生类。
(12)A.封装
(13)A.封装
B.多态
B.多态
C.继承
C.继承
D.变异
D.变异
【答案】A
C
【解析】本题考查的是面向对象的基本概念。
封装是指把数据以及操作数据的相关方法组合在同一个单元中。而多态指同一个消息可
以具有不同的响应。面向对象中的继承使得子类能够获得父类的属性和方法,如同现实世界
中的遗传现象。
(14)以静态或动态的连接方式,为应用程序提供一组可使用的类。(15)除了提供可
被应用程序调用的类以外,还基本实现了一个可执行的架构。
(14)A.函数库
(15)A.函数库
B.类库
B.类库
C.框架
C.框架
D.类属
D.类属
【答案】B
C
【解析】本题考查的是框架和类库的概念与区别。
类库为应用程序提供了一组可以被使用的类,而框架除了提供类之外,还基本实现了一
个可以执行的架构。函数库提供被调用的函数。
(16)是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。
(16)A.结构化开发方法
B.Jackson 系统开发方法
C.Booch 方法
D.UML(统一建模语言)
【答案】A
【解析】本题考查软件开发方法基本概念
结构化开发方法是传统的、也是应用较为广发的一种软件开发方法,它基于数据流进行
需求分析和软件设计,用抽象模型的概念,按照软件内部数据传递和转换关系,对问题和功
能自顶向下逐层分解。Jackson 系统开发方法是一种典型的面向数据结构的分析和设计方
法,以活动为中心,一连串活动的顺序组合成一个完整的工作进程。Booch 比方法是一种面
向对象的软件开发方法。UML 几仅仅是一种建模标准语言,规定了构成软件的各个元素和构
件的图示规范。
采用 UML 进行软件设计时,可用(17)关系表示两类事物之间存在的特殊/一般关系,
用聚集关系表示事物之间存在的整体/部分关系
(17)A.依赖
B.聚集
C.泛化
D.实现
【答案】C
【解析】本题考查对 UML 中关系概念的理解。
按照面向对象技术的描述,若两类事物之间存在特殊/一般关系,则用继承机制表示该
关系,即 UML 中的泛化关系。
风险分析在软件项目开发中具有重要作用,包括风险识别、风险预测、风险评估和风险
控制等。“建立风险条目检查表”是(18)时的活动,“描述风险的结果”是(19)时的活动。
(18)A.风险识别
B.风险预测
C.风险评估
D.风险控制
(19)A.风险识别
B.风险预测
C.风险评估
D.风险控制
【答案】A
B
【解析】本题考查软件开发过程中的风险分析基础知识。
风险分析包括风险识别、风险预测、风险评估和风险控制等 4 个不同活动,在风险识别
过程中,要识别潜在的预算、进度、个体、资源、用户和需求等方面的问题以及对整个项目
的影响,并建立风险条目检查表,列出所有可能的风险事项。在风险预测过程中,需要建立
一个表示风险可能性的参考标准,描述风险条目的结果,估计风险对项目的影响等。
关于汇编语言,以下叙述中正确的是(20)。
(20)A.汇编语言源程序可以直接在计算机上运行
B.将汇编语言源程序转换成目标程序的软件称为解释程序
C.在汇编语言程序中,不能定义符号常量
D.将汇编语言源程序翻译成机器语言程序的软件称为汇编程序
【答案】D
【解析】本题考查程序语言基本知识。
计算机能直接识别或执行的语言是机器语言,其他形式的语言程序都要先翻译成机器语
言才能运行。汇编语言是对机器语言的第一层抽象,将 0、1 序列表示的操作用符号表示,
例如,用 MOV 表示数据传送、ADD 表示相加运算等,因此汇编语言需要翻译,实现该翻译任
务的软件称为汇编程序(或汇编器)
对高级语言源程序进行编译时,可发现源程序中的(21)错误。
(21)A.堆栈溢出
B.变量未定义
C.指针异常
D.数组元素下标越界
【答案】B
【解析】
高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误又可分为静态
语义错误和动态语义错误。语法错误指语言结构上的错误,静态语义错误指编译时就能发现
的程序含义上的错误,动态语义错误只有在程序运行时才能表现出来。堆栈溢出、指针异常
和数组元素下标越界都是程序运行中才能出现的问题,而遵循先声明后引用原则的程序语言
必须先定义变量,然后才能使用,否则编译器会在语法分析阶段指出变量未定义错误。
编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间
代码生成、代码优化、目标代码生成等几个阶段,其中,(22)并不是每种编译器都必需的
(22)A.词法分析和语法分析
B.语义分析和中间代码生成
C.中间代码生成和代码优化
D.代码优化和目标代码生成
【答案】C
【解析】
编译器对高级语言源程序的处理过程可以分为词法分析、语法分析、语义分析、中间代
码生成、代码优化、目标代码生成等阶段,以及符号表管理模块和出错处理模块。在编译器
的分析综合模式中,前端将源程序翻译成一种中间表示,后端根据这个中间表示生成目标代
码。目标语言的细节尽可能限制在后端。尽管可以将源程序直接翻译成目标语言代码,但使
用与机器无关的中间表示形式具有以下优点:
①重置目标比较容易。不同机器上的编译器可以在己有前端的基础上附加一个适合这个
机器的后端来生成。
②可以在中间表示上应用与机器无关的代码优化器。
下列叙述中错误的是(23)。
(23)A.面向对象程序设计语言可支持过程化的程序设计
B.给定算法的时间复杂性与实现该算法所采用的程序设计语言无关
C.与汇编语言相比,采用脚本语言编程可获得更高的运行效率
D.面向对象程序设计语言不支持对一个对象的成员变量进行直接访问
【答案】C
【解析】本题考查程序设计基础知识。
关于脚本语言的一些基本知识如下:
①脚本语言(JavaSript,VBscript 等)是介于 HTML 和 C、C++、Java、C#等编程语言
之间的程序设计语言。HTML 通常用于格式化和链接文本,而编程语言通常用于向机器发出
一系列复杂的指令。
②脚本语言中也使用变量和函数,这一点与编程语言相似。与编程语言之间最大的区别
是编程语言的语法和规则更为严格和复杂。
③脚本语言一般都有相应的脚本引擎来解释执行,是一种解释性语言,一般需要解释器
才能运行。