百度內推一面

2021-06-23 03:42:20 字數 866 閱讀 7801

一共問了兩題:

1)給定乙個資料集,記錄是(單詞,頻率),比如(「love」, 100),(「of」, 30),……。要求設計乙個抽樣演算法,使得樣本中單詞出現的概率分布和原資料集一致。

舉個例子,已知("a",100), ("b",50),樣本容量10。當時沒有答出來,後來和同學討論,可以用隨機數與記錄對映來抽取樣本,具體設計如下:

1. 對記錄進行排序,按出現頻率的降序(或公升序)

1. 計算所有單詞出現的頻率之和(sum)。這裡sum=100+50。

2. 用隨機數演算法產生1~150的隨機數,記這個演算法為random(start, end) 這裡start=1, end=150。約定某個範圍的數值代表抽取某個單詞。比如可以約定1~100代表單詞"a",101~150代表單詞"b"。

3. 樣本容量為10,執行10次隨機數演算法random(1, 150),抽取樣本。

2)設計乙個演算法,在分段有序陣列中查詢給定值,比如[0,1,4,5,2,10,9,3]。【比較籠統,沒說是不是已知各個區間,還有區間長度。。大概知道問題就行。。】

我的想法是設計b-樹演算法,多路查詢樹,每個節點包含多個值,將其孩子節點分隔開來。構造成b-樹之後,從根節點開始向下查詢。

但是有個問題,就是不同的有序區間可能會重疊(具有相同的元素)。

面試官說理解我的意思,但要求更具體的方案,沒想出來~~

面試過後,自己又考慮了一下,想了下面這個方法:

掃瞄一遍陣列,將每個有序陣列記錄下來,比如map< pair, pair>這種形式,對min進行排序。

然後查詢元素(x),順序掃瞄map元素,當x>=min 且 x <= max時,對 array[left_index, right_index]進行二分查詢。

== the end ==

百度一面總結

q1 簡單介紹一下你的第乙個專案吧?q3 nginx是用來做伺服器還是後端還有機器?是用什麼搭建的?q4 如果varnish重啟的話會出現什麼情況?varnish基於記憶體進行快取,重啟後資料將消失 varnish程序一旦掛起 崩潰或者重啟,快取資料都會從記憶體中完全釋放,此時所有請求都會傳送到後端...

百度一面C

自我介紹 c 基礎 1.說一下c c 中static作用 2.說一說虛函式,實現機制,作用 3.類的記憶體方式 4.stl,用過哪些,vector,queue,map,set。map的底層實現,紅黑樹自旋轉 不會 專案介紹乙個最能體現你能力的專案 多執行緒 為什麼用,遇到什麼難題,有沒有解決方案 m...

百度一面 二面 總結

首先自我介紹 1 專案 專案背景 技術 架構 為什麼做這兩個專案 專案實現了什麼?專案問的比較細 問了好多,優化呀,改進呀,借助第三方模組幹了啥?具體 具體 再具體,當時怎麼想的 怎麼設計的 進行測試沒?能實現多強的功能?2 問我雜湊,雜湊衝突,雜湊的底層實現,雜湊衝突的處理辦法,有幾種方法,每種方...