參考:http://blog.csdn.net/doc_sgl/article/details/8888904linux
--------------------------------------------------------------------------------------------------------------c++
答題說明:算法
1.答題時間90分鐘,請注意把握時間;編程
2.試題分爲四個部分:單項選擇題(10題,20分)、不定向選擇題(4題,20分)、填空問答(5題,40分)、綜合體(1題,20分);小程序
--------------------------------------------------------------------------------------------------------------數組
1、單項選擇題併發
1.下列說法錯誤的是:函數
A.SATA硬盤的速度大約爲500Mbps/sspa
B.讀取18XDVD光盤數據的速度爲1Gbps操作系統
C.千兆以太網的數據讀取速度爲1Gpbs
D.讀取DDR3內存數據的速度爲100Gbps
分析:A和B相比,怎麼光盤的速度比硬盤還快?B必錯無疑啊。千兆以太網的速度是1000Mbps,也能夠寫成1Gbps。DDR3-1600的極限傳輸速度是12.8GBp/s
2.()不能用於Linux中的進程通訊
A.共享內存
B.命名管道
C.信號量
D.臨界區
分析:Linux中的進程通訊方式有:管道,消息隊列,共享內存,套接字Socket
3.設在內存中有P1,P2,P3三道程序,並按照P1,P2,P3的優先級次序運行,其中內部計算和IO操做時間由下表給出(CPU計算和IO資源都只能同時由一個程序佔用):
P1:計算60ms---》IO 80ms---》計算20ms
P2:計算120ms---》IO 40ms---》計算40ms
P3:計算40ms---》IO 80ms---》計算40ms
完成三道程序比單道運行節省的時間是()
A.80ms
B.120ms
C.160ms
D.200ms
【轉】http://flyown34317.blog.163.com/blog/static/197073016201391031127392/
這道題考察操做系統中有關進程調度,做業調度的有關內容。作題時,畫圖解比較清晰易懂。因爲每一個進程都有三個階段:計算、IO、計算,咱們將這三次計算命名爲A、B、C。同時須要注意,題目中沒有明說,咱們假設P1、P2、P3是不可搶佔的。
60ms 80ms 40ms 20ms 20ms 20ms 40ms 40ms 40ms
P1(A)--> P1(B) --> P1(C)
P2(A) P2(A) --> P2(B) P2(B) --> P2(C)
P3(A) P3(A) --> P3(B) P3(B) --> P3(C)
最終耗時:60+80+40+20+20+20+40+40+40=360ms;
全串行執行耗時:160+200+160=520ms;
節約了520ms-360ms=160ms。
4.兩個等價線程併發的執行下列程序,a爲全局變量,初始爲0,假設printf、++、--操做都是原子性的,則輸出不多是()
void foo() {
A.01
B.10
C.12
D.22
舉一個例子
【轉】http://flyown34317.blog.163.com/blog/static/197073016201391031127392/
當時我寫的答案是D,而網上其餘版本,好多都講的是C。後來本身思考了一下,以爲A多是正確的,下面將一下個人思路。
對於B答案,P1執行程序,輸出1,P2執行程序,輸出0;
對於C答案,初始爲0,P1執行完判斷語句,決定要執行a++,中斷,P2進行判斷,此時a仍然等於0,執行判斷語句,並執行輸出,獲得1,P1而後繼續執行,此時它該執行a++,這時a=1,執行並輸出,結果爲2;
對於D答案,初始爲0,P1執行完判斷語句,決定要執行a++,中斷,P2進行判斷,此時a仍然等於0,執行a++,獲得a=1,中斷,P1繼續執行a++,a=2,P1輸出,獲得2,P1結束,P2繼續執行輸出語句,獲得2;
對於A答案,我如今再三思考,絞盡腦汁也想不起來當初爲何會判斷它不是答案。o(╯□╰)o。
5.給定fun函數以下,那麼fun(10)的輸出結果是()
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)
KMP複雜度是M+N
8.判斷一包含n個整數a[]中是否存在i、j、k知足a[i] + a[j] = a[k]的時間複雜度最小值是()
A.O(n^2) B. O(n^2*logn) C. O(n^3) D. O(nlogn)
解析:O(N2)用hash的話,三維遍歷能夠輕鬆編程二維遍歷,可是總感受是否是應該有nlgn的算法。
9.下列序排算法中最壞狀況下的時間複雜度不是n(n-1)/2的是
A.快速排序 B.冒泡排序 C.直接插入排序 D.堆排序
10.發射三次炮彈,射中目標的機率是0.95,請問發射一次能擊中目標的機率是多少?
A0.63
B0.50
C.0.32
D.0.86
0.95 = 1-(1-x)^3;把abcd四個選項代入
2、不定向選擇題
1.如下哪些進程狀態轉換是正確的()
A.就緒到運行 B.運行到就緒 C.運行到阻塞 D.阻塞到運行 E.阻塞到就緒
這題考察linux系統的進程調度問題,A、B、C、E都是能夠的。D中,阻塞到運行,中間須要經歷就緒狀態。
圖片來源:http://ibicdi.blog.163.com/blog/static/19449410820124276286388/
2.一個棧的入棧數列爲:一、二、三、四、五、6;下列哪一個是可能的出棧順序。
這種題是常考的,要熟悉stack的後進先出規則。
3.下列哪些代碼可使得a和b交換數值。(選項不記得)
用兩個數代入看每個選項的代碼可否交換其數值,選出答案。若是不放心,可再選一組進行驗證。
4.A和B晚上無聊就開始數星星。每次只能數K個(20<=k<=30)A和B輪流數。最後誰把星星數完誰就獲勝,那麼當星星數量爲多少時候A必勝?
(1)對於星星總數爲n,能夠選擇某個k值20<=k<=30,使得(n-k)mod50==0時,A有必勝的策略,首先,A先取,使剩餘的星星爲50的倍數。而後數星星的順序爲B、A、B、A……。B數a個星星,則A就數50-a個,使剩餘星星始終爲50的倍數,最後,必定是A數最後的星星。A必勝。如2825,讀者可自行推導。
(2)若n mod 50==0,則A必敗。B所採用的策略同(1)相似,如2500。
(3)對於星星總數爲n,能夠選擇某個k值0<k<20,使得(n-k)mod50==0時,A必勝。A先取20,則此時30<(n-20) mod 50<50。B數a個星星,則a數50-a個星星。在最後一輪中,剩餘星星的個數在(30,50)區間,B取任意值都不能取完,A最後取,獲勝。如A選項的,2013。A先取20個,剩餘1993個,以後每一回合,A、B共取50個,最後一輪剩餘43個,B沒法取完,B取後剩餘數量在[13,23]之間,A必定獲勝。(假設星星數量不足20個時,能夠一會兒取完。)
(4)對於星星總數爲n,能夠選擇某個k值30<k<50,使得(n-k)mod50==0時,A必敗,由於A每取a個,B就取50-a個,最後剩餘的個數在(30,50)之間,A不管怎麼取,都沒法阻止B最後取完。所以A必敗。如B選項中的2888。
3、填空問答題
1.給你一個整型數組A[N],完成一個小程序代碼(20行以內),使得A[N]逆向,即原數組爲1,2,3,4,逆向以後爲4,3,2,1
2.自選調度方面的問題,題目很長,就是給你三個線程,分別採用先來先分配的策略和最短執行之間的調度策略,而後計算每一個線程從提交到執行完成的時間。題目實在太長,還有幾個表格。考察的是操做系統裏面做業調度算法先進先出和最短做業優先。
3.有個苦逼的上班族,他天天忘記定鬧鐘的機率爲0.2,上班堵車的機率爲0.5,若是他既沒定鬧鐘上班又堵車那他遲到的機率爲1.0,若是他定了鬧鐘可是上班堵車那他遲到的機率爲0.8,若是他沒定鬧鐘可是上班不堵車他遲到的機率爲0.9,若是他既定了鬧鐘上班又不堵車那他遲到的機率爲0.0,那麼求出他在60天裏上班遲到的指望。
遲到的天數=(0.2*0.5*1+0.8*0.5*0.8+0.2*0.5*0.9)*60=30.6
答案:30.6天
4.戰報交流:戰場上不一樣的位置有N個戰士(n>4),每一個戰士知道當前的一些戰況,如今須要這n個戰士經過通話交流,互相傳達本身知道的戰況信息,每次通話,可讓通話的雙方知道對方的全部情報,設計算法,使用最少的通話次數,是的戰場上的n個士兵知道全部的戰況信息,不須要寫程序代碼,得出最少的通話次數。
網上好像說是O(2n-4)
我只能想到O(2n-3) 1和全部人通話,彙總情報,再通告給全部人,其中有一個特例就是最後一我的只須要通知一次,由於到他那裏狀況已經統計完了。因此是2n-3
5.有N我的,其中一個明星和n-1個羣衆,羣衆都認識明星,明星不認識任何羣衆,羣衆和羣衆之間的認識關係不知道,如今若是你是機器人R2T2,你每次問一我的是否定識另一我的的代價爲O(1),試設計一種算法找出明星,並給出時間複雜度(沒有複雜度不得分)。
答案:
遍歷 1~n 這n我的;
首先取出 1號 和 2號,
若是 1 認識 2, 那麼把 1 去掉;
若是1不認識2,就能夠把2去掉了。
每次比較都去掉一個,如此循環;n-1次以後只有一我的了
時間複雜度: O(n-1)
4、綜合題
有一個淘寶商戶,在某城市有n個倉庫,每一個倉庫的儲貨量不一樣,如今要經過貨物運輸,將每次倉庫的儲貨量變成一致的,n個倉庫之間的運輸線路圍城一個圈,即1->2->3->4->...->n->1->...,貨物只能經過鏈接的倉庫運輸,設計最小的運送成本(運貨量*路程)達到淘寶商戶的要求,並寫出代碼。
解答:這個題目相似的題目有:
參考連接:http://blog.csdn.net/LYHVOYAGE/article/details/19838063