目錄40億個非負整數中找到沒出現的數
找到100億個url中重複的url以及搜尋詞彙的topk問題
40億個非負整數中找到出現兩次的數和所有數的中位數
想要在很多整數中找到出現次數最多的數,通常的做法是使用雜湊表對出現的每乙個數做詞頻統計。
雜湊表的key需要占用4b,value也是4b。本題共有20億個數,用32位的整數就可以表示其出現的次數,而不會產生溢位,
但雜湊表的一條記錄(key, value)需要占用8b,當雜湊表記錄數為2億個時需要至少1.6gb的記憶體。極端情況下20億個數都不同,這樣記憶體可能會不夠用。
解決辦法是把包含20億個數的大檔案用足夠好的雜湊函式分成16個小檔案,根據雜湊函式的性質,同一種數不可能分到不同的小檔案上,同時每個小檔案中不同的數一定不會大於2億種。然後對每乙個小檔案用雜湊表來統計其中每種數出現的次數,這樣得到了16個小檔案中各數的次數統計。接下來只要選出這16個小檔案各自的第一名中誰出現的次數最多即可。
把乙個大的集合通過雜湊函式分配到多台機器中或者分配到多個檔案裡,這種技巧是處理大資料面試題時最常用的技巧之一。但是到底分配到多少臺機器、分配到多少檔案,要根據具體的限制來確定,比如本題確定分成16個檔案就是根據記憶體限制2gb的條件來確定的。
大資料面試
資料分析師常見的10道面試題解答 資料分析師 或者如下闡述 演算法思想 分而治之 hash ip位址最多有2 32 4g種取值情況,所以不能完全載入到記憶體中處理 可以考慮採用 分而治之 的思想,按照ip位址的hash ip 24值,把海量ip日誌分別儲存到1024個小檔案中。這樣,每個小檔案最多包...
大資料面試總結
1 給出乙個超過100g的log file,log中存著ip位址,設計演算法找到出現次數最多的ip位址?採用雜湊切割將ip相同的檔案都對映到同乙個檔案中,在一次統計每個檔案ip的個數,求出最多的,如果乙個ip出現的次數特別多,切割之後還是無法載入到記憶體中,我們可在對這個檔案進行切割 普通切割 分成...
大資料面試(HDFS)
第4章hdfs 4.1 hdfs 的讀寫流程細節?hdfs 中的 fsimage 裡面儲存的是什麼資訊?副本的存放策略?答 這個大家最好回家準備乙個詳細的流程圖然後根據自己的圖講給面試官看 4.2 hdfs 的機架感知?答 根據副本的存放策略,hdfs 是如何知道多個不同 node 是否在同乙個機架...