一、二级公共基础知识的高频考点
(一) 数据结构与算法
【考点1】 算法的基本概念
1.算法的基本概念
(1)概念:算法是指一系列解决问题的清晰指令。
(2)4个基本特征:可行性、确定性、有穷性、拥有足够的情报。
(3)两种基本要素:对数据对象的运算和操作、算法的控制结构(运算和操作时间的顺序)。
(4)设计的基本方法:列举法、归纳法、递推法、递归法、减半递推技术和回溯法。
2.算法的复杂度
(1)算法的时间复杂度:执行算法所需要的计算工作量。
(2)算法的空间复杂度:执行算法所需的内存空间。
【考点2】 数据结构的基本概念
数据结构指相互有关联的数据元素的集合,即数据的组织形式。其中逻辑结构反映数据元素之间的逻辑关系;存储结构为数据的逻辑结构在计算机存储空间中的存放形式,有顺序存储、链式存储、索引存储和散列存储4种方式。
数据结构按各元素之间前后件关系的复杂度可划分为以下两种。
(1)线性结构:有且只有一个根结点,且每个结点最多有一个直接前驱和一个直接后继的非空数据结构。
(2)非线性结构:不满足线性结构的数据结构。
【考点3】 线性表及其顺序存储结构
1.线性表的基本概念
线性结构又称线性表,线性表是最简单也是最常用的一种数据结构。
2.线性表的顺序存储结构
元素所占的存储空间必须连续。
元素在存储空间的位置是按逻辑顺序存放的。
3.线性表的插入运算
在第i个元素之前插入一个新元素的步骤如下。
步骤一:把原来第n个结点至第i个结点依次往后移一个元素位置。
步骤二:把新结点放在第i个位置上。
步骤三:修正线性表的结点个数。
在最坏情况下,即插入元素在第一个位置,线性表中所有元素均需要移动。
4.线性表的删除运算
删除第i个位置的元素的步骤如下。
步骤一:把第i个元素之后不包括第i个元素的n-i个元素依次前移一个位置。
步骤二:修正线性表的结点个数。
【考点4】 栈和队列
1.栈及其基本运算
(1)基本概念:栈是一种特殊的线性表,其插入运算与删除运算都只在线性表的一端进行,也被称为“先进后出”表或“后进先出”表。
栈顶:允许插入与删除的一端。
栈底:栈顶的另一端。
空栈:栈中没有元素的栈。
(2)特点。
栈顶元素是最后被插入和最早被删除的元素。
栈底元素是最早被插入和最后被删除的元素。
栈有记忆作用。
在顺序存储结构下,栈的插入和删除运算不需移动表中其他数据元素。
栈顶指针top动态反映了栈中元素的变化情况。
(3)顺序存储和运算:入栈运算、退栈运算和读栈顶运算。
2.队列及其基本运算
(1)基本概念:队列是指允许在一端进行插入,在另一端进行删除的线性表,又称“先进先出”的线性表。
队尾:允许插入的一端,用尾指针指向队尾元素。
排头:允许删除的一端,用头指针指向头元素的前一位置。
(2)循环队列及其运算。
所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。
入队运算是指在循环队列的队尾加入一个新元素。当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。
退队运算是指在循环队列的队头位置退出一个元素并赋给指定的变量。首先将队头指针进一,然后将排头指针指向的元素赋给指定的变量。当循环队列为空(s=0)时,不能进行退队运算,这种情况称为“下溢”。
【考点5】 线性链表
在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
【考点6】 树和二叉树
1.树的基本概念
树是简单的非线性结构,树中有且仅有一个没有前驱的结点称为“根”,其余结点分成m个互不相交的有限集合T1, T2,…,Tm,每个集合又是一棵树,称T1,T2,…,Tmm为根结点的子树。
父结点:每一个结点只有一个前件,无前件的结点只有一个,称为树的根结点(简称树的根)。
子结点:每一个结点可以有多个后件,无后件的结点称为叶子结点。
树的度:所有结点最大的度。
树的深度:树的最大层次。
2.二叉树的定义及其基本性质
(1)二叉树的定义:二叉树是一种非线性结构,是有限的结点集合,该集合为空(空二叉树)或由一个根结点及两棵互不相交的左右二叉子树组成。可分为满二叉树和完全二叉树,其中满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。二叉树具有如下两个特点。
二叉树可为空,空的二叉树无结点,非空二叉树有且只有一个根结点。
每个结点最多可有两棵子树,称为左子树和右子树。
(2)二叉树的基本性质。
性质1:在二叉树的第k层上至多有2k-1个结点(k≥1)。
性质2:深度为m的二叉树至多有2m-1个结点。
性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。
性质4:具有 n 个结点的完全二叉树的深度至少为[log2n]+1,其中[log2n]表示log2n的整数部分。
3.满二叉树与完全二叉树
(1)满二叉树。满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。满二叉树在其第i层上有2i-1个结点。
从上面满二叉树定义可知,二叉树的每一层上的结点数必须都达到最大,否则就不是满二叉树。深度为m的满二叉树有2m-1个结点。
(2)完全二叉树。完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~ n的结点一一对应。
4.二叉树的存储结构
二叉树通常采用链式存储结构,存储结点由数据域和指针域(左指针域和右指针域)组成。二叉树的链式存储结构也称二叉链表,对满二叉树和完全二叉树可按层次进行顺序存储。
5.二叉树的遍历
二叉树的遍历是指不重复地访问二叉树中所有结点,主要指非空二叉树,对于空二叉树则结束返回。二叉树的遍历包括前序遍历、中序遍历和后序遍历。
(1)前序遍历。
前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树。并且,在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作;否则①访问根结点,②前序遍历左子树,③前序遍历右子树。
(2)中序遍历。
中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树。并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。中序遍历描述为:若二叉树为空,则执行空操作;否则①中序遍历左子树,②访问根结点,③中序遍历右子树。
(3)后序遍历。
后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点。并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。后序遍历描述为:若二叉树为空,则执行空操作;否则①后序遍历左子树,②后序遍历右子树,③访问根结点。
【考点7】 查找技术
(1)顺序查找:在线性表中查找指定的元素。
最坏情况下,最后一个元素才是要找的元素,则需要与线性表中所有元素比较,比较次数为n。
(2)二分查找:二分查找也称折半查找,它是一种高效率的查找方法。但二分查找有条件限制,它要求表必须用顺序存储结构,且表中元素必须按关键字有序(升序或降序均可)排列。对长度为n的有序线性表,在最坏情况下,二分查找法只需比较log2n次。
【考点8】 排序技术
(1)交换类排序法。
冒泡排序:通过对待排序序列从后向前或从前向后,依次比较相邻元素的排序码,若发现逆序则交换,使较大的元素逐渐从前部移向后部或较小的元素逐渐从后部移向前部,直到所有元素有序为止。
在最坏情况下,对长度为n的线性表排序,冒泡排序需要比较的次数为n(n-1)/2。
快速排序:它是迄今为止所有内排序算法中速度最快的一种。它的基本思想是:任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。最坏情况下,即每次划分,只得到一个序列,时间效率为O(n2)。
(2)插入类排序法。
简单插入排序法:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素。排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。在最坏情况下,即初始排序序列是逆序的情况下,比较次数为n(n-1)/2,移动次数为n(n-1)/2。
希尔排序法:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。
(3)选择类排序法。
简单选择排序法:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面;然后对剩下的子表采用同样的方法,直到子表空为止。最坏情况下需要比较n(n-1)/2次。
堆排序的方法:首先将一个无序序列建成堆;然后将堆顶元素(序列中的最大项)与堆中最后一个元素交换(最大项应该在序列的最后)。不考虑已经换到最后的那个元素,只考虑前n-1个元素构成的子序列,将该子序列调整为堆。反复做第二个步骤,直到剩下的子序列空为止。在最坏情况下,堆排序法需要比较的次数为O(nlog2n)。
真题演练
(1)下列叙述中正确的是( )。
A)算法就是程序
B)设计算法时只需要考虑数据结构的设计
C)设计算法时只需要考虑结果的可靠性
D)以上3种说法都不对
(2)算法的有穷性是指( )。
A)算法程序的运行时间是有限的
B)算法程序所处理的数据量是有限的
C)算法程序的长度是有限的
D)算法只能被有限的用户使用
(3)算法的空间复杂度是指( )。
A)算法在执行过程中所需要的计算机存储空间
B)算法所处理的数据量
C)算法程序中的语句或指令条数
D)算法在执行过程中所需要的临时工作单元数
(4)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。
A)-369
B)369
C)0.369
D)整数集合{1,2,3,4,5}
(5)下列叙述中正确的是( )。
A)程序执行的效率与数据的存储结构密切相关
B)程序执行的效率只取决于程序的控制结构
C)程序执行的效率只取决于所处理的数据量
D)以上说法均错误
(6)下列叙述中正确的是( )。
A)有一个以上根结点的数据结构不一定是非线性结构
B)只有一个根结点的数据结构不一定是线性结构
C)循环链表是非线性结构
D)双向链表是非线性结构
(7)下列叙述中正确的是( )。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表
D)链式存储结构比顺序存储结构节省存储空间
(8)下列选项中,( )不是一般算法应该有的特征。
A) 无穷性 B) 可行性
C) 确定性 D) 有穷性
(9)下列叙述中正确的是( )。
A)栈是“先进先出”的线性表
B)队列是“先进后出”的线性表
C)循环队列是非线性结构
D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
(10)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
A) 12345ABCDE B) EDCBA54321
C) ABCDE12345 D) 54321EDCBA
(11)下列关于栈的叙述中正确的是( )。
A)栈按“先进先出”组织数据
B)栈按“先进后出”组织数据
C)只能在栈底插入数据
D)不能删除数据
(12)下列关于栈的叙述中正确的是( )。
A)在栈中只能插入数据,不能删除数据
B)在栈中只能删除数据,不能插入数据
C)栈是先进后出(FILO)的线性表
D)栈是先进先出(FIFO)的线性表
(13)下列叙述中正确的是( )。
A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D)以上说法都不正确
(14)下列关于栈的叙述中正确的是( )。
A)栈顶元素最先被删除
B)栈顶元素最后才能被删除
C)栈底元素永远不能被删除
D)栈底元素最先被删除
(15)下列关于栈的叙述中正确的是( )。
A)栈底元素一定是最后入栈的元素
B)栈顶元素一定是最先入栈的元素
C)栈操作遵循先进后出的原则
D)以上说法均错误
(16)下列与队列结构有关联的是( )。
A)函数的递归调用
B)数组元素的引用
C)多重循环的执行
D)先到先服务的作业调度
(17)下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
A) 循环队列 B) 栈
C) 队列 D) 二叉树
(18)下列数据结构中,属于非线性结构的是( )。
A) 循环队列 B) 带链队列
C) 二叉树 D) 带链栈
(19)下列关于循环队列的叙述中正确的是( )。
A)队头指针是固定不变的
B)队头指针一定大于队尾指针
C)队头指针一定小于队尾指针
D)队头指针既可以大于队尾指针,也可以小于队尾指针
(20)下列叙述中正确的是( )。
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D)循环队列中元素的个数是由队头指针和队尾指针共同决定的
(21)下列叙述中正确的是( )。
A)循环队列是队列的一种链式存储结构
B)循环队列是队列的一种顺序存储结构
C)循环队列是非线性结构
D)循环队列是一种逻辑结构
(22)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与出队运算后,front=15, rear=15,则循环队列中的元素个数为( )。
A) 15 B) 16
C) 20 D) 0或35
(23)下列关于线性链表的叙述中正确的是( )。
A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C)进行插入与删除时,不需要移动表中的元素
D)以上说法均不正确
(24)下列链表中,其逻辑结构属于非线性结构的是( )。
A) 二叉链表 B) 循环链表
C) 双向链表 D) 带链的栈
(25)支持子程序调用的数据结构是( )。
A) 栈 B) 树 C) 队列 D) 二叉树
(26)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。
A) 10 B) 8 C) 6 D) 4
(27)一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为( )。
A) 16 B) 10
C) 6 D) 4
(28)下列关于二叉树的叙述中正确的是( )。
A)叶子结点总是比度为2的结点少1个
B)叶子结点总是比度为2的结点多1个
C)叶子结点数是度为2的结点数的两倍
D)度为2的结点数是度为1的结点数的两倍
(29)对下列二叉树:
进行前序遍历的结果为( )。
A) DYBEAFCZX B) YDEBFZXCA
C) ABDYECFXZ D) ABCDEFXYZ
(30)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
A) O(n) B) O(n2)
C) O(log2n) D) O(nlog2n)
(31)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( )。
A) 快速排序 B) 冒泡排序
C) 直接插入排序 D) 堆排序
(32)下列排序方法中,最坏情况下比较次数最少的是( )。
A) 冒泡排序 B) 简单选择排序
C) 直接插入排序 D) 堆排序
(二) 程序设计基础
【考点9】 程序设计方法与风格
(1)设计方法:指设计、编制、调试程序的方法和过程,主要有结构化程序设计方法、软件工程方法和面向对象方法。
(2)设计风格:良好的设计风格要注重源程序文档化、数据说明方法、语句的结构和输入输出。
【考点10】 结构化程序设计
1.结构化程序设计的原则
结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。
(1)自顶向下:即先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。
(2)逐步求精:对复杂问题,应设计一些子目标做过渡,逐步细化。
(3)模块化:把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。
(4)限制使用GOTO语句。
2.结构化程序的基本结构与特点
(1)顺序结构:自始至终严格按照程序中语句的先后顺序逐条执行,是最基本、最普遍的结构形式。
(2)选择结构:又称为分支结构,包括简单选择和多分支选择结构。
(3)重复结构:又称为循环结构,根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段。
结构化程序设计中,应注意的事项如下。
(1)使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑。
(2)选用的控制结构只准许有一个入口和一个出口。
(3)程序语言组成容易识别的块,每块只有一个入口和一个出口。
(4)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现。
(5)语言中所没有的控制结构,应该采用前后一致的方法来模拟。
(6)尽量避免GOTO语句的使用。
【考点11】 面向对象的程序设计
面向对象方法的本质是主张从客观世界固有的事物出发来构造系统,强调建立的系统能映射问题域。
对象:用来表示客观世界中任何实体,可以是任何有明确边界和意义的东西。
类:具有共同属性、共同方法的对象的集合。
实例:一个具体对象就是其对应分类的一个实例。
消息:实例间传递的信息,它统一了数据流和控制流。
继承:使用已有的类定义作为基础建立新类的定义技术。
多态性:指对象根据所接收的信息而做出动作,同样的信息被不同的对象接收时有不同行动的现象。
面向对象程序设计的优点:与人类习惯的思维方法一致、稳定性好、可重用性好、易于开发大型软件产品、可维护性好。
真题演练
(1)下列选项中不属于结构化程序设计原则的是( )。
A) 可封装 B) 自顶向下
C) 模块化 D) 逐步求精
(2)面向对象方法中,实现对象的数据和操作结合于统一体中的是( )。
A) 结合 B) 封装
C) 隐藏 D) 抽象
(3)结构化程序所要求的基本结构不包括( )。
A) 顺序结构 B) GOTO跳转
C) 选择(分支)结构 D) 重复(循环)结构
(4)下列选项中属于面向对象设计方法主要特征的是( )。
A) 继承 B) 自顶向下
C) 模块化 D) 逐步求精
(5)在面向对象方法中,不属于“对象”基本特点的是( )。
A) 一致性 B) 分类性
C) 多态性 D) 标识唯一性
(6)下面关于对象概念的描述中正确的是( )。
A)对象间的通信靠消息传递
B)对象是名字和方法的封装体
C)任何对象必须有继承性
D)对象的多态性是指一个对象有多个操作
(7)面向对象方法中,继承是指( )。
A)一组对象所具有的相似性质
B)一个对象具有另一个对象的性质
C)各对象之间的共同性质
D)类之间共享属性和操作的机制
(8)数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( )。
A) 加工 B) 控制流
C) 数据存储 D) 数据流
(三) 软件工程基础
【考点12】 软件工程的基本概念
1.软件的定义与特点
(1)定义:软件是指与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档和数据。
(2)特点。
是逻辑实体,有抽象性。
生产没有明显的制作过程。
运行使用期间不存在磨损、老化问题。
开发、运行对计算机系统有依赖性,受计算机系统的限制,导致了软件移植问题。
复杂性较高,成本昂贵。
开发涉及诸多社会因素。
2.软件的分类
软件可分应用软件、系统软件和支撑软件3类。
(1)应用软件是特定应用领域内专用的软件。
(2)系统软件居于计算机系统中最靠近硬件的一层,是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。
(3)支撑软件介于系统软件和应用软件之间,是支援其他软件的开发与维护的软件。
3.软件危机与软件工程
软件危机指在计算机软件的开发和维护中遇到的一系列严重问题。软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序,包括软件开发技术和软件工程管理。
4.软件生命周期
软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。
在国家标准中,软件生命周期划分为8个阶段:①软件定义期,包括问题定义、可行性研究和需求分析3 个阶段;②软件开发期,包括概要设计、详细设计、实现和测试4个阶段;③运行维护期,即运行维护阶段。
5.软件工程的原则
软件工程的原则包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
【考点13】 结构化分析方法
需求分析的任务是发现需求、求精、建模和定义需求的过程,可概括为:需求获取、需求分析、编写需求规格说明书和需求评审。
1.常用的分析方法
结构化分析方法:其实质着眼于数据流,自顶向下,逐层分解,建立系统的处理流程。
面向对象分析方法。
2.结构化分析常用工具
结构化分析常用工具包括数据流图、数字字典(核心方法)、判断树和判断表。
(1)数据流图:即DFD图,以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,是一种功能模型。
符号名称的作用如下。
箭头代表数据流,沿箭头方向传送数据的通道。
圆或椭圆代表加工,输入数据经加工变换产生输出。
双杠代表存储文件,表示处理过程中存放各种数据文件。
方框代表源和潭,表示系统和环境的接口。
(2)数据字典:结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
(3)判定树:使用判定树进行描述时,应先从问题定义的文字描述中分清判定的条件和判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
(4)判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合引发的,使用判定表比较适宜。
3.软件需求规格说明书
软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。
(1)软件需求规格说明书的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。
(2)软件需求规格说明书的内容:①概述;②数据描述;③功能描述;④性能描述;⑤参考文献;⑥附录。
(3)软件需求规格说明书的特点:①正确性;②无歧义性;③完整性;④可验证性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追踪性。
【考点14】 结构化设计方法
1.软件设计的基本概念和方法
软件设计是一个把软件需求转换为软件表示的过程。
(1)基本原理:抽象、模块化、信息隐藏、模块独立性(度量标准,耦合性和内聚性,低耦合、高内聚)。
(2)基本思想:将软件设计成由相对独立、单一功能的模块组成的结构。
2.概要设计
(1)4个任务:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。
(2)面向数据流的设计方法:数据流图的信息分为交换流和事物流,结构形式有交换型和事务型。
3.详细设计的工具
详细设计的工具包括以下几个。
图形工具:程序流程图、N-S、PAD、HIPO。
表格工具:判定表。
语言工具:PDL(伪码)。
【考点15】 软件测试
1.目的
为了发现错误而执行程序的过程。
2.准则
所有测试应追溯到用户需求。
严格执行测试计划,排除测试的随意性。
充分注意测试中的群集现象。
程序员应避免检查自己的程序。
穷举测试不可能。
妥善保存设计计划、测试用例、出错统计和最终分析报告。
3.软件测试技术和方法
软件测试的方法按是否需要执行被测软件的角度,可分为静态测试和动态测试,按功能分为白盒测试和黑盒测试。
(1)白盒测试:根据程序的内部逻辑设计测试用例,主要方法有逻辑覆盖测试、基本路径测试等。
(2)黑盒测试:根据规格说明书的功能来设计测试用例,主要诊断方法有等价划分法、边界值分析法、错误推测法、因果图法等,主要用于软件确认测试。
4.软件测试的实施
软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化。
软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。
单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验测试。
单元测试的目的是发现各模块内部可能存在的各种错误。
单元测试的依据是详细的设计说明书和源程序。
单元测试的技术可以采用静态分析和动态测试。
【考点16】 程序的调试
(1)任务:诊断和改正程序中的错误。
(2)调试方法:强行排错法、回溯法和原因排除法。
真题演练
(1)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。
A) 编译程序 B) 操作系统
C) 教务管理系统 D) 汇编程序
(2)软件生命周期是指( )。
A)软件产品从提出、实现、使用维护到停止使用退役的过程
B)软件从需求分析、设计、实现到测试完成的过程
C)软件的开发过程
D)软件的运行维护过程
(3)软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )。
A)概要设计
B)软件设计
C)可行性研究和计划制定
D)需求分析
(4)软件生命周期中的活动不包括( )。
A) 市场调研 B) 需求分析
C) 软件测试 D) 软件维护
(5)在软件开发中,需求分析阶段产生的主要文档是( )。
A) 可行性分析报告 B) 软件需求规格说明书
C) 概要设计说明书 D) 集成测试计划
(6)下列描述中符合结构化程序设计风格的是( )。
A)使用顺序、选择和重复(循环)3种基本控制结构表示程序的控制逻辑
B)模块只有一个入口,可以有多个出口
C)注重提高程序的执行效率
D)不使用GOTO语句
(7)在软件开发中,需求分析阶段可以使用的工具是( )。
A) N-S图 B) DFD图
C) PAD图 D) 程序流程图
(8)数据流图中带有箭头的线段表示的是( )。
A) 控制流 B) 事件驱动
C) 模块调用 D) 数据流
(9)数据字典(DD)所定义的对象都包含于( )。
A)数据流图(DFD图)
B)程序流程图
C)软件结构图
D)方框图
(10)软件需求规格说明书的作用不包括( )。
A)软件验收的依据
B)用户与开发人员对软件要做什么的共同理解
C)软件设计的依据
D)软件可行性研究的依据
(11)下列叙述中错误的是( )。
A)系统总体结构图支持软件系统的详细设计
B)软件设计是将软件需求转换为软件表示的过程
C)数据结构与数据库设计是软件设计的任务之一
D)PAD图是软件详细设计的表示工具
(12)软件设计中模块划分应遵循的准则是( )。
A) 低内聚低耦合 B) 高内聚低耦合
C) 低内聚高耦合 D) 高内聚高耦合
(13)下列不属于软件设计阶段任务的是( )。
A)软件总体设计
B)算法设计
C)制定软件确认测试计划
D)数据库设计
(14)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。
A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(15)在软件设计中不使用的工具是( )。
A) 系统结构图 B) PAD图
C) 数据流图(DFD图) D) 程序流程图
(16)软件详细设计图如下:
该图是( )。
A) N-S图 B) PAD图
C) 程序流程图 D) E-R图
(17)程序流程图中带有箭头的线段表示的是( )。
A) 图元关系 B) 数据流
C) 控制流 D) 调用关系
(18)下列叙述中错误的是( )。
A)软件测试的目的是发现错误并改正错误
B)对被调试的程序进行“错误定位”是程序调试的必要步骤
C)程序调试通常也称为Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(19)软件测试的目的是( )。
A)评估软件可靠性
B)发现并改正程序中的错误
C)改正程序中的错误
D)发现程序中的错误
(20)设有下列二叉树:
对此二叉树中序遍历的结果为( )。
A) ACBDEF B) DEBFCA
C) ABDECF D) DBEAFC
(21)下列属于黑盒测试方法的是( )。
A) 语句覆盖 B) 逻辑覆盖
C) 边界值分析 D) 路径覆盖
(22)在黑盒测试方法中,设计测试用例的主要根据是( )。
A) 程序内部逻辑 B) 程序外部功能
C) 程序数据结构 D) 程序流程图
(23)下列属于白盒测试方法的是( )。
A) 等价类划分法 B) 逻辑覆盖
C) 边界值分析法 D) 错误推测法
(四) 数据库设计基础
【考点17】 数据库系统的基本概念
(1)数据(Data):描述事物的符号记录。
(2)数据库(DataBase):长期存储在计算机内的、有组织的、可共享的数据集合。
(3)数据库管理系统的概念
数据库管理系统(DataBase Management System,DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、数据控制及保护和数据服务等。为完成以上5个功能,DBMS提供了相应的数据语言;数据定义语言(负责数据的模式定义与数据的物理存取构建);数据操纵语言(负责数据的操纵);数据控制语言(负责数据完整性、安全性的定义)。数据库管理系统是数据库系统的核心,它位于用户和操作系统之间,从软件分类的角度来说,属于系统软件。
(4)数据库技术发展经历了3个阶段。
人工管理阶段→文件系统阶段→数据库系统阶段
(5)数据库系统的特点:集成性、高共享性、低冗余性、数据独立性、数据统一管理与控制等。
(6)数据库系统的内部机构体系:三级模式(概念模式、内模式、外模式)和二级映射(外模式/概念模式的映射、概念模式/内模式的映射)构成了数据库系统内部的抽象结构体系。
【考点18】 数据模型
数据模型是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,描述的内容有数据结构、数据操作和数据约束。有3个层次:概念数据模型、逻辑数据模型和物理数据模型。
(1)E-R模型:提供了表示实体、属性和联系的方法。实体间联系有“一对一”、“一对多”和“多对多”。
E-R模型用E-R图来表示。
(2)层次模型:利用树形结构表示实体及其之间联系,其中结点是实体,树枝是联系,从上到下是“一对多”关系。
(3)网状模型:用网状结构表示实体及其之间联系,是层次模型的扩展。网络模型以记录型为结点,反映现实中较为复杂的事物联系。
(4)关系模型:采用二维表(由表框架和表的元组组成)来表示,可进行数据查询、增加、删除及修改操作。关系模型允许定义“实体完整性”、“参照完整性”和“用户定义的完整性”3种约束。
键(码):二维表中唯一能标识元组的最小属性集。
候选键(候选码):二维表中可能有的多个键。
主键:被选取的一个使用的键。
【考点19】 关系代数
(1)关系代数的基本运算:投影、选择、笛卡儿积。
(2)关系代数的扩充运算:交、连接与自然连接、除。
【考点20】 数据库设计与管理
1.数据库设计概述
基本思想:过程迭代和逐步求精。
方法:面向数据的方法和面向过程的方法。
设计过程:需求分析→概念设计→逻辑设计→物理设计→编码→测试→运行→进一步修改。
2.数据库设计的需求分析
需求收集和分析是数据库设计的第一阶段,常用结构化分析方法(自顶向下、逐层分解)和面向对象的方法,主要工作有绘制数据流程图、数据分析、功能分析、确定功能处理模块和数据间关系。
数据字典:包括数据项、数据结构、数据流、数据存储和处理过程,是对系统中数据的详尽描述。
3.数据库的设计
(1)数据库的概念设计:分析数据间内在的语义关联,以建立数据的抽象模型。
(2)数据库的逻辑设计:从E-R图向关系模型转换,逻辑模式规范化,关系视图设计可以根据用户需求随时创建。实体转换为元组,属性转换为关系的属性,联系转换为关系。
(3)数据库的物理设计:是数据在物理设备上的存储结构与存取方法,目的是对数据库内部物理结构作出调整并选择合理的存取路径,以提高速度和存储空间。
4.数据库管理
数据库管理包括数据库的建立、数据库的调整、数据库的重组、数据库的安全性与完整性控制、数据库故障恢复和数据库的监控。
真题演练
(1)数据库管理系统是( )。
A)操作系统的一部分
B)在操作系统支持下的系统软件
C)一种编译系统
D)一种操作系统
(2)负责数据库中查询操作的数据库语言是( )。
A)数据定义语言
B)数据管理语言
C)数据操纵语言
D)数据控制语言
(3)数据库应用系统中的核心问题是( )。
A)数据库设计
B)数据库系统设计
C)数据库维护
D)数据库管理员培训
(4)在数据管理技术发展的3个阶段中,数据共享最好的是( )。
A) 人工管理阶段 B) 文件系统阶段
C) 数据库系统阶段 D) 3个阶段相同
(5)下列描述中不属于数据库系统特点的是( )。
A) 数据共享 B) 数据完整性
C) 数据冗余度高 D) 数据独立性高
(6)数据库系统的三级模式不包括( )。
A) 概念模式 B) 内模式
C) 外模式 D) 数据模式
(7)在下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。
A) 外模式 B) 内模式
C) 概念模式 D) 逻辑模式
(8)数据库设计中反映用户对数据要求的模式是( )。
A) 内模式 B) 概念模式
C) 外模式 D) 设计模式
(9)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是( )。
A) 1:1联系 B) m:1联系
C) 1:m联系 D) m:n联系
(10)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A) 一对一 B) 一对多
C) 多对一 D) 多对多
(11)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。
A) 1:1联系 B) 1:m联系
C) m:1联系 D) m:n联系
(12)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是( )。
A) 一对一 B) 一对多
C) 多对多 D) 多对一
(13)关系表中的每一横行称为一个( )。
A) 字段 B) 元组
C) 行 D) 码
(14)在E-R图中,用来表示实体联系的图形是( )。
A) 椭圆形 B) 矩形
C) 菱形 D) 三角形
(15)层次型、网状型和关系型数据库划分原则是( )。
A)记录长度
B)文件的大小
C)联系的复杂程度
D)数据之间的联系方式
(16)下列叙述中正确的是( )。
A)数据库不需要操作系统的支持
B)数据库设计是指设计数据库管理系统
C)数据库是存储在计算机存储设备中的、结构化的相关数据的集合
D)数据库系统中,数据的物理结构必须与逻辑结构一致
(17)在关系数据库中,用来表示实体间联系的是( )。
A) 属性 B) 二维表
C) 网状结构 D) 树状结构
(18)在满足实体完整性约束的条件下( )。
A)一个关系中应该有一个或多个候选关键字
B)一个关系中只能有一个候选关键字
C)一个关系中必须有多个候选关键字
D)一个关系中可以没有候选关键字
(19)有3个关系R、S和T如下:
则关系T是由关系R和S通过某种操作得到的,该操作为( )。
A) 选择 B) 投影 C) 交 D) 并
(20)有2个关系R、S如下:
由关系R 通过运算得到关系 S,则所使用的运算为( )。
A) 选择 B) 投影 C) 插入 D) 连接
(21)有3个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( )。
A) 笛卡儿积 B) 交
C) 并 D) 自然连接
(22)有3个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( )。
A) 并 B) 自然连接
C) 笛卡儿积 D) 交
(23)有3个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A) 自然连接 B) 交
C) 投影 D) 并
(24)有3个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A) 自然连接 B) 并
C) 交 D) 差
(25)有2个关系R和S如下:
则由关系R得到关系S的操作是( )。
A) 选择 B) 投影 C) 自然连接 D) 并
(26)有3个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A) 自然连接 B) 交
C) 投影 D) 并
(27)有3个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A) 自然连接 B) 交
C) 除 D) 并
(28)下列关于数据库设计的叙述中正确的是( )。
A)在需求分析阶段建立数据字典
B)在概念设计阶段建立数据字典
C)在逻辑设计阶段建立数据字典
D)在物理设计阶段建立数据字典
(29)数据库设计过程不包括( )。
A) 概念设计 B) 逻辑设计
C) 物理设计 D) 算法设计
(30)将E-R图转换为关系模型时,实体和联系都可以表示为( )。
A) 属性 B) 键
C) 关系 D) 域
(31)在数据库设计中,将E-R图转换成关系数据模型的过程属于( )。
A) 需求分析阶段 B) 概念设计阶段
C) 逻辑设计阶段 D) 物理设计阶段
(32)设有表示学生选课的3张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。
A) 课号,成绩 B) 学号,成绩
C) 学号,课号 D) 学号,姓名,成绩