二:演算法題
你現在有乙個檔案,檔案中順序存有
n個記錄,
r1,r2,...,rn,
這些記錄不是有序的,但是你知道乙個整數
m,這些記錄滿足
r1以及
rm+1 1,
設計乙個演算法或編寫乙個程式,將檔案中的記錄排序為
r1'演算法或程式讀取檔案的次數為
o(n),
不限記憶體使用。
2,設計乙個演算法或編寫乙個程式,將檔案中的記錄排序為
r1'演算法或程式讀寫檔案的次數為
o(n)
,空間複雜度為
o(1),(
亦即,你使用的記憶體大小和
m,n均無關。)
answer1:
第乙個問題,因為記憶體不限,檔案可能很大,記憶體無法一次容納,所以分批將檔案中的記錄多次讀入記憶體,然後進行外部排序。
三:系統設計題
網路上所有的鏈結都可以用以下的三元素進行描述:
from_url
(鏈結所在頁面的
url)
to_url
(鏈結所指向的
url)
anchor
(鏈結在頁面上所顯示的內容)
現在假設所有的網頁鏈結資訊(
from_url / to_url /anchor
)按from_url
為軸都儲存在m個(
m:1k以內)巨型資料庫中:1,
鏈結儲存形式:
from_urlto_urlanchor;2
,乙個from_url
的所有的
to_url
都儲存在同乙個資料庫中;3,
假設每個資料庫儲存的資料量相同4,
要求設計乙個獲取所有鏈結分發程式,將這些資料均勻分發到
n個遠端資料庫中(
n:100
以內)要求做到:1所有
to_url
相同的鏈結需要分到同乙個遠端資料庫,2所有
to_url
的站點相同的需要分發到同乙個遠端資料庫,
3每個遠端資料庫獲取的鏈結總數要盡量均勻,
4每台資料庫完成時間盡量保持一致
5,獲取網頁的速度盡量快(從資料庫中)
說明:對於
,其中***.baidu.com
屬於站點資訊。
answer
:
對題目看得有點暈,是不是對於
fromurl
作雜湊,然後計算出存在哪個資料庫上?然後再對
tourl
作雜湊,計算出存在哪個資料庫上?當然也可以自己設計乙個演算法,將計算結果控制在
1-m,之間(但如果以後資料庫再加就不好辦了)
由於雜湊演算法很散,所以基本上每台伺服器上的資料量相同。(自己設計的演算法就不容易保證均勻)
不過沒看明白為什麼發到
n個遠端資料庫,是做備份麼?還是每個資料發的都不同?如果是備份,就根據雜湊後的數值,算出
1組伺服器(
n個)。
百度筆試題
一 選擇題 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 ...
百度筆試題
1 完成函式 size t foo unsigned int a1,size t al1,unsigned int a2,size t al2 其中a1和a2都為無符號陣列,al1和al2為陣列的長度,陣列的長度為偶數。無符號陣列由一對數字區間組成。如下例 a1 為 0,1,3,6,10,20 a2...