BAT面試大資料筆記

2021-07-26 12:31:31 字數 3133 閱讀 5371

map-reduce 和hadoop 逐漸成為面試熱門

1. 介紹雜湊函式

雜湊函式又叫雜湊函式

1.1 典型的雜湊函式都有無限的輸入值域。

1.2 輸入值相同時,返回值一樣。

1.3 輸入值不同時,返回值可能一樣,也可能不一樣

1.4 不同輸入值得到的雜湊值,整體均分的分布在輸出域s上(重要)

1~3 點性質是雜湊函式的基礎,第4點是評價乙個雜湊函式優劣的關鍵。

aaa1 aaa2 aaa3 雖然相似,但雜湊值差異巨大。

2.介紹map-rdeduce

2.1  map階段  把大任務分成子任務

2.2 reduce階段 子任務併發處理,然後合併結果。

難點:工程上的處理

注意點:

1. 備份的考慮,分布式儲存的設計細節,以及容災策略。

2. 任務分配策略與任務進度跟蹤的細節設計,節點狀態的呈現

3. 多使用者許可權的控制

map-reduce 方法統計文章的單詞

文章-> 預處理

1.去掉標點符號  

2.連字元

3.對於縮寫的處理

4.大小寫的處理

對每個單詞生成詞頻為1

雜湊函式

子任務進行處理

海量數量處理技巧

分而自治,通過雜湊函式將大任務分流到機器或分流秤小檔案

常用hashmap 或bitamp

難點:通訊、時間和空間的估算。

每個位置上是乙個bit,只能表示0和1兩種狀態。

長度為2^32的bit陣列,空間約為128m.

hashmap記錄所有出現的次數

key->具體某一種數

value-> 這種數出現的次數

記憶體可能超出

檔案分流

在40億個無符號整數的檔案,所以在整個範圍中必然沒有出現過的數,可以使用最多10m的記憶體,只用找到乙個沒有出現過的數即可,該如何找?

hash 表 40億條 每一條4個位元組 16g

bitmap 500m

64個區間

500m/64 8m

1、根據記憶體限制決定區間大小,根據區間大小,得到有多少個變數,來記錄每個區間的數出現的次數。

2、 統計區間上的數的出現次數,找到不足的區間。

3、利用bitmap對不滿足的區間,進行這個區間上的數的詞頻統計。

百億資料中,找到100個熱詞

分流 確定機器數

對每乙個機器,進行檔案分流,小根堆 確定top100

工程師使用伺服器集群來設計和是吸納資料快取,以下是常見的側臉。

無論是新增、查詢還是刪除資料,都先將資料的id通過雜湊函式轉換成乙個雜湊值,記為key.

2.如果目前機器有n臺,則計算key%n的值,這個值就是該資料所屬的機器編號,無論是新增、刪除還是查詢操作,都只在這台機器上進行。請分析這種快取策略可能帶來的問題。並提出改進的方案。

如果增加或刪除機器,資料遷移的代價很大。

一致性雜湊演算法

資料id—> 0~ 2 ^32

key 和data 相鄰儲存

順時針進行

給定陣列arr,arr中所有的值杜偉整數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數aim代表要找的錢數,求換錢有多少種方法.

暴力搜尋方法

記憶搜尋方法

動態規劃方法

狀態繼續優化

arr= aim=

public int coins1(int arr,int aim)

return process1(arr,0,aim);

}public int process1(int arr,int

index,int aim)else

}}

如果已經使用0張5元和1張10元的情況下

後續將求:p1(arr,2,990)

這裡2表示arr剩下的錢為arr[2,3] 即為[25,1]

990:表示要找的剩餘錢數。

2張5元0張10元p1(arr,2,990)

public int coins2(int arr,int aim)

int map=new int[arr.length+1][aim+1];

return process2(arr,0,aim,map);

}public int process2(int arr,int

index,int aim,int map)elseelse}}

map[index][aim]=res==0?-1:res;

return res;

}

其本質是利用空間來記錄每乙個暴力搜尋的計算結果的時候直接使用,從而不再是用重複計算。

動態規劃由於規定了每一種遞迴的計算順序,依次進行計算。

面試中遇到暴力遞迴題目可以優化成動態規劃方法的大體過程:

實現暴力遞迴方法。

在暴力搜尋方法的函式中看看那些引數可以代表遞迴過程。

找到代表遞迴過程的引數之後,記憶話搜尋方法非常容易實現。

通過分析記憶話搜尋的依賴路徑,進而實現動態規劃。

根據記憶化搜尋方法改出動態規劃,減少時間複雜度。

動態規劃的關鍵點:

最優化原理,也就是最優子結構性質。這指的是乙個最優化策略具有這樣的性質,不論過去狀態和決策如何,對前面的決策所形成的的狀態而言,餘下的諸多決策必須構成最優決策,簡單來說就是乙個最優化的策略的子策略總是最優的,如果乙個問題滿足最優化原理,就稱其具有最優子結構性質。

無後效性。指的是某狀態下決策的收益,只與狀態和決策相關,與到達該狀態的方式無關。

子問題的重疊性,動態規劃將原來具有指數級時間複雜度的暴力搜尋演算法改進成了具有多項式時間複雜度的演算法。其中的關鍵在於解決冗餘,這是動態規劃演算法的根本目的。

經典動態規劃的問題

public

ints1(int n)

if(n==1||n==2)

return s1(n-1)+s1(n-2);

}

待補:

大資料面試

資料分析師常見的10道面試題解答 資料分析師 或者如下闡述 演算法思想 分而治之 hash ip位址最多有2 32 4g種取值情況,所以不能完全載入到記憶體中處理 可以考慮採用 分而治之 的思想,按照ip位址的hash ip 24值,把海量ip日誌分別儲存到1024個小檔案中。這樣,每個小檔案最多包...

BAT面試總結

一面 1 box shadow text shadow各個屬性的值?box shadow 與 text shadow 用法差不多 1 水平偏移量 正值向右 負值向左 2 垂直偏移量 正值向下 負值向上 box shadow 5px 5px 27px red,5px 5px 27px green 3 ...

大資料面試總結

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