二级公共基础知识2020
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级公共基础知识
第一部分数据结构(5-6个题目,占10分)
*1.所谓算法是指解题方案的准确而完整的描述。
严格来说,一个算法必须具有以下五个主要特征:
有穷性确定性可行性输入输出(或说成:拥有足够的情报)
2.算法的组成要素
算法中对数据的运算和操作及算法的控制结构
3.算法设计基本方法
列举法归纳法递推递归减半递推回溯法
*4.算法的复杂度可分为时间复杂度和空间复杂度,是衡量算法优劣的量度。
(1)算法的时间复杂度:算法的时间复杂度是指执行算法所需要的工作量。
一般情况下,算法的时间复杂度为算法中的基本操作重复执行的次数。
是问题规模n的某个函数f(n)。
(2)算法的空间复杂度:算法的空间负杂度是指执行这个算法所需要的内存空间。
5.数据结构的定义
是指相互有关联的数据元素的集合。
(一定要注意是数据元素的集合,不是数据的集合)*6. 数据结构主要研究三个方面的问题:
1) 逻辑结构是各数据元素之间的逻辑关系。
它与在计算机中的存储位置无关,是独立于计算机的。
2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。
3)对各种数据结构进行的运算。
7. 常见的存储结构:
顺序存储结构链式存储结构索引存储结构散列存储结构
一般分为:线性存储和非线性存储
8. 线性表的顺序存储结构用一组地址连续的存储单元依次存放线性表中的数据元素,即以“存储位置相邻”表示“存储,表中第一个元素的存储位置作称作线性表的基地址。
所有数据元素的存储位置均可由第一个数据元素的存储位置得到
ADR(ai) = ADR(a1) + (i-1)×C
↑↑
基地址一个数据元素所占存储量
9. 线性表的插入和删除运算最坏的时间复杂度为O(n-1),最好为O(o).
10. 栈是限定仅在表的一端进行插入和删除操作的线性表。
允许插入和删除的一端称为栈顶,另一端称为栈底。
栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入,也是最后被删除的元素。
栈是一种后进先出的线性表。
通常用指针top指示栈顶位置,用指针bottom指示栈底位置。
11. 栈的操作有:
入栈:在栈顶位置插入一个新元素,栈顶指针top加1。
退栈:取出栈顶元素并赋值给一个指定的变量,栈顶指针top减1。
取栈顶元素:将栈顶元素的值赋给一个指定的变量,不删除栈顶元素,栈顶指针不变。
12. 如果某栈的入栈顺序是ABCDEF,则出栈顺序不可能是哪个(C)(此类型的题目一定要会推导)
A、DCEFBA
B、ABCDEF
C、EDFCAB
D、CBAEDF
13. 队列是一种先进先出的线性表,它只允许在表的一端插入元素(队尾),在另一端删除元素(队头)。
通常定义头指针front指向队头元素的前一个位置,定义尾指针rear指向队尾元
素的位置。
队列是一种先进先出的数据结构。
14. 循环队列是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。
容量的计算:
*当rear>front时,元素个数=rear-front ;
*当rear<front时,元素个数=总容量-(front-rear)。
15. 单链表是用一组任意的存储单元(可以连续,也可以不连续)存储数据元素,为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,除了存储其本身的信息(数据域)之外,还需要存储其后继元素的存储位置信息(指针域)。
16.N个结点链接成一个链表,为线性表的链式存储结构。
由于结点中只包含一个指针域,故称为单链表。
17. 增加头指针是为了方便操作。
必须从头指针开始(顺序存取)才能访问整个链表,从链表中的任一结点是不能访问整个链表的。
最后一个数据元素没有直接后继,其指针域为空。
18.链表中插入和删除结点(数据)是不需要移动其他结点的。
19. 在双向链表中的结点包含两个指针域,其中一个指向直接后继,另一个指向直接前驱。
20.循环链表的特点是表中最后一个结点的指针域指向第一个结点,整个链表为一个由链指针相链接的环。
21. 树是一种简单的非线性结构,在树中,所有的数据元素之间具有明显的层次性关系。
树是(n≥0)个结点的有限集合,集合为空的树简称为空树;树中的元素称为结点。
在任意一棵非空树中:
(1)有且仅有一个特定的结点称为根结点。
(2)当n>1时,其余的结点可分为m个互不相交的子集T1,T2,…Tm,其中每个有限子集本身又是一棵树。
*22. 树的的几个重要术语:(不明白的自己看书)
树的度叶节点双亲、孩子和兄弟层次深度
*23. 二叉树是另一种树型结构,其特点是每个结点至多有两棵子树,并且二叉树的子树有左右之分,其顺序不能任意颠倒。
几个重要的性质:
性质1 在二叉树的第i层上至多有2i-1个结点(i≥1)
性质2 深度为k的二叉树至多有2k -1个结点(k≥1)
性质3 对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2 ,则:n0 =n2+1性质4 具有n个结点的二叉树,其深度至少为[log2n] +1
24.满二叉树除最后一层外,每一层上的所有结点都有两个子节点,也就是说每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
**25.完全二叉树除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。
具有n个结点的完全二叉树,其深度为[log2n] +1。
(一定要会计算结点的个数)
26. 二叉树的链式存储结构中,每个结点设置三个域,即数据域,左指针域和右指针域,两个指针域分别存储左右子树根节点的存储位置,即指针。
**27. 二叉树的遍历指不重复地访问二叉树的所有结点。
分为:先序、后序和中序遍历。
一定要明白由先序和中序推出后序,和由后序和中序推出先序!!!!
28. 顺序查找是指在一个给定的数据结构中查找某个指定的元素。
最好情况查找长度为1,最坏为n,所以平均查找长度为(n+1)/2。
时间复杂度为O(n)。
29.二分查找法只适用于顺序存储的有序表。
查找过程为:给定值首先和处于待查区间“中间位置”的关键字进行比较,若相等,则查找成功,否则将查找区间缩小到“前半个区间”
或“后半个区间”之后继续进行查找。
平均查找长度小于等于┍log2 (n+1)┑,时间复杂度为O(log2n)。
*30. 排序方法有:插入排序:包括简单插入排序法和希尔排序法等
交换排序:包括冒泡排序和快速排序法等
选择排序:包括简单选择排序和堆排序等
31. 冒泡排序最坏情况下运算的次数为:n*(n-1)/2(即时间复杂度)。
最好情况下为:n-1。
*32.排序部分应该掌握的几点:
1.当原表有序或基本有序时,直接插入排序和冒泡排序最好,时间复杂度可降至O(n)。
(也就是最好情况下)。
如果选择快速排序则相反,达到最坏时间复杂度。
2.空间复杂度最坏的是归并排序O(n) ,其次是基数排序O(rd) 。
3.平均时间最好的是快速、堆、归并排序O(nlgn)。
4.稳定排序和不稳定排序(希尔、堆、直接选择,快速)。
5.最坏情况下,时间复杂度最小的是:堆和归并排序。
第一部分典型例题
1:已知一组数据原先采用顺序存储,现改为散列存储,则(B)不变。
A.存储结构
B.逻辑结构
C.数据间的顺序
D.不确定
2:常见的线性结构有__线性表_,_队列___,_栈____
3:在线性表中删除第5个节点,则原第6个节点的位置(B),如果单链表则(C)
A.6
B.5
C.不变
D.不确定
4:已知栈的头指针front当前位置为5,从栈中读取一个数据,则front指向(A)
A.5
B.6
C.不变
D.不确定
5:如果某栈的入栈顺序是123456,则出栈顺序不可能是哪个(C)
A、435621 B.123456 C、546312 D、654321
6:容量为25的循环队列中,若front=16,rear=9,有_18_ 个元素
7:一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为( B) A)221 B)219 C)231 D)229
8:一棵含18个结点的二叉树的高度至少为(5)
A)3 B)4 C)5 D)6
9:在一棵二叉树上第5层的结点数最多是(B)
A)8 B)16 C)32 D)15
10:在深度为5的满二叉树中,叶子结点的个数为(C)
A)32 B)31 C)16 D)15
11:深度为4的二叉树中,编号为7的节点,它的右孩子节点为(D)该树为满二叉树;如果该树是完全二叉树,但不是满二叉树,则它的最大节点编号为(A)
A)14 B)8 C)9 D)15
12:设树T的度为4,其中度为1,2,3,4的结点个数分别人4,2,1,1.则T中的叶子结点数为(A)
A)8 B)7 C)6D)5
13.(3)线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是(D)
A)每个元素都有一个直接前件和直接后件B)线性表中至少要有一个元素
C)表中诸元素的排列顺序必须是由小到大或由大到小
D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
14.3)链表不具有的特点是(B)
A)不必事先估计存储空间B)可随机访问任一元素
C)插入删除不需要移动元素D)所需空间与线性表长度成正比
15、1)由两个栈共享一个存储空间的好处是(B)
A)减少存取时间,降低下溢发生的机率B)节省存储空间,降低上溢发生的机率
C)减少存取时间,降低上溢发生的机率D)节省存储空间,降低下溢发生的机率
16、设有两个串p和q,求q在p中首次出现位置的运算称作(B)
A)连接B)模式匹配C)求子串D)求串长
17. n个顶点的连通图中边的条数至少为(C)
A)0 B)1 C)n-1 D)n
18、n个顶点的强连通图中边的条数至少为(D)
A)0 B)1 C)n-1 D)n
19. (2)非空的循环单链表head的尾结点(由p所指向),满足
A)p->next==NULL B)p==NULL C)p->next=head D)p=head
20、已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是(B)
A)堆排序B)直接插入排序C)快速排序D)直接选择排序
21、最简单的交换排序方法是(D)
A)快速排序B)选择排序C)堆排序D)冒泡排序
22、栈和队列通常采用的存储结构是【链式存储和顺序存储】。
23、冒泡排序算法在最好的情况下的n个元素交换次数为【0】次,但比较次数为【n-1】
24、当线性表采用顺序存储结构实现存储时,其主要特点是【存储位置相邻】
25、用链表表示线性表的突出优点是【插入、删除操作方便】
第二部分程序设计基础(1-2题)和软件工程(4-5题)
1. 程序设计主要经历了结构化的程序设计和面向对象的程序设计阶段。
在程序设计中,通常采用“自顶向下,逐步求精”的方法。
结构化程序设计由三种基本控制结构组成:顺序结构、选择结构和循环结构。
2.程序风格也是非常重要的。
良好的程序设计风格概括起来包括以下4个方面:
源程序文档化
(1)标识符的命名:要有一定的实际含义。
(2)程序的注释:分为序言性注释和功能性注释。
(3)程序的视觉组织:一定要层次清晰
数据说明的方法
(1)数据说明的次序应该规范化
(2)说明语句中变量的安排有序化:如多个变量出现在同一个说明语句中,要按顺序排列。
(3)使用注释说明复杂的数据结构
语句的结构(几个重要的方面)
(1)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二
(2)尽可能使用库函数,且避免使用复杂的条件语句
(3)要模块化,且要利用信息隐蔽,确保每一个模块的独立性
输入和输出
对所有输入数据检验合法性和输入数据时,应允许使用自由格式
*3. 对象是面向对象程序设计中的基本单位。
对象可以表示客观世界中的任何实体,是对问题域中某个实体的抽象。
对象通常由对象名、属性和操作三部分组成。
4. 类是对一组具有共同属性和相似行为的对象的一种抽象,类是对象的抽象,而对象是类的具体实例。
类是抽象的,不占用内存,而对象是具体的,占用存储空间。
5. 对象的特点: 标识唯一性、分类性、封装性、模块独立性、多态性和继承(分为单重基础和多重继承)。
6. 方法也可称为操作或服务,它描述了对象执行的功能,它是对象的动态属性。
*7. 消息:面向对象系统中的对象之间是通过消息机制彼此相互合作的。
消息由三部分组成:消息标识符、零个或多个参数、接受消息对象的对象名
8. 面向对象程序设计的特点:稳定性好、可重用性好、易于开发大型软件、可维护性好。
9. 计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。
10. 所谓软件危机是指在计算机软件开发和维护过程中所遇到的一系列严重问题。
11. 为了消除软件危机,提出了软件工程学。
软件工程是应用于计算机软件定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
*12. 软件工程的三要素:方法、工具、过程。
13. 软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列工程活动。
包括四种基本活动:P(Plan):软件规格说明、D(Do):软件开发、C(Check):软件确认、A(Action):软件演进。
14. 软件工程的基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
*15. 软件工程的理论和技术性研究的内容包括:
软件开发技术:软件开发方法学、开发过程、开发工具和软件工程环境
软件工程管理:软件管理学、软件工程经济学、软件心理学
*16. 衡量软件的指标:高内聚(模块内)、低耦合(模块间)。
17. 计算机辅助软件工程(CASE):是一组工具和方法集合。
包括5个方面的集成:平台集成、数据集成、表示集成、控制集成、过程集成。
*18.软件的生命周期是软件从提出、实现、使用、维护到停止使用的过程,一般包括以下几个阶段:
可行性研究:其实质是要进行一次简化、压缩了的需求分析
需求分析:任务就是导出目标系统的逻辑模型,解决“做什么”的问题(即系统功能)。
软件设计:包括概要设计和详细设计。
软件实现:把软件设计转换成计算机可以接受的程序代码。
软件测试:为发现错误而进行的活动。
运行和维护:软件生命周期中所花费最多的阶段是软件运行维护阶段。
19. 需求分析阶段的主要工作:需求获取、需求分析、编写需求规格说明书(SRS)和需求评审。
20. 需求规格说明书是需求分析应交付的主要文档,也是需求分析的最后成果。
需求规格说
明书的特点是:(1)正确性(2)无岐义性(3)完整性(4)可验证性(5)一致性(6)可理解性(7)可追踪性。
*21. 结构化分析方法是一种建模技术。
其实质着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
*22. 结构化分析常用的工具:数据流图DFD,数据字典DD ,判定树,判定表。
(有时也用结构化语言)
*23. 数据流图(DFD):就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。
数据流图的基本元素有:数据源(终点) 、数据流、处理(加工) 、数据存储。
处理(加工)过程至少有一个输入数据流和一个输出数据流。
数据流程图上的每个元素都必须有名字。
*24. 数据字典(DD)是对数据流图中的各个元素进行完整的定义和说明,本质是一个数据库。
作用是对数据流图中出现的被命名的图形元素的确切解释。
数据字典通常包含5个部分:数据项、数据结构、数据流、数据存储和处理过程。
数据字典是结构化分析的核心。
*25. 从技术角度出发软件设计包括:软件结构设计、数据设计、接口设计、过程设计。
(每个设计的含义一定要记住,见“内部资料“P6!)
*26.从结构化设计角度看,软件设计分概要设计和详细设计两步完成。
概要设计,即总体设计。
将需求分析得到的DFD转化为转化为软件系统结构和全局数据结构、确定数据库模式(即概要设计的功能)。
概要设计的工具是结构图(SC),结构图基本组成成分:模块、数据和调用.。
详细设计即过程设计。
功能是为软件结构图(SC)中的每一个模块确定采用的算法,模块内数据结构,用某种选定的表达工具(如N-S图等)给出清晰的描述。
27. 需求分析的工具:(不要与方法弄混了,也不要与结构化分析工具弄混!!!)
问题分析图(PAD )、程序流程图(PFD )、N-S 图(盒图)程序流程图(PFD)中的箭头代表的是:控制流
数据流图中的箭头代表:数据的流向
结构图(sc):箭头代表模块的调用
*28. 软件测试是为了发现错误而执行程序的过程。
(有时也解决存在的问题)测试的分类:从是否需要执行被测试软件的角度,可将测试分为静态测试和动态测试。
按照功能划分,可将软件测试分为黑盒测试和白盒测试。
(有时也称白箱和黑箱测试)29. 测试用例包括合理的和不合理的输入条件。
好的测试用例指可能找到迄今为止尚未发现的错误的用例。
30. 静态测试主要包括代码检查、静态结构分析、代码质量度量等,它可以由人工进行。
31.动态测试是通常意义上的测试,也就是运行和使用软件。
是根据软件开发的各个阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。
*32. 黑盒测试将测试对象看作一个黑盒,不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
这种测试又称为功能测试或数据驱动测试。
黑盒测试的方法:等价类划分法、边界值分析法、错误推测法、因果图法等。
*33. 白盒测试把测试对象看作一个透明的盒子,利用程序内部逻辑机构及有关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,确定实际的状态是否与预期的一致。
又称为结构测试或逻辑驱动测试。
白盒测试的方法:逻辑覆盖、基本路径测试等。
*34.软件测试按四个步骤(不同阶段)进行:单元测试、集成测试、确认测试、系统测试单元测试:对软件设计的最小单位-模块进行正确性的测试,其目的是发现各模块内部可能存在的各种错误。
是在代码编写阶段可进行的测试,它是整个测试工作的基础。
确认测试是验证软件的功能和性能是否满足需求规格说明中得各种需求,以及软件配置是否完全、正确。
*35、程序调试的任务是诊断和修正程序中的错误。
调试的方法:强行排错法、回溯法、原因排除法
*36、软件维护主要是指根据需求变化或硬件环境的变化对应用程序进行部分或全部的修改。
分类:
1.适应性维护
2.改善性维护
3.纠错性维护
4.预防性维护(备注:每样维护要明白什么意思)
37、维护的副作用有编码副作用、数据副作用、文档副作用三种。
本部分典型例题:
1、程序设计语言的基本成分是数据成分、运算成分、控制成分和(D)
A)对象成分B)变量成分C)语句成分D)传输成分
2、结构化程序设计主要强调的是(D)
A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性
3、对建立良好的程序设计风格,下面描述正确的是(A)
A)程序应简单、清晰、可读性好B)符号名的命名只要符合语法
C)充分考虑程序的执行效率D)程序的注释可有可无
4、NULL是指(C)
A)0 B)空格C)未知的值或无任何值D)空字符串
5、在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的(C)
A)安全性B)一致性C)可理解性D)合理性
6、子程序通常分为两类:【过程】和函数,前者是命令的抽象,后者是为了求值。
7、.在面向对象方法中,类之间共享属性和操作的机制称为【继承】。
8、一个类可以从直接或间接的祖先中继承所有属性和方法,提高了软件的【可重用性】
9.软件的可行性研究中不包括(D)
A、法律可行性B、技术可行性C、经济可行性D、政治可行性
10.软件生产过程中,需求信息由(D )给出。
A、程序员
B、项目管理者
C、软件分析设计人员
D、软件用户
11.可行性研究要进行一次(C)需求分析。
A.详细的B.全面的C.简化的、压缩的D.彻底的
12、需求分析的任务不包括(B)
A问题分析B系统设计 C 需求描述 D 需求评审。
13、1.对在数据流图中每一个命令的图形元素均给以定义是(B)
A、条目定义B、数据字典C、数据定义D、数据说明
14. 结构化程序设计理论认为,实现良好的程序结构要应用(A )的分析方法。
A、自顶向下
B、自底向上
C、面向对象
D、基于组件
15.从事物的组成部件及每个部件的属性、功能来认识事物。
这种方法被称为(A)的方法。
A、面向对象
B、面向数据
C、面向过程
D、面向属性
16.(D)工具在软件详细设计过程中不采用。
A.判定表B.IPO图C.PDL D.DFD图
17.程序的三种基本控制结构的共同特点是(:D)
A.不能嵌套使用B.只能用来写简单程序C.已经用硬件实现D.只有一个入口和一个出口
18.从工程管理的角度软件设计可分为概要设计和【详细】设计两大步骤。
19.流程图也称为程序框图是最常用的一种表示法,它有顺序、分支和【循环】三个基本控制构件。
20.软件可靠性是指在给定的时间间隔内,程序成功运行的【概率】
21. 软件工程时代的生产方式是【工程】化。
22. 结构化设计以(数据结构)为基础映射成软件结构。
软件结构是以【模块】为基础而组成的一种控制层次结构。
23.在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看做是_(C)____
A. 循环的集合
B. 地址的集合
C. 路径的集合
D. 目标的集合
24.在设计测试用例时,应当包括(C)
A、合理的输入条件B、不合理的输入条件C、合理的和不合理的输入条件D、部分条件
25、与设计测试数据无关的文档是(D )。
A、需求说明书
B、设计说明书
C、源程序
D、项目开发设计
26.对于软件测试分类,下列各项都是按照不同阶段来进行的划分,除了(C)。
A、单元测试
B、集成测试
C、黑盒测试
D、系统测试
27、为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础的软件维护称为(D)。
A。
纠错性维护B适应性维护 C 改善性维护D预防性维护
28. 为适应软件运行环境的变化而修改软件的活动称为(B)。
A.纠错性维护B适应性维护C 改善性维护D预防性维护
29、根据用户在软件使用过程中提出的建设性意见而进行的维护活动称为(C)。
A纠错性维护B适应性维护C改善性维护D预防性维护
30、为改正软件系统中潜藏的错误而进行的维护活动称为(A)。
A错性维护B适应性维护C 改善性维护D 预防性维护
31、以下不属于白盒测试技术的是(D)
A 逻辑覆盖B基本路径测试C循环覆盖测试D等价类划分
32.产生软件维护的副作用,是指(C)
A.开发时的错误B.隐含的错误C.因修改软件而造成的错误D.运行时误操作
33. 软件测试方法中( D )属于静态测试。
A 黑盒法
B 路径覆盖
C 错误推测
D 人工检测
34.黑盒测试主要是测试软件是否满足【功能】需求。
35.程序设计语言的【可维护】性通常指这种语言编写的程序被理解,被修改及调整和改进的难易程度。
36.软常【单元测试】是在代码编写阶段可进行的测试,它是整个测试工作的基础。
37.若按功能划分,软件测试的方法通常分为白盒测试方法和【黑盒】测试方法。
按软件是否被执行,软件测试分为【动态测试】和【静态测试】。
38.维护的副作用有编码副作用、【数据副作用】、文档副作用三种。
39、软件按功能可以分为:应用软件、系统软件、和【工具软件】。
40、软件工程的出现是由于【软件危机】。
为了解决软件危机,人们提出了【软件工程学】。