1. 单选题java
1. 假设把整数关键码K散列到N个槽列表,如下哪些散列函数是好的散列函数node
A: h(K)=K/N;c++
B: h(K)=1;算法
C: h(K)=K mod N;数据库
D: h(K)=(K+rand(N)) mod N, rand(N)返回0到N-1的整数数组
答案:d 数据结构
2. 下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是:函数
A: 堆排序 B:插入排序性能
C: 冒泡排序 D:快速排序spa
答案:a
3. 下面说法错误的是:
A: CISC计算机比RISC计算机指令多
B: 在指令格式中,采用扩展操做码设计方案的目的是为了保持指令字长不变而增长寻址空间
C:增长流水线段数理论上能够提升CPU频率
D:冯诺依曼体系结构的主要特征是存储程序的工做方式
答案:b,缘由 扩展操做码的设计方案目的是保持指令字长度不变而增长指令操做的数量
4. 不属于冯诺依曼体系结构必要组成部分是:
A:CPU B: Cache C:RAM D:ROM
答案:a和d都该选,b和c我以为该选b,由于cache是高速缓冲存储器,存取速度高于ram,冯诺依曼当时的cpu频率尚未那么快,cache还没出来,因此我以为该选b
5. 一个栈的入栈序列式ABCDE则不可能的出栈序列是:
A:DECBA B:DCEBA C:ECDBA D:ABCDE
答案:c
6.你认为能够完成编写一个C语言编译器的语言是:
A:汇编 B:C语言 C:VB D:以上全能够
答案:我以为该选a
7. 关于C++/JAVA类中的static成员和对象成员的说法正确的是:
A:static成员变量在对象构造时候生成
B: static成员函数在对象成员函数中没法调用
C: 虚成员函数不多是static成员函数
D: static成员函数不能访问static成员变量
答案:c
8:看不清
9:某进程在运行过程当中须要等待从磁盘上读入数据,此时进程的状态将:
A: 从就绪变为运行 B:从运行变为就绪
C: 从运行变为阻塞 D:从阻塞变为就绪
答案:c
10:下面算法的时间复杂度为:
Int f(unsigned int n)
{
If(n==0||n==1)
Return 1;
Else
Return n*f(n-1);
}
A: O(1) B:O(n) C:O(N*N) D:O(n!)
答案:b
11: n从1开始,每一个操做能够选择对n加1或者对n加倍。若想得到整数2013,最少须要多少个操做。
A:18 B:24 C:21 D;不可能
答案: d
12:对于一个具备n个顶点的无向图,若采用邻接表数据结构表示,则存放表头节点的数组大小为:
A: n B: n+1 C: n-1 D:n+边数
答案:a
13:不全
14:以下函数,在32bit系统foo(2^31-3)的值是:
Int foo(int x)
{
Return x&-x;
}
A: 0 B: 1 C:2 D:4
答案:a,x的值为11111111111111111111111111111110-011 = 01111111111111111111111111111101
-x 的值为 0-x = 0- 01111111111111111111111111111101 = 10000000000000000000000000000010
因此答案为0
15:对于顺序存储的线性数组,访问节点和增长节点删除节点的时间复杂度为:
A: O(n),O(n) B:O(n),O(1) C:O(1),O(n) D:O(n),O(n)
答案:c
16:在32为系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是:
Struct A
{
Int a;short b;int c;char d;
};
Struct B
{int a;short b;char c;int c;};
A: 16,16 B:13,12 C:16,12 D:11,16
答案:c
17:袋中有红球,黄球,白球各一个,每次任意取一个放回,如此连续3次,则下列事件中几率是8/9的是:
A: 颜色全相同 B:颜色全不相同C:颜色全相同D:颜色无红色
答案:a的几率是1/3*1/3*1/3 b的几率是1/3*1/3*1/3 ...转载的这我的题目有问题,8/9几率的提法应该是 颜色不全为xx颜色的几率。
18:一个洗牌程序的功能是将n张牌的顺序打乱,如下关于洗牌程序的功能定义说法最恰当的是:
A: 每张牌出如今n个位置上的几率相等
B: 每张牌出如今n个位置上的几率独立
C: 任何连续位置上的两张牌的内容独立
D: n张牌的任何两个不一样排列出现的几率相等
答案:我的见解是a
19:用两种颜色去染排成一个圈的6个棋子,若是经过旋转获得则只算一种,一共有多少种染色:
A: 10 B:11 C:14: D:15
答案:15
20:递归式的先序遍历一个n节点,深度为d的二叉树,则须要栈空间的大小为:
A: O(n) B:O(d) C:O(logn) D:(nlogn)
答案:c,有左孩子就压栈
第二部分:多选
21:两个线程运行在双核机器上,每一个线程主线程以下,线程1:x=1;r1=y;线程2:y=1;r2=x;
X和y是全局变量,初始为0。如下哪个是r1和r2的可能值:
A: r1=1,r2=1
B: r1=1,r2=0
C:r1=0,r2=0
D:r1=0,r2=1
个人答案:bd
22.关于Linux系统的负载,如下表述正确的是:
A: 经过就绪和运行的进程数来反映
B: 经过TOP命令查看
C: 经过uptime查看
D: Load:2.5,1.3,1.1表示系统的负载压力在逐渐变小
不会
23:关于排序算法的如下说法,错误的是:
A: 快速排序的平均时间复杂度O(nlogn),最坏O(N^2)
B:堆排序平均时间复杂度O(nlogn),最坏O(nlogn)
C:冒泡排序平均时间复杂度O(n^2),最坏O(n^2)
D:归并排序的平均时间复杂度O(nlogn),最坏O(n^2)
答案: d,这道题貌似只有一个答案啊,要么就是转载的那我的抄错了
24:假设函数rand_k会随机返回一个【1,k】之间的随机数(k>=2),而且每一个证书出现的几率相等。目前有rand_7,经过调用rand_7()和四则运算符,并适当增长逻辑判断和循环控制逻辑,下列函数能够实现的有:
A:rand_3 B:rand_21 C:rand_23 D:rand_49
3.(6分)两个较长的单向链表a和b,为了找出及诶单noed知足node in a
而且node in b。请设计空间使用尽可能小的算法(用c/c++,java 或者伪代码)
答案网上找的
咱们定义节点的距离为节点到链表开始所通过的节点数。若是两个链表长度相同,则相交节点其在两个链表上的距离必定相等。对于长度不一样的两个链表,咱们能够采用对齐的方式,使其向长度短的链表对齐。这样就能够应用上面的思路。具体算法以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
struct
node
{
int
v;
node *next;
};
/*
返回链表的长度
链表为空 返回0
*/
size_t
listLen(node * p)
{
size_t
num = 0;
while
(p!=NULL)
{
num++;
p = p->next;
}
return
num;
}
// 若是找到了 则返回指针 指向公共节点
// 若是不存在 则返回空指针
node * findFirstCommenNode(node * pheada, node * pheadb)
{
size_t
lenA = listLen(pheada);
size_t
lenB = listLen(pheadb);
node * plistA = pheada;
node * plistB = pheadb;
//调整长度
//plistA 指向较长的一个
if
(lenA < lenB)
{
plistB = pheada;
plistA = pheadb;
size_t
t = lenA;
lenA = lenB;
lenB = t;
}
while
(lenA > lenB)
{
plistA = plistA->next;
--lenA;
}
//同样长了
//寻找公共节点
while
(plistA!=NULL && plistA != plistB)
{
plistA = plistA->next;
plistB = plistB->next;
}
return
plistA;
}
|
算法的空间复杂度O(1),时间复杂度O(m+n),效果不错吧。
二、当存储数据量超出单节点数据管理能力的时候,能够采用的办法有数据库
sharding的解决方案,也就是按照必定的规律把数据分散存储在多个
数据管理节点N中(节点编号为0,1,2,,,,N-1)。
假设存储的数据时a 请完成为数据a计算存储节点的程序。
1
2
3
4
5
6
7
8
9
|
#define N 5
int
hash(
int
element){
return
element*2654435761;
}
int
shardingIndex(
int
a){
int
p = hash(a);
_________________________;
//这里是空格
return
p;
}
|
求高手指点
三、(8分)宿舍内5个同窗一块儿玩对战游戏。每场比赛有一些人做为红方,另外一些人做为蓝方。请问至少须要多少场比赛,才能使任意两我的之间有一场红方对蓝方和蓝方对红方的比赛?
四、一个有10亿条记录的文本文件,已按照关键字排好序存储。请设计算法,能够快速的从文件中查找指字关键字的记录