一、二级公共基础知识选择题参考答案及解析
(一) 数据结构与算法
(1)D 【解析】算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A选项错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
(2)A 【解析】算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。
(3)A 【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间,所以选择A选项。
(4)B 【解析】只有B选项369可以用无符号整数来表示和存储。A选项-369有负号,C选项0.369是小数,都不能用无符号整数类存储。D选项是一个整数集合,得用数组来存储。
(5)A 【解析】程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。
(6)B 【解析】线性结构应满足:有且只有一个根结点;每个结点最多有一个前件,也最多有一个后件,所以B选项正确。有一个以上根结点的数据结构一定是非线性结构,所以A选项错误。循环链表和双向链表都是线性结构的数据结构。
(7)A 【解析】链式存储结构既可以针对线性结构,也可以针对非线性结构,所以B选项与C选项错误。链式存储结构中的每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D选项错误。
(8)A 【解析】作为一个算法,一般应具有以下几个基本特征:可行性、确定性、有穷性、拥有足够的情报。本题答案为A选项。
(9)D 【解析】栈是先进后出的线性表,所以A选项错误;队列是先进先出的线性表,所以B选项错误;循环队列是线性结构的线性表,所以C选项错误。
(10)B 【解析】栈按先进后出的原则组织数据,入栈最早的最后出栈,所以选择B选项。
(11)B 【解析】栈是按先进后出的原则组织数据的,数据的插入和删除都在栈顶进行操作。
(12)C 【解析】栈是限定在一端进行插入与删除的线性表。栈是按照先进后出的或后进先出的原则组织数据的,因此,栈也被称为先进后出表或后进先出表。本题答案是C选项。
(13)C 【解析】栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C选项。
(14)A 【解析】栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除,栈底元素最先入栈却最后被删除,所以选择A选项。
(15)C 【解析】栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的,因此,栈称为先进后出表,或后进先出表,所以选择C选项。
(16)D 【解析】队列的修改是依先进先出的原则进行的,故D选项正确。
(17)B 【解析】栈是按先进后出的原则组织数据的。队列按先进先出的原则组织数据。
(18)C 【解析】树是简单的非线性结构,所以二叉树作为树的一种,也是一种非线性结构。
(19)D 【解析】循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。
(20)D 【解析】循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A选项错误;在循环队列中只需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,所以B选项与C选项错误。
(21)B 【解析】在实际应用中,队列的顺序存储结构一般采用循环队列的形式。
(22)D 【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头、尾指针仍要加1,朝前移动,只不过当头、尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时队尾指针向前追赶队头指针,出队时队头指针向前追赶队尾指针,故队空和队满时,头尾指针均相等,故答案为D选项。
(23)C 【解析】一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。
(24)A 【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储节点,是线性表。在单链表中的节点中增加一个指针域指向它的直接前件,这样的链表就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的
特征,但又不需要增加额外的存储空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。
(25)A 【解析】栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A选项。
(26)C 【解析】根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6(个)。
(27)A 【解析】根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中度为2的结点是5-1=4个,所以度为1的结点个数是25-5-4=16(个)。
(28)B 【解析】根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以选择B选项。
(29)C 【解析】前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树。并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则,①访问根结点;②前序遍历左子树;③前序遍历右子树,故C选项正确。
(30)C 【解析】当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。
(31)D 【解析】除了堆排序算法的比较次数是 O(nlog2n)外,其他的都是n(n-1)/2。
(32)D 【解析】冒泡排序、直接插入排序和简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。
(二) 程序设计基础
(1)A 【解析】结构化程序设计的原则包括:自顶向下、逐步求精、模块化、限制使用GOTO语句,所以选择A选项。
(2)B 【解析】对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体中,仅对外提供访问方式。B选项正确。
(3)B 【解析】1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复3种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
(4)A 【解析】面向对象设计方法的主要特征有对象、类和实例、消息、继承与多态性,所以选择A选项。
(5)A 【解析】对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好,所以选择A选项。
(6)A 【解析】对象之间进行通信的构造叫做消息,故A选项正确。多态性是指同一个操作可以是不同对象的行为,故D选项错误。对象不一定必须有继承性,故C选项错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,故B选项错误。
(7)D 【解析】继承是面向对象方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
(8)B 【解析】数据流图从数据传递和加工的角度来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)等。本题答案为B选项。
(三) 软件工程基础
(1)C 【解析】编译软件、操作系统、汇编程序都属于系统软件,只有C选项教务管理系统才是应用软件。
(2)A 【解析】通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始到该软件产品不能使用为止的整个时期都属于软件生命周期。
(3)D 【解析】软件生命周期的主要活动阶段如下。
可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。
需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能,编写软件规格说明书及初步的用户手册,提交评审。
软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。
软件实现。把软件设计转换成计算机可以接受的程序代码,即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
软件测试。在设计测试用例的基础上,检验软件的各个组成部分,编写测试分析报告。
运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
本题答案是D选项。
(4)A 【解析】软件生命周期可以分为软件定义、软件开发与软件运行维护3个阶段,主要活动阶段是可行性研究与计划阶段、需求分析、软件设计、软件实现、软件测试、运行和维护,不包括市场调研,所以选择A选项。
(5)B 【解析】A选项错误,可行性分析阶段产生可行性分析报告。C选项错误,概要设计说明书是总体设计阶段产生的文档。D选项错误,集成测试计划是在概要设计阶段编写的文档。B选项正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。
(6)A 【解析】结构化程序设计方法的4 条原则是:自顶向下,程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标;逐步求精,对复杂问题,应设计一些子目标作为过渡,逐步细节化;模块化,一个复杂问题肯定是由若干稍简单的问题构成的,解决这个复杂问题的程序也应对应若干稍简单的问题,分解成若干稍小的部分;限制使用GOTO语句。本题答案为A选项。
(7)B 【解析】在需求分析阶段可以使用的工具有数据流图(DFD图)、数据字典(DD)、判定树与判定表,所以选择B选项。
(8)D 【解析】数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。
(9)A 【解析】在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典,因此选A选项。
(10)D 【解析】软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。
软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流,B选项正确;②反映出用户问题的结构,可以作为软件开发工作的基础和依据,C选项正确;③作为确认测试和验收的依据,A选项正确。
(11)A 【解析】详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A选项错误。
(12)B 【解析】软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。
(13)C 【解析】从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计,所以A、B、D选项正确,C选项为软件测试阶段的任务。
(14)B 【解析】模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A选项错误,B选项正确。耦合性是模块间互相连接的紧密程度的度量,而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C选项与D选项错误。
(15)C 【解析】系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的,而非软件设计时用到,所以选择C选项。
(16)C 【解析】N-S图提出了用方框图来代替传统的程序流程图,所以A选项不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B选项不对。E-R图是数据库中用于表示E-R模型的图示工具,所以D选项不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。
(17)C 【解析】在数据流程图中,用标有名字的箭头表示数据流;在程序流程图中,用标有名字的箭头表示控制流,所以选择C选项。
(18)A 【解析】软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以A选项错误。程序调试的基本步骤有:错误定位、修改设计和代码以排除错误、进行回归测试以防止引进新的错误。程序调试通常称为De-bug,即排错。软件测试的基本准则有:所有测试都应追溯到需求,严格执行测试计划,排除测试的随意性,充分注意测试中的群集现象,程序员应避免检查自己的程序,穷举测试不可能,妥善保存测试计划等文件。
(19)D 【解析】软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,不是为了评估软件或改正错误。
(20)D 【解析】所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。本题答案为D选项。
(21)C 【解析】黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C选项。而A、B、D选项均为白盒测试方法。
(22)B 【解析】黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择B选项。
(23)B 【解析】白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断-条件覆盖,选择B选项。其余为黑盒测试法。
(四) 数据库设计基础
(1)B 【解析】数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等,是一种在操作系统之上的系统软件。
(2)C 【解析】数据定义语言,负责数据的模式定义与数据的物理存取构建;数据操纵语言,负责数据的操纵,包括查询及增、删、改等操作;数据控制语言,负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
(3)A 【解析】数据库应用系统中的核心问题是数据库的设计。
(4)C 【解析】数据管理发展至今已经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便,逻辑性强,物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C选项。
(5)C 【解析】数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,故C选项错误。
(6)D 【解析】数据库系统的三级模式是概念模式、外模式和内模式,所以选择D选项。
(7)B 【解析】数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B选项。
(8)C 【解析】数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择C选项。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。
(9)C 【解析】两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案为C选项。
(10)B 【解析】因为一间宿舍可以住多个学生,即多个学生住在一间宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。
(11)D 【解析】因为一个教师可讲授多门课程,而一门课程又能由多个教师讲授,所以它们之间是多对多的关系,可以表示为m:n。
(12)C 【解析】因为一个人可以操作多台计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的联系。
(13)C 【解析】在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成的。在表框架中,按行可以存放数据,每行数据称为元组。本题答案是B选项。
(14)C 【解析】在E-R图中,实体集用矩形,属性用椭圆,联系用菱形。
(15)D 【解析】层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以3种数据库的划分原则是数据之间的联系方式。
(16)C 【解析】数据库是存储在计算机存储设备中的、结构化的相关数据的集合。数据库中的数据不只是面向某一项特定的应用,而是面向多种应用,可以被多个用户、多个应用程序共享,不具有独立性的系统。设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。本题答案为C选项。
(17)B 【解析】关系模型实体间的联系采用二维表来表示,简称表。C选项为网状模型实体间的联系,D选项为层次模型实体间的联系,A选项则刻画了实体。
(18)A 【解析】实体完整性约束要求关系的主键中属性值不能为空值,所以选择A选项。
(19)D 【解析】在关系T 中包含了关系R与S中的所有元组,所以进行的是并运算。
(20)B 【解析】投影运算是指对于关系内的域指定可引入新的运算。本题中S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系,所以选择B选项。
(21)D 【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的有序组可知R与S进行的是自然连接操作。
(22)D 【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B选项错误。笛卡儿积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C选项错误。根据关系T可以很明显地看出是从关系R与关系S中取得相同的关系组,所以取的是交运算,选择D选项。
(23)A 【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T中的元组可以判断R和S做的是自然连接操作。
(24)D 【解析】关系T中的元组是关系R中有而关系S中没有的元组的集合,即从关系R中除去与关系S中相同的元组后得到的关系T,所以做的是差运算。
(25)A 【解析】由关系R到关系S为一元运算,排除C选项和D选项。关系S是关系R的一部分,是通过选择之后的结果,因此选A选项。
(26)A 【解析】关系R和关系S有公共域,关系T是通过公共域的等值进行连接的结果,符合自然连接,故选A选项。
(27)C 【解析】如果T=R/S,则T称为R除以S的商。在除运算中,T的域由R中那些不出现在S中的域所组成,对于T中的任意有序组,由它与关系S中每个有序组所构成的有序组均出现在关系R中,所以本题选择C选项。
(28)A 【解析】数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。
(29)D 【解析】数据库设计过程主要包括需求分析、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。
(30)C 【解析】从E-R图到关系模型的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。
(31)C 【解析】E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。
(32)C 【解析】学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C选项。