面試大資料題目總結

2021-09-24 10:17:03 字數 679 閱讀 7920

1.只用2gb內存在20億個整數中找到出現次數最多的數

有乙個包含20億個全是32位整數的大檔案,在其中找到出現次數最多的數

32位整數 = 4b

用hash表來存,一條記錄就是乙個key, 乙個value, 都用無符號整數儲存, 需要8b記憶體。

記住10^9 = 1g 

2億個整數,2*10^8 * 8 = 1.6g

20億個數最極端的情況需要16g記憶體。

將2億個整數分程16個檔案,每次處理1個檔案,然後找出最多的數,再16個比較一次即可。

40億個非負整數中找到未出現的數

32位無符號整數的範圍是0~4294967295, 現在有40億個無符號整數,所以在整個無符號中必然有未出現的數,最多可以使用1g記憶體,怎麼找到未出現過的數

假設全部hash, 40*4 = 160*10^8 = 16gb記憶體

這裡使用bit map的方法,申請乙個長度為4294967295長度的bit型別的陣列,bitarray上每一位只表示0或1

8個bit = 1b

所以只需要500mb的空間。

遍歷一遍資料,將出現過的bitarray設為1,為0的就是沒出現過的。

大資料問題最基礎的就是計算資料規模

記住10^9 = 1gb = 10億                    

10^6 = 1mb = 百萬

大資料面試總結

1 給出乙個超過100g的log file,log中存著ip位址,設計演算法找到出現次數最多的ip位址?採用雜湊切割將ip相同的檔案都對映到同乙個檔案中,在一次統計每個檔案ip的個數,求出最多的,如果乙個ip出現的次數特別多,切割之後還是無法載入到記憶體中,我們可在對這個檔案進行切割 普通切割 分成...

經典大資料求職面試題目

首先看到100g的日誌檔案,我們的第一反應肯定是太大了,根本載入不到記憶體,更別說設計演算法了,那麼怎麼辦呢?既然裝不下,我們是不是可以將其切分開來,一小部分一小部分輪流進入記憶體呢,答案當然是肯定的。在這裡要記住一點 但凡是大資料的問題,都可通過切分來解決它。粗略算一下 如果我們將其分成1000個...

大資料面試題總結

1.spark執行原理 啟動乙個driver程序 用於控制整個流程 當任務提交,首先會去向資源管理器 yarn,申請executor資源,根據sparkcontext獲取執行環境,然後driver會從程式倒著構建成dag圖,在將按照寬窄依賴減dag圖分解成stage,然後將taskset傳送給tas...