我当时也还在游山玩水,现在拿来做下.....
考试时长:120分钟
一 不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)
1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)
A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA
画出树
A
↙↘
D B
↙↘
C E
↙↘
F G
↘H
2 下列哪两个数据结构,同时具有较高的查找和删除性能?(CD)
A.有序数组 B.有序链表 C.AVL树 D.Hash表
AVL树(平衡二叉树)儿子左小右大,删节点也会旋转保持层数.
Hash表(广义表)可以理解为链表的关键词加强版.链表本来增加删除效率高,多了索引连查找也快
3 下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)
A.快速排序 B.堆排序 C.归并排序 D.冒泡排序
快速排序:O(nlogn)~O(n²)
堆排序:O(nlogn)
归并排序:O(nlogn)
冒泡排序:O(n)~O(n²)
4 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A)
A.8 3 2 5 1 6 4 7
B.3 2 8 5 1 4 6 7
C.3 8 2 5 1 6 7 4
D.8 2 3 5 1 4 7 6
小根堆的建立方法: 从底部的父节点开始到顶部的根节点,比较儿子,比自己小的换之.若是那个儿子还有孙子,继续比较.
建立成堆后是 1 2 4 3 5 6 7 8
5 当n=5时,下列函数的返回值是:(A)
int foo(int n)
{
if(n<2)return n;
return foo(n-1)+foo(n-2);
}
A.5 B.7 C.8 D.10
f(4) + f(3)
= f(3) +f(2) + f(2)+f(1)
=f(2)+f(1) +f(2) + f(2)+f(1)
=5
6 S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C)
A.37.5% B.32.5% C.28.6% D.26.1%
假设A300000人,B500000人.则A会犯罪的人有30个,B会犯罪的人有75个
30 ÷ (30+75) =28.6;
7 Unix系统中,哪些可以用于进程间的通信?(BCD)
A.Socket B.共享内存 C.消息队列 D.信号量
进程间的通信: IPC(共享内存,消息队列,信号量) , Socket套接字 , Piple管道
而在Unix系统中: 同上,但没有Socket套接字, 有的是端口(套接口).
8 静态变量通常存储在进程哪个区?(C)
A.栈区 B.堆区 C.全局区 D.代码区
栈区: 函数,变量
堆区 : 用户自定义分配的空间(new,detele)
代码区: 程序的代码
全局区: 全局变量,静态变量
常量区: 常量
寄存器: 指针,栈顶指针
自由空间: 剩余的
9 查询性能(B)
A. 在Name字段上添加主键
B. 在Name字段上添加索引
C. 在Age字段上添加主键
D. 在Age字段上添加索引
10 IP地址131.153.12.71是一个(B)类IP地址。
A.A B.B C.C D.D
A类地址: 00000000.0....~01111111.1111.... ( 0.0.0.0~127.255.255.255)
B类地址:10000000.0....~10111111.1111.... (128.0.0.0~191.255.255.255)
C类地址:11000000.0....~11011111.1111.... (192.0.0.0~223.255.255.255)
D类地址:11100000.0....~11101111.1111..... (224.0.0.0~ 239.255.255.255)
E类没用:11110000.0....~11110111.1111......(240.0.0.0~255.255.255.255)
11 下推自动识别机的语言是:(C)
A. 0型语言 B.1型语言 C.2型语言 D.3型语言
0型文法(递归可枚举)
1型文法(上下文有关)线性有界自动机:
2型文法(上下文无关)下推自动机
3型文法(正规文法)有限状态自动机
12 下列程序的输出是:(D)
#define add(a+b) a+b
int main()
{
printf(“%d\n”,5*add(3+4));
return 0;
}
A.23 B.35 C.16 D.19
5*3+4=19
define是直接替换的~
13 浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)
A 找不到该页面
B 禁止访问
C 内部服务器访问
D 服务器繁忙
4开头的都是与服务器有关
常用的有:
400语法错误
403服务器拒绝
404not found
408 服务器超时
500 内部服务器错误
14 如果某系统15*4=112成立,则系统采用的是(A)进制。
A.6 B.7 C.8 D.9
15 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:(A)
A a(000) b(001) h(01) i(10) o(11)
B a(0000) b(0001) h(001) o(01) i(1)
C a(000) b(001) h(01) i(10) o(00)
D a(0000) b(0001) h(001) o(000) i(1)
16 TCP和IP分别对应了OSI中的哪几层?(CD)
A Application layer
B Presentation layer
C Transport layer
D Network layer
TCP是协议层
IP地址是网络层
17 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?(C)
A.EDCBA B.DECBA C.DCEAB D.ABCDE
18 同一进程下的线程可以共享以下?(BD)
A. stack B.data section C.register set D.file fd
同一进程下共享的有: ①该进程代码段 ,②共有的数据(data section) ③打开的文件描述符(file fd)
④信号处理器 ⑤当前目录,用户组ID,进程组ID
19 对于派生类的构造函数,在定义对象时构造函数的执行顺序为?(D)
1:成员对象的构造函数
2:基类的构造函数
3:派生类本身的构造函数
A.123 B.231 C.321 D.213
20 如何减少换页错误?(B)
A 进程倾向于占用CPU
B 访问局部性(locality of reference)满足进程要求
C 进程倾向于占用I/O
D 使用基于最短剩余时间(shortest remaining time)的调度机制
也是OS操作系统的题目.
换页错误是指虚拟内存里面找不到要找的页码
占用CPU货站I/O也只是提速,我说占用提高虚拟内存还差不多,可以多存几个页码
访问局部性是指少与新的电脑交流,这样用来用去就那几个页码,就可以减少错误了
至于SRT调度机制,这个是作业调度,和这里没有五毛关系...
21 递归函数最终会结束,那么这个函数一定?(B)
A 使用了局部变量
B 有一个分支不调用自身
C 使用了全局变量或者使用了一个或多个参数
D 没有循环调用
22 编译过程中,语法分析器的任务是(B)
A分析单词是怎样构成的
B 分析单词串是如何构成语言和说明的
C 分析语句和说明是如何构成程序的
D 分析程序的结构
23 同步机制应该遵循哪些基本准则?(ABCD)
A.空闲让进 B.忙则等待 C.有限等待 D.让权等待
四个原则:
(1)空闲让进:有资源就让线程进入临界区
(2)忙则等待:已经有人进入临界区了,等吧免得冲突
(3)有限等待:有限时间内自己一定要进入临界区,避免"死等"
(4)让权等待:进入不了的话就把手上的资源释放.
24 进程进入等待状态有哪几种方式?(ABC)
A CPU调度给优先级更高的线程
B 阻塞的线程获得资源或者信号
C 在时间片轮转的情况下,如果时间片到了
D 获得spinlock未果
进程的三种基本状态: 就绪ready, 运行running, 阻塞block...这三种状态是换得资源和没有资源时
进程运行的状态:运行running, 等待waiting. 这是CPU处理时
spinlock自旋锁,防止并发进行.
25 设计模式中,属于结构型模式的有哪些?(BC)
A 状态模式 B 装饰模式 C 代理模式 D 观察者模式
考的是设计模式,有23种
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
二、填空题(共4题10个空,每空2分,共20 分)
1 设有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},请写出按二路归并方法对该序列进行一趟扫描后的结果为DQFXAPBNMYCW。
一趟的二路,就是两个两个的对比就可以了,第一个和第二个对比,第三个和第四个对比....
2 关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell的排序法,则一趟扫描的结果是QACSQDFXRHMY;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是FHCDQAMQRSYX。
希尔排序: (Q,H,C,Y,Q,A,M,S,R,D,F,X). 同颜色之间为一组的比较
一趟的快速排序,以Q为模板,先从尾部往前比较,有小的则交换位置然后全前往后比较
3 二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为:_________,_________。
Linux的伙伴系统
大小(4)10 : 011011110000 能被 (4×2) 整除,所以 +4 = 011011110100
大小(16)10 : 011011110000 不能被 (16×2) 整除,所以 -16 = 011011100000
4 设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左、右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。N2,NL,NR、N0都是全局量,且在调用count(t)之前都置为0。
typedef struct node
{
int data;
struct node *lchild,*rchild;
}node;
int N2,NL,NR,N0;
void count(node *t)
{
if (t->lchild!=NULL)
if (t->rchild!=NULL) N2++;
else NL++;
else if (t->rchild!=NULL) NR++;
else N0++;
if(t->lchild!=NULL) count(t->lchild);
if(t->rchild!=NULL) count(t->rchild);
}/* call form :if(t!=NULL) count(t);*/
三、其他方向简答题(共2题,每题20分),选作题,不计入总分)
1 请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。
2 A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。