百度2013筆試題

2021-06-19 23:24:28 字數 3774 閱讀 6549

一:簡答題(30)

1:資料庫以及執行緒發生死鎖的原理及必要條件,如何避免死鎖答:

產生死鎖的原因主要是:

(1) 因為系統資源不足。

(2) 程序執行推進的順序不合適。

(3) 資源分配不當等。

產生死鎖的四個必要條件

(1)互斥條件:乙個資源每次只能被乙個程序使用。

(2)請求與保持條件:乙個程序因請求資源而阻塞時,對已獲得的資源保持不放。

(3)不剝奪條件:程序已獲得的資源,在末使用完之前,不能強行剝奪。

(4)迴圈等待條件:若干程序之間形成一種頭尾相接的迴圈等待資源關係。

避免死鎖:

死鎖的預防是通過破壞產生條件來阻止死鎖的產生,但這種方法破壞了系統的並行性和併發性。

死鎖產生的前三個條件是死鎖產生的必要條件,也就是說要產生死鎖必須具備的條件,而不是存在這3個條件就一定產生死鎖,那麼只要在邏輯上迴避了第四個條件就可以避免死鎖。

避免死鎖採用的是允許前三個條件存在,但通過合理的資源分配演算法來確保永遠不會形成環形等待的封閉程序鏈,從而避免死鎖。該方法支援多個程序的並行執行,為了避免死鎖,系統動態的確定是否分配乙個資源給請求的程序。

預防死鎖:具體的做法是破壞產生死鎖的四個必要條件之一

2:物件導向的三個基本元素,五個基本原則答:

三個基本元素:

五個基本原則:

3:windows記憶體管理的機制以及優缺點

答:分頁儲存管理

基本思想:

使用者程式的位址空間被劃分成若干固定大小的區域,稱為「頁」,相應地,記憶體空間分成若干個物理塊,頁和塊的大小相等。可將使用者程式的任一頁放在記憶體的任一塊中,實現了離散分配。

分段儲存管理

基本思想:

將使用者程式位址空間分成若干個大小不等的段,每段可以定義一組相對完整的邏輯資訊。儲存分配時,以段為單位,段與段在記憶體中可以不相鄰接,也實現了離散分配。

段頁式儲存管理

基本思想:

分頁系統能有效地提高記憶體的利用率,而分段系統能反映程式的邏輯結構,便於段的共享與保護,將分頁與分段兩種儲存方式結合起來,就形成了段頁式儲存管理方式。

在段頁式儲存管理系統中,作業的位址空間首先被分成若干個邏輯分段,每段都有自己的段號,然後再將每段分成若干個大小相等的頁。對於主存空間也分成大小相等的頁,主存的分配以頁為單位。

段頁式系統中,作業的位址結構包含三部分的內容:段號

頁號頁內位移量

程式設計師按照分段系統的位址結構將位址分為段號與段內位移量,位址變換機構將段內位移量分解為頁號和頁內位移量。

為實現段頁式儲存管理,系統應為每個程序設定乙個段表,包括每段的段號,該段的頁表始址和頁表長度。每個段有自己的頁表,記錄段中的每一頁的頁號和存放在主存中的物理塊號。

二:程式設計題(40)

1:公司裡面有1001個員工,現在要在公司裡面找到最好的羽毛球選手,也就是第一名,每個人都必須參賽,問至少要比賽多少次才能夠找到最好的羽毛球員工。

答:兩兩比賽,分成500組剩下一人,類似於歸併排序的方式,比出冠軍後,讓冠軍之間再比,主要是要想想多餘的那乙個選手如何處理,必然要在第一次決出冠軍後加入比賽組。

2:現在有100個燈泡,每個燈泡都是關著的,第一趟把所有的燈泡燈泡開啟,第二趟把偶數字的燈泡制反(也就是開了的關掉,關了的開啟),第三趟讓第3,6,9....的燈泡制反.......第100趟讓第100個燈泡制反,問經過一百趟以後有多少燈泡亮著

答: 1.對於每盞燈,拉動的次數是奇數時,燈就是亮著的,拉動的次數是偶數時,燈就是關著的。

2.每盞燈拉動的次數與它的編號所含約數的個數有關,它的編號有幾個約數,這盞燈就被拉動幾次。

3.1——100這100個數中有哪幾個數,約數的個數是奇數。我們知道乙個數的約數都是成對出現的,只有完全平方數約數的個數才是奇數個。

所以這100盞燈中有10盞燈是亮著的。

它們的編號分別是: 1、4、9、16、25、36、49、64、81、100。

3:有20個陣列,每個陣列有500個元素,並且是有序排列好的,現在在這20*500個數中找出排名前500的數

答:top-k問題,用個數為k的最小堆來解決

4.字串左移,

void *pszstringrotate(char *pszstring, intncharsrotate),

比如abcdefg,移3

位變defgabc

,要求空間複雜度o(

1),時間複雜度o(

n)三:系統設計題(30)

現在有乙個手機,手機上的鍵盤上有這樣的對應關係,2對應"abc",3對應"def".....手機裡面有乙個userlist使用者列表,當我們輸入942的時候出來拼音的對應可能是「xia」,「zha」,「xi」,「yi」等,當我們輸入9264的時候出來是yang,可能是「樣」,「楊」,「往」等,現在我們輸入乙個字串數字,比如926等,要在**簿userlist中查詢出對應的使用者名稱和**號碼並返回結果。

[cpp]view plain

copy

print?

c++語言: **號碼對應的英語單詞(注意此題的非遞迴做法)  

#include 

#include 

#define n 4 //**號碼個數

using

namespace

std;  

char

c[10] = ;

//儲存各個數字所能代表的字元

intnumber[n] = ; 

//儲存**號碼

inttotal[10] = ; 

//各個陣列所能代表的字元總數

intanswer[n]; 

//數字目前所代表的字元在其所能代表的字符集中的位置,初始為0

void

search(

int*number, 

intn); 

//非遞迴的辦法

void

recursivesearch(

int*number, 

intcur, 

char

*ps, 

intn); 

//遞迴的辦法

[cpp]view plain

copy

print?

intmain()  

;  recursivesearch(number, 0, ps, n);  

return

0;  

}  void

search(

int*number, 

intn)  

else

}  if(k < 0)  

break

;  }  

}  /*遞迴的解法: number為儲存**號碼的陣列,pos為當前處理的數字在number中的下標,初始為0

*ps為一外部陣列,用於存放字母,n代表**號碼的長度(個數)

* 此遞迴的方法好理解,比上面非遞迴的辦法好寫易懂

* */

void

recursivesearch(

int*number, 

intpos, 

char

*ps, 

intn)  

}  

2013百度校招筆試題

一 簡答題 30 1 資料庫以及執行緒發生死鎖的原理及必要條件,如何避免死鎖 答 產生死鎖的原因主要是 1 因為系統資源不足。2 程序執行推進的順序不合適。3 資源分配不當等。產生死鎖的四個必要條件 1 互斥條件 乙個資源每次只能被乙個程序使用。2 請求與保持條件 乙個程序因請求資源而阻塞時,對已獲...

百度筆試題

一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...

百度筆試題

一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...