2012-01
求整数n(n≥0)阶乘的算法如下,其时间复杂度是__。
int fact(int n)
{
if (n <= 1)
return 1;
return n * fact(n - 1);
}A. O(log2 n)
B. O(n)
C. O(nlog2 n)
D. O(n2)
答案:B
2012 全国硕士研究生入学统一考试
当前显示 47 道题
求整数n(n≥0)阶乘的算法如下,其时间复杂度是__。
int fact(int n)
{
if (n <= 1)
return 1;
return n * fact(n - 1);
}A. O(log2 n)
B. O(n)
C. O(nlog2 n)
D. O(n2)
答案:B
已知操作符包括‘+’、‘-’、‘’、‘/’、‘(’和‘)’。将中缀表达式 `a+b-a((c+d)/e-f)+g 转换为等价的后缀表达式 ab+acd+e/f-*g-+` 时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是__。
A. 5
B. 7
C. 8
D. 11
答案:A
若一棵二叉树的前序遍历序列为 a, e, b, d, c,后序遍历序列为 b, c, d, e, a,则根结点的孩子结点__。
A. 只有e
B. 有e、b
C. 有e、c
D. 无法确定
答案:A
若平衡二叉树的高度为 6,且所有非叶结点的平衡因子均为 1,则该平衡二叉树的结点总数为__。
A. 10
B. 20
C. 32
D. 33
答案:B
对有n个结点、e条边且使用邻接表存储的有向图进行广度优先遍历,其算法时间复杂度是__。
A. O(n)
B. O(e)
C. O(n + e)
D. O(ne)
答案:C
若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为零,则关于该图拓扑序列的结论是__。
A. 存在,且唯一
B. 存在,且不唯一
C. 存在,可能不唯一
D. 无法确定是否存在
答案:C
如右图所示的有向带权图,若采用迪杰斯特拉(Dijkstra)算法求从源点a到其他各顶点的最短路径,则得到的第一条最短路径的目标顶点是b,第二条最短路径的目标顶点是c,后续得到的其余各最短路径的目标顶点依次是__。

A. d, e, f
B. e, d, f
C. f, d, e
D. f, e, d
答案:C
下列关于最小生成树的叙述中,正确的是__。
I. 最小生成树的代价唯一
II. 所有权值最小的边一定会出现在所有的最小生成树中
III. 使用普里姆(Prim)算法从不同顶点开始得到的最小生成树一定相同
IV. 使用普里姆算法和克鲁斯卡尔(Kruskal)算法得到的最小生成树总不相同
A. 仅 I
B. 仅 II
C. 仅 I、III
D. 仅 II、IV
答案:A
已知一棵3阶B-树,如下图所示。删除关键字78得到一棵新B-树,其最右叶结点中的关键字是__。

A. 60
B. 60,62
C. 62,65
D. 65
答案:D
在内部排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。下列排序方法中,每一趟排序结束都至少能够确定一个元素最终位置的方法是__。
I. 简单选择排序
II. 希尔排序
III. 快速排序
IV. 堆排序
V. 二路归并排序
A. 仅I、III、IV
B. 仅I、III、V
C. 仅II、III、IV
D. 仅III、IV、V
答案:A
对一待排序序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是__。
A. 排序的总趟数
B. 元素的移动次数
C. 使用辅助空间的数量
D. 元素之间的比较次数
答案:D
假定基准程序A在某计算机上的运行时间为100秒,其中90秒为CPU时间,其余为I/O时间。若CPU速度提高50%,I/O速度不变,则运行基准程序A所耗费的时间是__。
A. 55s
B. 60s
C. 65s
D. 70s
答案:D
假定编译器规定int和short型长度分别为32位和16位,执行下列C语言语句:
unsigned short x=65530;
unsigned int y=x;
得到y的机器数为__。
A. 0000 7FFAH
B. 0000 FFFAH
C. FFFF 7FFAH
D. FFFF FFFAH
答案:B
float类型(即IEEE 754单精度浮点数格式)能表示的最大正整数是__。
A. 2126-2103
B. 2127-2104
C. 2127-2103
D. 2128-2104
答案:D
某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int型和short型长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下:
struct{
int a;
char b;
short c;
} record;
record.a=273;若record变量的首地址为0xC008,则地址0xC008中内容及record.c的地址分别为__。
A. 0x00、0xC00D
B. 0x00、0xC00E
C. 0x11、0xC00D
D. 0x11、0xC00E
答案:D
下列关于闪存(Flash Memory)的叙述中,错误的是
A. 信息可读可写,并且读、写速度一样快
B. 存储元由 MOS 管组成,是一种半导体存储器
C. 掉电后信息不丢失,是一种非易失性存储器
D. 采用随机访问方式,可替代计算机外部存储器
答案:A
假设某计算机按字编址,Cache 有 4 个行,Cache 和主存之间交换的块大小为 1 个字。若 Cache 的内容初始为空,采用 2 路组相联映射方式和 LRU 替换策略。访问的主存地址依次为 0,4,8,2,0,6,8,6,4,8 时,命中 Cache 的次数是
A. 1
B. 2
C. 3
D. 4
答案:C
某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6 个微命令,则操作控制字段至少有
A. 5位
B. 6位
C. 15位
D. 33位
答案:C
某同步总线的时钟频率为 100MHz,宽度为 32 位,地址/数据线复用,每传输一个地址或数据占用一个时钟周期。若该总线支持突发(猝发)传输方式,则一次“主存写”总线事务传输 128 位数据所需要的时间至少是
A. 20ns
B. 40ns
C. 50ns
D. 80ns
答案:C
下列关于 USB 总线特性的描述中,错误的是
A. 可实现外设的即插即用和热拔插
B. 可通过级联方式连接多台外设
C. 是一种通信总线,连接不同外设
D. 同时可传输 2 位数据,数据传输率高
答案:D
下列选项中,在 I/O 总线的数据线上传输的信息包括
I. I/O 接口中的命令字
II. I/O 接口中的状态字
III. 中断类型号
A. 仅 I、II
B. 仅 I、III
C. 仅 II、III
D. I、II、III
答案:D
响应外部中断的过程中,中断隐指令完成的操作,除保护断点外,还包括
I. 关中断
II. 保存通用寄存器的内容
III. 形成中断服务程序入口地址并送 PC
A. 仅 I、II
B. 仅 I、III
C. 仅 II、III
D. I、II、III
答案:B
下列选项中,不可能在用户态发生的事件是
A. 系统调用
B. 外部中断
C. 进程切换
D. 缺页
答案:C
中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存而子程序调用不需要保存其内容的是
A. 程序计数器
B. 程序状态字寄存器
C. 通用数据寄存器
D. 通用地址寄存器
答案:B
下列关于虚拟存储器的叙述中,正确的是
A. 虚拟存储只能基于连续分配技术
B. 虚拟存储只能基于非连续分配技术
C. 虚拟存储容量只受外存容量的限制
D. 虚拟存储容量只受内存容量的限制
答案:B
操作系统的 I/O 子系统通常由四个层次组成,每一层明确定义了与邻近层次的接口。
其合理的层次组织排列顺序是___。
A. 用户级I/O软件、设备无关软件、设备驱动程序、中断处理程序
B. 用户级I/O软件、设备无关软件、中断处理程序、设备驱动程序
C. 用户级I/O软件、设备驱动程序、设备无关软件、中断处理程序
D. 用户级I/O软件、中断处理程序、设备无关软件、设备驱动程序
答案:A
假设5个进程 P0、P1、P2、P3、P4 共享三类资源 R1、R2、R3,这些资源总数分别为18、6、22。T0 时刻的资源分配情况如下表所示,此时存在的一个安全序列是。

A. P0, P2, P4, P1, P3
B. P1, P0, P3, P4, P2
C. P2, P1, P0, P3, P4
D. P3, P4, P2, P1, P0
答案:D
若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是。
Ⅰ. 若该文件的数据不在内存中,则该进程进入睡眠等待状态
Ⅱ. 请求read系统调用会导致CPU从用户态切换到核心态
Ⅲ. read系统调用的参数应包含文件的名称
A. 仅Ⅰ、Ⅱ
B. 仅Ⅰ、Ⅲ
C. 仅Ⅱ、Ⅲ
D. Ⅰ、Ⅱ和Ⅲ
答案:A
一个多道批处理系统中仅有 P1 和 P2 两个作业,P2 比 P1 晚5ms到达,它们的计算和I/O操作顺序如下:
P1:计算60ms,I/O 80ms,计算20ms
P2:计算120ms,I/O 40ms,计算40ms
若不考虑调度和切换时间,则完成两个作业需要的时间最少是。
A. 240ms
B. 260ms
C. 340ms
D. 360ms
答案:B
若某单处理器多进程系统中有多个就绪态进程,则下列关于处理机调度的叙述中,错误的是。
A. 在进程结束时能进行处理机调度
B. 创建新进程后能进行处理机调度
C. 在进程处于临界区时不能进行处理机调度
D. 在系统调用完成并返回用户态时能进行处理机调度
答案:C
下列关于进程和线程的叙述中,正确的是。
A. 不管系统是否支持线程,进程都是资源分配的基本单位
B. 线程是资源分配的基本单位,进程是调度的基本单位
C. 系统级线程和用户级线程的切换都需要内核的支持
D. 同一进程中的各个线程拥有各自不同的地址空间
答案:A
下列选项中,不能改善磁盘设备I/O性能的是__。
A. 重排 I/O 请求次序
B. 在一个磁盘上设置多个分区
C. 预读和滞后写
D. 优化文件物理块的分布
答案:B
在TCP/IP体系结构中,直接为ICMP提供服务的协议是__。
A. PPP
B. IP
C. UDP
D. TCP
答案:B
在物理层接口特性中,用于描述完成每种功能的事件发生顺序的是__。
A. 机械特性
B. 功能特性
C. 过程特性
D. 电气特性
答案:C
以太网的MAC协议提供的是__。
A. 无连接不可靠服务
B. 无连接可靠服务
C. 有连接不可靠服务
D. 有连接可靠服务
答案:A
两台主机之间的数据链路层采用后退N帧协议(GBN)传输数据,数据传输速率为16kbps,单向传播时延为270ms,数据帧长度范围是128~512字节,接收方总是以与数据帧等长的帧进行确认。为使信道利用率达到最高,帧序号的比特数至少为__。
A. 5
B. 4
C. 3
D. 2
答案:B
下列关于IP路由器功能的描述中,正确的是__。
I. 运行路由协议,设置路由表
II. 监测到拥塞时,合理丢弃IP分组
III. 对收到的IP分组头进行差错校验,确保传输的IP分组不丢失
IV. 根据收到的IP分组的目的IP地址,将其转发到合适的输出线路上
A. 仅III、IV
B. 仅I、II、III
C. 仅I、II、IV
D. I、II、III、IV
答案:C
ARP协议的功能是__。
A. 根据IP地址查询MAC地址
B. 根据MAC地址查询IP地址
C. 根据域名查询IP地址
D. 根据IP地址查询域名
答案:A
某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是__。
A. 180.80.76.0
B. 180.80.76.255
C. 180.80.77.255
D. 180.80.79.255
答案:D
若用户1与用户2之间发送和接收电子邮件的过程如下图所示,则图中①、②、③阶段分别使用的应用层协议可以是__。

A. SMTP、SMTP、SMTP
B. POP3、SMTP、POP3
C. POP3、SMTP、SMTP
D. SMTP、SMTP、POP3
答案:D
设有6个有序表A、B、C、D、E、F,分别含有10、35、40、50、60和200个数据元素,各表中元素按升序排列。要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最小。请回答下列问题。
1)给出完整的合并过程,并求出最坏情况下比较的总次数。
2)根据你的合并过程,描述N(N≥2)个不等长升序表的合并策略,并说明理由。
合并过程(基于最佳归并树思想):
最坏情况下比较的总次数:
825 次(计算:44 + 84 + 109 + 194 + 394 = 825)。
策略:对于 N(N≥2)个不等长升序表,采用类似哈夫曼树(最佳归并树)的构造方法:每次选择当前长度最小的两个表进行合并,直至合并为一个表。
理由:两个表合并的最坏比较次数为两表长度之和减1。优先合并短表可使后续合并中参与的表长度较小,从而最小化总比较次数,达到最佳合并效率。
假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间。例如,“loading”和“being”的存储映像如下图所示。

设 str1 和 str2 分别指向两个单词所在单链表的头结点,链表结点结构为 [data | next],请设计一个时间上尽可能高效的算法,找出由 str1 和 str2 所指向两个链表共同后缀的起始位置(如图中字符 i 所在结点的位置 p)。要求:
1)给出算法的基本设计思想。
2)根据设计思想,采用 C 或 C++ 或 Java 语言描述算法,关键之处给出注释。
3)说明你所设计算法的时间复杂度。
(1)算法的基本设计思想
首先分别遍历两个链表,计算其数据结点个数 len1 和 len2 。然后使两个链表尾部对齐:让较长链表的指针先移动长度差值个结点,使两个指针到链表尾的距离相等。最后同步移动两个指针,直到它们指向同一个结点,该结点即为共同后缀的起始位置;若直至链表尾未相遇,则无共同后缀。
(2)算法的C语言描述
typedef struct LinkNode {
char data;
struct LinkNode *next;
} LinkNode;
// 计算数据结点个数
int Length(LinkNode *head) {
int len = 0;
LinkNode *p = head->next; // 跳过头结点
while (p != NULL) {
len++;
p = p->next;
}
return len;
}
// 查找共同后缀起始结点
LinkNode* FindCommonLinkList(LinkNode *str1, LinkNode *str2) {
int len1 = Length(str1), len2 = Length(str2);
LinkNode *p = str1, *q = str2;
// 对齐:使p和q到尾的距离相等
if (len1 > len2) {
for (int i = 0; i < len1 - len2; i++)
p = p->next;
} else {
for (int i = 0; i < len2 - len1; i++)
q = q->next;
}
// 同步移动直到相遇
while (p != NULL && q != NULL && p != q) {
p = p->next;
q = q->next;
}
return p; // p即为共同起始结点(若无则为NULL)
}(3)时间复杂度
时间复杂度为 O(len1 + len2) ,其中 len1 和 len2 分别为两个链表的数据结点个数。
假定某计算机的 CPU 主频为 80MHz,CPI 为 4,平均每条指令访存 1.5 次,主存与 Cache 之间交换的块大小为 16B,Cache 的命中率为 99%,存储器总线宽度为 32 位。请回答下列问题。
1)该计算机的 MIPS 数是多少?平均每秒 Cache 缺失的次数是多少?在不考虑 DMA 传送的情况下,主存带宽至少达到多少才能满足 CPU 的访存要求?
2)假定在 Cache 缺失的情况下访问主存时,存在 0.0005% 的缺页率,则 CPU 平均每秒产生多少次缺页异常?若页面大小为 4KB,每次缺页都需要访问磁盘,访问磁盘时 DMA 传送采用周期挪用方式,磁盘 I/O 接口的数据缓冲寄存器为 32 位,则磁盘 I/O 接口平均每秒发出的 DMA 请求次数至少是多少?
3)CPU 和 DMA 控制器同时要求使用存储器总线时,哪个优先级更高?为什么?
4)为了提高性能,主存采用四体低位交叉存储模式,工作时每 1/4 个存储周期启动一个体。若每个体的存储周期为 50ns,则该主存能提供的最大带宽是多少?
(1)MIPS数为20;平均每秒Cache缺失次数为300,000次;主存带宽至少为4.8MB/s。
(2)CPU平均每秒产生缺页异常1.5次;磁盘I/O接口平均每秒发出DMA请求次数至少为1536次。
(3)DMA控制器优先级更高;因为DMA请求若得不到及时响应,I/O传输数据可能会丢失。
(4)主存能提供的最大带宽为320MB/s。
某 16 位计算机中,带符号整数用补码表示,数据 Cache 和指令 Cache 分离。题 44 表给出了指令系统中部分指令格式,其中 Rs 和 Rd 表示寄存器,mem 表示存储单元地址,(x)表示寄存器 x 或存储单元 x 的内容。

该计算机采用 5 段流水方式执行指令,各流水段分别是取指(IF)、译码/读寄存器(ID)、执行/计算有效地址(EX)、访问存储器(M)和结果写回寄存器(WB),流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一个寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题:
1)若 int 型变量 x 的值为 -513,存放在寄存器 R1 中,则执行指令“SHR R1”后,R1 的内容是多少?(用十六进制表示)
2)若某个时间段中,有连续的 4 条指令进入流水线,在其执行过程中没有发生任何阻塞,则执行这 4 条指令所需的时钟周期数为多少?
3)若高级语言程序中某赋值语句为 x = a + b,x、a 和 b 均为 int 型变量,它们的存储单元地址分别表示为 [x]、[a] 和 [b]。该语句对应的指令序列及其在指令流水线中的执行过程如题 44 图所示。

则这 4 条指令执行过程中,I3 的 ID 段和 I4 的 IF 段被阻塞的原因各是什么?
4)若高级语言程序中某赋值语句为 x = x * 2 + a,x 和 a 均为 unsigned int 型变量,它们的存储单元地址分别表示为 [x]、[a],则执行这条语句至少需要多少个时钟周期?要求模仿题 44 图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。
FEFFH
8个时钟周期
17个时钟周期
因 2*x 操作有左移和加法两种实现方法,故 x=x*2+a 对应的指令序列为:
I1 LOAD R1, [x]
I2 LOAD R2, [a]
I3 SHL R1 // 或者 ADD R1, R1
I4 ADD R1, R2
I5 STORE R2, [x]
某请求分页系统的局部页面置换策略如下:系统从0时刻开始扫描,每隔5个时间单位扫描一轮驻留集(扫描时间忽略不计),本轮没有被访问过的页框将被系统回收,并放入到空闲页框链尾,其中内容在下一次分配之前不被清空。当发生缺页时,如果该页曾被使用过且还在空闲页链表中,那么重新放回进程的驻留集中;否则,从空闲页框链表头部取出一个页框。
假设不考虑其他进程的影响和系统开销。初始时进程驻留集为空。目前系统空闲页框链表中页框号依次为32、15、21、41。进程P依次访问的<虚拟页号,访问时刻>是<1,1>, <3,2>, <0,4>, <0,6>, <1,11>, <0,13>, <2,14>。请回答下列问题。
1)访问<0,4>时,对应的页框号是什么?说明理由。
2)访问<1,11>时,对应的页框号是什么?说明理由。
3)访问<2,14>时,对应的页框号是什么?说明理由。
4)该策略是否适合于时间局部性好的程序?说明理由。
1)页框号:21
理由:访问时刻4,页0首次缺页,从空闲链表头部取出页框21分配。
2)页框号:32
理由:访问时刻11,页1曾被使用且在空闲链表中(页框32),因此重新放回驻留集。
3)页框号:41
理由:访问时刻14,页2首次缺页且从未使用过,从空闲链表头部取出页框41分配。
4)适合。
理由:时间局部性好的程序,被回收的页面很快会再次被访问,该策略允许从空闲链表中重新取回,提高效率。
某文件系统空间的最大容量为4TB(1TB=240B),以磁盘块为基本分配单位。磁盘块大小为1KB。文件控制块(FCB)包含一个512B的索引表区。请回答下列问题。
1)假设索引表区仅采用直接索引结构,索引表区存放文件占用的磁盘块号,索引表项中块号最少占多少字节?可支持的单个文件最大长度是多少字节?
2)假设索引表区采用如下结构:第0~7字节采用<起始块号,块数>格式表示文件创建时预分配的连续存储空间,其中起始块号占6B,块数占2B;剩余504字节采用直接索引结构,一个索引项占6B,那么可支持的单个文件最大长度是多少字节?为了使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。
【答案】
(1)
索引表项中块号最少占 4 字节。
可支持的单个文件最大长度为 128 KB。
(2)
当前结构下可支持的单个文件最大长度为 226 字节 + 84 KB(或 67194880 字节)。
为使单个文件长度达到最大,起始块号和块数应各占 4 字节。
理由:起始块号占 4 字节可寻址全部 232 个磁盘块(覆盖 4 TB 空间),块数占 4 字节可表示最多 232 个磁盘块(4 TB),从而连续部分能覆盖整个文件系统容量,使单个文件长度达到最大值 4 TB。
主机H通过快速以太网连接Internet,IP地址为192.168.0.8,服务器S的IP地址为211.68.71.80。H与S使用TCP通信时,在H上捕获的其中5个IP分组如题47-a表所示。
回答下列问题。
1)题 47-a 表中的 IP 分组中,哪几个是由 H 发送的?哪几个完成了 TCP 连接建立过程?哪几个在通过快速以太网传输时进行了填充?
2)根据题 47-a 表中的 IP 分组,分析 S 已经收到的应用层数据字节数是多少?
3)若题 47-a 表中的某个 IP 分组在 S 发出时的前 40 字节如题 47-b 表所示,则该 IP 分组到达 H 时经过了多少个路由器?


40H(十进制 64),H 捕获的 5 号分组 TTL 为 31H(十进制 49),每经过一个路由器 TTL 减 1,因此经过的路由器数为 64-49=15。