1. 程式人生 > >百度2011.10.16校園招聘會筆試題

百度2011.10.16校園招聘會筆試題

一、演算法設計
1、設rand(s,t)返回[s,t]之間的隨機小數,利用該函式在一個半徑為R的圓內找隨機n個點,並給出時間複雜度分析。

2、為分析使用者行為,系統常需儲存使用者的一些query,但因query非常多,故系統不能全存,設系統每天只存m個query,現設計一個演算法,對使用者請求的query進行隨機選擇m個,請給一個方案,使得每個query被抽中的概率相等,並分析之,注意:不到最後一刻,並不知使用者的總請求量。

3、C++ STL中vector的相關問題:
    (1)、呼叫push_back時,其內部的記憶體分配是如何進行的?
    (2)、呼叫clear時,內部是如何具體實現的?若想將其記憶體釋放,該如何操作?

二、系統設計
正常使用者端每分鐘最多發一個請求至服務端,服務端需做一個異常客戶端行為的過濾系統,設伺服器在某一刻收到客戶端A的一個請求,則1分鐘內的客戶端任何其它請求都需要被過濾,現知每一客戶端都有一個IPv6地址可作為其ID,客戶端個數太多,以至於無法全部放到單臺伺服器的記憶體hash表中,現需簡單設計一個系統,使用支援高效的過濾,可使用多臺機器,但要求使用的機器越少越好,請將關鍵的設計和思想用圖表和程式碼表現出來。

三、求一個全排列函式:
如p([1,2,3])輸出:
[123]、[132]、[213]、[231]、[321]、[323]
 求一個組合函式
如p([1,2,3])輸出:
[1]、[2]、[3]、[1,2]、[2,3]、[1,3]、[1,2,3]

這兩問可以用虛擬碼。