百度筆試題5.2

二:算法題

你現在有一個文件,文件中順序存有N個記錄,R1,R2,...,RN,這些記錄不是有序的,但是你知道一個整數M,這些記錄滿足R1<R2<...<RM以及RM+1<RM+2<...RN.

1,設計一個算法或編寫一個程序,將文件中的記錄排序爲R1'<R2',<…<,RN',算法或程序讀取文件的次數爲O(N),不限內存使用。

2,設計一個算法或編寫一個程序,將文件中的記錄排序爲R1'<R2'<...<RN',算法或程序讀寫文件的次數爲O(N),空間複雜度爲O(1)(亦即,你使用的內存大小和M,N均無關。)

 

Answer1:

第一個問題,因爲內存不限,文件可能很大,內存無法一次容納,所以分批將文件中的記錄多次讀入內存,然後進行外部排序。

 

 

 

 

 

三:系統設計題

網絡上所有的鏈接都可以用以下的三元素進行描述:

From_url(鏈接所在頁面的URL

to_url(鏈接所指向的URL

anchor(鏈接在頁面上所顯示的內容)

現在假設所有的網頁鏈接信息(from_url / to_url /anchor)按from_url爲軸都存儲在M個(M1k以內)巨型數據庫中:

1  鏈接存儲形式:from_url  to_url  anchor

2  一個from_url的所有的to_url都存儲在同一個數據庫中;

3  假設每個數據庫存儲的數據量相同

4  要求設計一個獲取所有鏈接分發程序,將這些數據均勻分發到N個遠程數據庫中(N:100以內)要求做到:1所有to_url相同的鏈接需要分到同一個遠程數據庫,2所有to_url的站點相同的需要分發到同一個遠程數據庫,3每個遠程數據庫獲取的鏈接總數要儘量均勻,4每臺數據庫完成時間儘量保持一致5,獲取網頁的速度儘量快(從數據庫中)

說明:對於urlhttp://mp3.baidu.com/m?tn=baidump3,其中mp3.baidu.com屬於站點信息。

Answer

對題目看得有點暈,是不是對於fromurl作散列,然後計算出存在哪個數據庫上?然後再對tourl作散列,計算出存在哪個數據庫上?當然也可以自己設計一個算法,將計算結果控制在1-M,之間(但如果以後數據庫再加就不好辦了)

由於散列算法很散,所以基本上每臺服務器上的數據量相同。(自己設計的算法就不容易保證均勻)


不過沒看明白爲什麼發到N個遠程數據庫,是做備份麼?還是每個數據發的都不同?如果是備份,就根據散列後的數值,算出1組服務器(N個)。

發佈了35 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章