答題說明:
1.答題時間90分鐘,請注意把握時間;
2.試題分為四個部分:單項選擇題(10題,20分)、不定向選擇題(4題,20分)、填空問答(5題,40分)、綜合體(1題,20分);
3.其他一些亂七八糟的考試說明。
一、單項選擇題
1.下列說法不正確的是:(D)
A.SATA硬盤的速度速度大約為500Mbps/s
B.讀取18XDVD光盤數(shù)據(jù)的速度為1Gbps
C.前兆以太網(wǎng)的數(shù)據(jù)讀取速度為1Gpbs
D.讀取DDR3內(nèi)存數(shù)據(jù)的速度為100Gbps
解析:
DDR3內(nèi)存讀取速度約為1.6Gbps
2.(D)不能用于Linux中的進程通信
A.共享內(nèi)存
B.命名管道
C.信號量
D.臨界區(qū)
3.設(shè)在內(nèi)存中有P1,P2,P3三道程序,并按照P1,P2,P3的優(yōu)先級次序運行,其中內(nèi)部計算和IO操作時間由下表給出(CPU計算和IO資源都只能同時由一個程序占用):
P1:計算60ms---》IO 80ms---》計算20ms
P2:計算120ms---》IO 40ms---》計算40ms
P3:計算40ms---》IO 80ms---》計算40ms
完成三道程序比單道運行節(jié)省的時間是(C)
A.80ms
B.120ms
C.160ms
D.200ms
4.兩個等價線程并發(fā)的執(zhí)行下列程序,a為全局變量,初始為0,假設(shè)printf、++、--操作都是原子性的,則輸出不肯哪個是(A)
void foo() {
if(a <= 0) {
a++;
}
else {
a--;
}
printf("%d", a);
}
A.01
B.10
C.12
D.22
5.給定fun函數(shù)如下,那么fun(10)的輸出結(jié)果是(C)
int fun(int x) {
return (x==1) ? 1 : (x + fun(x-1));
}
A.0
B.10
C.55
D.3628800
6.在c++程序中,如果一個整型變量頻繁使用,最好將他定義為(D)
A.auto
B.extern
C.static
D.register
7.長為n的字符串中匹配長度為m的子串的復(fù)雜度為(B)
A.O(N)
B.O(M+N)
C.O(N+LOGM)
D.O(M+LOGN)
解析: KMP算法
8.判斷一包含n個整數(shù)a[]中是否存在i、j、k滿足a[i] + a[j] = a[k]的時間復(fù)雜度為()
A. O(n3)
B.O(n2lgn)
C.O(n2)
D.O(nlgn)
解析:O(N2)的算法能想一大堆,雖然最終我選的C,比如說用hash的話,三維遍歷可以輕松編程二維遍歷,但是總感覺是不是應(yīng)該有nlgn的算法。
9.三次射擊能中一次的概率是0.95,請問一次射擊能中的概率是多少?(A)
A.0.63
B.0.5
C.**
D.0.85
10.下列序排算法中最壞復(fù)雜度不是n(n-1)/2的是_(D)
A.快速序排 B.冒泡序排 C.直接插入序排 D.堆序排
二、不定向選擇題
1.阻塞、就緒、運行的三態(tài)轉(zhuǎn)換
2.一個棧的入棧數(shù)列為:1、2、3、4、5、6;下列哪個是可能的出棧順序。(選項不記得)
3.下列哪些代碼可以使得a和b交換數(shù)值。(選項不記得)
4.A和B晚上無聊就開始數(shù)星星。每次只能數(shù)K個(20<=k<=30)A和B輪流數(shù)。最后誰把星星數(shù)完誰就獲勝,那么當(dāng)星星數(shù)量為多少時候A必勝?
A.2013 B.2886 C.4026 D......E.....(選項不記得)
三、填空問答題
1.給你一個整型數(shù)組A[N],完成一個小程序代碼(20行之內(nèi)),使得A[N]逆向,即原數(shù)組為1,2,3,4,逆向之后為4,3,2,1
void revense(int * a,int n) {
}
2.自選調(diào)度方面的問題,題目很長,就是給你三個線程,分別采用先來先分配的策略和最短執(zhí)行之間的調(diào)度策略,然后計算每個線程從提交到執(zhí)行完成的時間。題目實在太長,還有幾個表格。考察的是操作系統(tǒng)里面作業(yè)調(diào)度算法先進先出和最短作業(yè)優(yōu)先。
3.有個苦逼的上班族,他每天忘記定鬧鐘的概率為0.2,上班堵車的概率為0.5,如果他既沒定鬧鐘上班又堵車那他遲到的概率為1.0,如果他定了鬧鐘但是上班堵車那他遲到的概率為0.9,如果他沒定鬧鐘但是上班不堵車他遲到的概率為0.8,如果他既定了鬧鐘上班又不堵車那他遲到的概率為0.0,那么求出他在60天里上班遲到的期望。
4.戰(zhàn)報交流:戰(zhàn)場上不同的位置有N個戰(zhàn)士(n>4),每個戰(zhàn)士知道當(dāng)前的一些戰(zhàn)況,現(xiàn)在需要這n個戰(zhàn)士通過通話交流,互相傳達自己知道的戰(zhàn)況信息,每次通話,可以讓通話的雙方知道對方的所有情報,設(shè)計算法,使用最少的通話次數(shù),是的戰(zhàn)場上的n個士兵知道所有的戰(zhàn)況信息,不需要寫程序代碼,得出最少的通話次數(shù)。
5.有N個人,其中一個明星和n-1個群眾,群眾都認識明星,明星不認識任何群眾,群眾和群眾之間的認識關(guān)系不知道,現(xiàn)在如果你是機器人R2T2,你每次問一個人是否認識另外一個人的代價為O(1),試設(shè)計一種算法找出明星,并給出時間復(fù)雜度(沒有復(fù)雜度不得分)。
解答:這個問題等價于找未知序列數(shù)中的最小數(shù),我們將reg這個函數(shù)等價為以下過程:,如果i認識j,記作i大于等于j,同樣j不一定大于等于i,滿足要求,i不認識j記作i
int finds(S,N)
{
int flag=0;//用于判定是否有明星,即當(dāng)前最小數(shù)另外出現(xiàn)幾次
int temp=0;//存放最小數(shù)在S中的位置
for(i=1;i
{
if(!reg(S[i],S[temp])//如果temp標(biāo)號的數(shù)小于i標(biāo)號的數(shù)