如果有哪位大侠对这些题目有兴趣,欢迎评论。本人希望多多交流,共同进步!
一,单项选择
1. 以下描述错误的是:
A、读取SATA硬盘数据的速度约为500Mbps.
B、读取18XDVD光盘数据的速度约为1Gbps.
C、千兆以太网的数据读取速度约为1Gbps.
D、读取DDR3内存数据的速度约为100Gbps.
这一题没找到答案。请大侠指点!
2.不能用于Linux中进程间通信的有:
A共享内存 B命名管道 C信号量 D临界区
解析:用于linux中进程间通信机制有:
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
# 有名管道 (namedpipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
# 信号量( semophore) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
# 消息队列( messagequeue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
# 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
# 共享内存( sharedmemory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
# 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同进程间的进程通信
3. 内存中有P1,P2,P3三个程序,按照P1,P2,P3优先级运行,内部计算机CPU和I/O操作时间如下( CPU计算和I/O资源同时都仅有一个程序占用),则完成三道程序比单独完成程序节省的时间为:
A. 80ms B. 120ms C. 160ms D. 200ms
4. 两等价线程并发执行下列程序,设a为全局变量,初始值为0。假设printf、“++”和“--”操作都是原子的,则输出结果不可能是:
void foo(){
if (a<=0) {a++;}
else {a--;}
printf(“%d”,a);
}
A、01 B、10 C、12 D、22
5. 给定fun函数如下,那么fun(10)的输出结果是:
Int fun(int x)
{ return ( x == 1 ) ? 1 : (x + fun( x - 1)); }
A、0 B、10 C、55 D、3628800
6、在C++中,如果有一个整型变量频繁使用,最好将它定义为:
A、auto B、extern C、static D、register
7、长为n的字符串匹配长度为m子串的算法复杂度:
A 、O(n) B、O(m+n) C、O(n+logm) D、O(m+logn)
8. 判断一包含n个整数的数组a[]中是否存在i、j、k满足a[i]+a[j]=a[k]的时间复杂度最小值为:
A、O(n3) B、O(n2log n) C、O(n2) D、O(nlog n)
9、下列排序算法中,最坏情况下时间复杂度不是n(n-1)/2的是:
A、快速排序 B、冒泡排序 C、直接插入排序 D、堆排序
解析:A,最好情况:O(nlog n), 最坏情况:O(n2)
B,最好情况:O(n),最坏情况:O(n2)
C,最好情况:O(n),最坏情况:O(n2)
D,最好情况:O(nlog n),最坏情况:O(nlog n)
10. 假设炮弹发射3次,射中目标区域的概率是0.95.那么,发射1次射中目标区域的概率是:
A,0.63 B,0.50 C,0.32 D,0.86
二,不定项选择题
11. 在进程状态转换时,下列转换可能发生的有:
A,就绪态->运行态 B,运行态->就绪态
C,运行态->阻塞态 C,阻塞态->运行态
12. 设输入序列为1,2,3,4,5,6,经过入栈的操作后,下列出栈顺序中可能出现的是:
A,1,2,3,4,6,5 B,1,5,4,6,2,3 C,3,1,2,5,4,6 D,3,2,5,6,4,1
13. 下列代码中,可以用来交换两个变量值的有:
A、b=a+b; a=a+b; b=b-a; B、a=a|b; b=b+a;a=b-a;
C、a=a-b; b=a+b; a=b-a; D、a=a+b; b=a-b;a=b|a;
14. 夜深人静,A和B两个同学闲来无聊,开始数星星。每人每次只能数k颗星星(20<=k<=30),数完最后一批星星的人获胜。A同学先数,判断当星星总数中为下列【】选项时,A必胜。
A、2013 B、2888 C、3935 D、4026 E、25051
三、填空与问答
15、已知一个整数数组A和数组长度为n, 设计一个简洁的程序(<20行代码)完成数组元素在原地倒序,比如输入时A为{1,2,3,4},则程序结束时A为{4,3,2,1}。要求:使用加减乘除赋值和逻辑控制语句,不得调用类库函数。
答:
void reverse(int * A, int n)
{
if(A!=NULL&&n>=0)
{
int i=0;
for(; i<n/2; i++)
{
int temp;
temp = A[i];
A[i] = A[n – 1 - i];
A[n-1-i] = A[i];
}
return;
}
}
16. 有三道作业,他们提交时间和执行时间如下表(单位:分钟)。作业一旦执行便不会终止直到运行完成。
作业号 |
提交时间 |
执行时间 |
1 |
85 |
20 |
2 |
92 |
16 |
3 |
94 |
5 |
试计算在单道程序环境下,采用先来先服务调度算法和最短作业优先调度算法时的平均周转时间,以分钟为单位。周转时间=完成时间点-提交时间点。
答:
先来先服务:
作业号 |
提交时间点 |
执行时间 |
开始时间点 |
完成时间点 |
周转时间 |
1 |
85 |
20 |
|
|
|
2 |
92 |
16 |
|
|
|
3 |
94 |
5 |
|
|
|
平均周转时间:
最短作业优先:
作业号 |
提交时间点 |
执行时间 |
开始时间点 |
完成时间点 |
周转时间 |
1 |
85 |
20 |
85 |
105 |
20 |
2 |
92 |
16 |
110 |
126 |
34 |
3 |
94 |
5 |
105 |
110 |
16 |
平均周转时间:20+34+16/3=23.3
17. 某工程师总结了一下近半年上班的苦逼经历,得出了一些苦逼的数据。他忘记设闹铃的概率是0.2;上班路上堵车的概率是0.5;他还记录了下面的一个表。
事件 |
迟到的概率 |
忘记设闹铃,堵车 |
1.0 |
忘记设闹铃,没堵车 |
0.9 |
设了闹铃,堵车 |
0.8 |
设了闹铃,没堵车 |
0.0 |
请计算他60个工作日内迟到天数的期望。
18、在某战场有n个战士,n>4,每个战士都知道一些不同的战报。他们期望通过一些双方交流(如:打电话)来共享战报,达到每个人都知道所有战报的效果。每次交流都能使双方得知对方知道的所有战报。请设计一个高效的算法来达到这个目标,并求出双方交流次数和最小值(不用写代码)。
19、房间里有N-1为群众和1位明星。每位群众都认识该明星,群众之间的认识状况未知, 而该明星却不认识任何一位群众。假设你是机器人,具有问一个人是否认识另一个人的功能,每次耗费时间O(1)。请设计一个最优算法在这N个人中找到该明星,并分析复杂度。(不用写代码,不分析复杂度不得分)
四、综合题
淘宝网某金冠卖家,在各城市共建有n个仓库,形成如图所示的一个环形。开始时,每个仓库的存货量不等。因为供销的需要,卖家想调整各仓库,使所有仓库的存货量都一样。请帮卖家设计一种算法,用最少的费用(即最小搬运量)到达他的目的。搬运货物时,只能在相邻的仓库间搬运。
(请用文字描述思路并编写程序)