百度的一期筆試題

2021-06-07 12:48:28 字數 2209 閱讀 3918

題目和解答**百科中的一篇文章,但是具體答案以及給分標準是否權威,不得而知,答案和下面我的分析僅供參考,出現任何後果金子概不負責哦。

第一題簡答(30分)

1.請寫出c++ stl中vector的相關問題。(20分)

(1)在呼叫成員函式push_back時,其內部的記憶體分配是如何進行的。(5分)

(2)呼叫成員函式clear時,內部是如何具體實現的,如果想將其記憶體釋放,該如何操作。(15分)

答題要點:

(1)當vector發現預先分配的記憶體不夠用時,會申請乙個大小為當前記憶體大小兩倍的位址,並把資料拷貝到新位址中。

金子分析:當呼叫push-back函式時,先檢視配用記憶體是否足夠,如果不夠的話,重新分配一段連續的記憶體,記憶體大小為原來分配的容量的2倍,然後將原來已經儲存的資料複製到新位址,緊接著將要push的資料添在複製資料的後面,最後將原始的分配的記憶體全部釋放。由於push_back會導致位址空間的改變,所以迭代器指向的內容有改變,這點要注意啦。

第二題 演算法與程式設計(40分)

1.假設我們有rand(s, t)函式,可以返回[s,t]之間的隨機小數。請問如何利用該函式在乙個半徑為r的圓內隨機n個點,並給出相應的時間複雜度分析。(15分)

參***:

假設乙個邊長為r的正方形把圓包住,那麼可以呼叫rand(s, t)函式兩次得到正方形內的隨機點(x, y)。留下在圓內的隨機點即可,這樣可以保證隨即概率相等。時間複雜度可以按照圓和正方形的面積比得到:

o(n*(πr^2)/r^2 )=o(n* π)

給分標準:

說出了錯誤的隨機方法可適當給分,給出正確方法給10分,分析了時間複雜度和概率的再給5分。

2.為了分析使用者的行為,系統往往需要儲存使用者的一些query,但是因為query非常多,所以系統不能夠存下每一條。假設我們的系統每天只能夠儲存m個query,現在需要設計乙個演算法,對使用者時時請求的query進行隨機選擇m個,請給出乙個方案,使得每乙個query被抽中的概率盡量相等,也請附加相應的分析。需要注意的是,不到最後一刻你並不知道使用者的總請求量是多少。(25分)

參***:

假設每天總共有n個query, 那麼目標是使得每乙個query被抽中的概率為m/n。

系統設計如下:

1.開乙個大小為m的陣列k,前m個query分別依次放入陣列k[0..m-1]中。

2.假設當前的query為第p個(p>m),隨機乙個[0-p)的整數i,如果i

金子分析:這完全就是《程式設計珠璣》中的一道題啊,從n個數中抽取m個數,保證每個數被抽中的概率相等,我會寫一篇部落格來總結幾種方法的。

給分標準:

說出方法即可給分,錯誤的方法給0-5分,正確的方法給10分。

如果有相應的概率分析也加分,方法錯誤分析也錯誤給5分,方法錯誤分析正確給10分,方法正確分析也正確給15分。

第三題 系統設計題(30分)

現在有乙個「伺服器-客戶端」的實際系統。正常的客戶端每1分鐘最多傳送一條請求到伺服器,伺服器需要做乙個異常客戶端行為的過濾系統。假設伺服器在某乙個時刻收到了客戶端a的一條請求,那麼1分鐘內的客戶端的任何其他請求都需要被過濾。現在知道每乙個客戶端都有乙個ipv6的位址可以作為其id。客戶端個數太多,以至於無法全部放到單台伺服器的記憶體hash表中。現在需要簡單設計一套系統,使得支援高效的過濾,可以使用多台機器,但要求使用的機器越少越好。請把關鍵的設計和思想用圖表和**的方式表現出來。

參***:

雖然客戶端的id太多,無法放入到記憶體中,但是1分鐘內請求伺服器的id卻不會太多。可以根據這個條件進行設計。

申請佇列q, hash表h。h記錄了每乙個請求的到達時間。伺服器收到請求之後:

while (隊首的id請求到達時間超過1分鐘)

出隊,並且清空hash表h中的相關記錄

if 客戶端id存在於h中then

過濾此請求。

else

將此id放入q隊尾

記錄時間到h中,即h[id]=now()。

給分標準:

簡單分布式設計可以按照設計情況適當給5-15分。

建立檔案索引的方式也給5-15分。

考慮冗餘機制給5分。

此題可以採用單台機器完成,能發現此特點給10分,給出具體方案再給20分。具體方案可參考**風格等等方面酌情給分。

以上為參***,其他符合邏輯的方案可酌情給分

**********************************  測 驗 結 束 **********************************

百度筆試題

一 選擇題 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...