错题纠正

Ⅰ.list是一个ArrayList的对象,当将选项(A)的代码填到//todo delete 处时,可以在Iterator遍历的过程中正确并安全地删除一个list中保存地对象。
在这里插入图片描述
A.it.remove()

B.list.remove(index)

C.list.remove(obj)

D.list.delete(index)

解析:

Iterator支持从源集合中安全地删除对象,删除的方法为在Iterator上调用remove()方法。这样做的好处是可以避免ConcurrentModifiedException异常发生,当打开Iterator迭代集合时,同时又在对集合进行修改。有些集合不允许在迭代时删除或添加元素,但是调用Iterator的remove()方法是个安全的做法。

remove()方法的作用为从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作),每次都调用next()方法只能调用一次此方法。如果在进行迭代时,用调用此方法之外的其他方式修改了该迭代器所指向的集合,那么迭代器的行为是不明确的。

Ⅱ.以下属于算法结构的是(ABC)

A.输入数据

B.处理数据

C.输出结果

D.存储结果

解析:

算法指的是解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。其主要功能是对输入结果特定的运算产生期望的输出,所以,输入数据、处理数据、输出结果都属于算法结构,显然,存储数据的功能的并不包扩在内。

Ⅲ.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,那么它的前序遍历序列是(D)。

A.abcde

B.dceab

C.deabc

D.cedba

解析:

二叉树的后序遍历:首先遍历左子树,然后遍历右子树,最后访问根节点,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后遍历根节点。

二叉树的中序遍历:首先遍历左子树,然后访问根节点,最后遍历右子树。在遍历左、右子树时,仍然先遍历左子树,再访问根节点,最后遍历右子树。

二叉树的前序遍历:首先访问根节点,然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然访问根节点,再遍历左子树,最后遍历右子树。

Ⅳ.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果是(C)

A.3,2,5,8,6

B.2,3,5,8,6

C.3,2,5,6,8

D.2,3,6,5,8

解析:

快速排序是一种非常高效的排序算法,它采用“分而治之”的思想,把大的拆分成小的,小的再拆分成更小的。其原理如下:对一组给定的记录,通过一趟排序后,将原序列分为两部分,其中前一部分的所有记录均比后一部分的所有记录小,然后再依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均有序为止。

一趟快速的算法步骤如下:

1)设置两个变量i、j,排序开始的时候:i=0,j=N-1。

2)以第一数组元素作为关键数据,赋值给key,即key=A[0];

3)从J开始向前搜索,即逆向遍历数组(j–),找到第一个小于key的值A[j],将A[j]和A[i]互换。

4)从i开始向后搜索,即正向遍历数组(i++),找到哦第一个大于key的A[i],将A[i]和A[j]互换。

5)重复第3)、4)步,直到i=j。

对于本题而言,把5作为基准,执行过程如下:首先,从数组最右边开始遍历,由于8>5,因此,不需要移动8的位置,接着向后遍历数组元素3,由于3<5,因此,交换这两个数组元素的值,此时数组中的元素为(3,2,6,5,8),接着正向遍历数组,下一个遍历的值为2,由于2<5,因此,不需要移动2的位置,接着遍历6,由于6>5,因此,需要交换5和6的位置,此时数组的值为(3,2,5,6,8),此时已经遍历了数组中所有的值,一趟快速排序结束。

程序实现:

在这里插入图片描述
输出结果如下:

在这里插入图片描述

Ⅴ.在排序方法中,从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一段的方法,称为(C)。

A.归并排序

B.希尔排序.

C.插入排序

D.选择排序

解析:对于A选项,归并排序是利用递归与分治技术将数据序列划分为越来越小的子序列,再对子序列进行排序,最后再用递归的方法将排号序的子序列合并成为越来越大的有序序列。

对于B选项,希尔排序也称为“缩小增量排序”,其基本原理如下:首先将待排序序列的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序后”,最后再对所有元素进行一次直接插入排序。

对于C选项,插入排序是指对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余的记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到之前的有序序列中,直至最后一个记录插入到有序序列中为止。

对于D选项,选择排序是一种简单直观的排序算法,他的基本原理如下:对于给定的一组记录,经过第一轮比较后得到较小的记录,然后将该记录与第一个记录的位置进行交换;接着对不包含第一个记录意外的其他记录进行第二轮比较,得到最小的记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个时为止。

Ⅵ.操作系统的功能是进程处理机管理、(A)管理、()管理、文件管理和作业管理等。

A.设备

B.存储器

C.硬件

D.软件

解析:

操作系统(Operating Systen ,OS)是一个庞大的管理控制程序,管理计算机硬件与软件资源,同时,它也是计算机系统的内核和基石,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理及文件管理。

Ⅶ.下列中断属于强迫性中断的是(ABD)

A.掉电

B.设备出错

C.时间片到时

D.执行print语句

解析:

中断源一般可以分为两类:强迫型中断和自愿性中断由随机事件引起而非程序员事先安排,它包括输入/输出中断、硬件故障中断、时钟中断、控制台中断和程序性中断。设备出错、执行print语句属于其中的输入输出中断;断电属于硬件故障中断。时间片到属于自愿性中断。

Ⅷ.进程调度是从(A)选择一个进程投入运行。

A.就绪队列

B.作业后备队列

C.等待队列

D.提交队列

解析:进程的基本调度状态右运行,就绪和阻塞。进程调度程序从处于就绪状态的进程中选择一个投入运行。运行进程因等待某一个事件而进入阻塞状态,因事件片到达而回到就绪状态。处于阻塞状态的进程当所等待的事件发生时,便进入就绪状态。

本题中,就绪队列是等待CPU时间的队列,其中存放着等待执行的任务。进程调度是从就绪队列中选择一个进程投入运行。

Ⅸ.“死锁”是针对(D)的。

A.某个进程申请资源数超过了系统拥有的最大资源数。

B.某个进程申请系统中不存在的资源

C.硬件故障

D.多个并发进程竞争独占型资源

解析:所谓死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或者系统产生了死锁,这些永远在互相等待的进程称为死锁进程。举一个简单的例子:在吃饭的时候,只有拿到一双筷子之后才能开始吃饭,如果有两个人,每个人都只拿了一根筷子,而等待另一根筷子可用时,就拿过来开始吃饭,此时,两个人都已经占用了部分资源,而等待另一个资源,此时两个人永远都在等待对方释放资源,因此发生了死锁。可以通过外力作用把一个人的筷子强制释放掉而给另一个人而解决死锁。

Ⅹ.某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台,当N的取值不超过 (B)时,系统不会发生死锁。

A.3

B.5

C.8

D.7

解析:

不发生死锁的条件时至少能保证1个进程获得3台打印机资源。最坏的情况就是1个进程获取了3台打印机资源,另外N-1个进程获取到2个打印机,等待获取第3台。

所以,可以构成等式:3+(N-1)*2=11,结算结果为N=5。