首先處理大數(shù)據(jù)的面試題,有些基本概念要清楚:
(1)1Gb = 109bytes(1Gb = 10億字節(jié)):1Gb = 1024Mb,1Mb = 1024Kb,1Kb = 1024bytes;
(2)基本流程是,分解大問題,解決小問題,從局部最優(yōu)中選擇全局最優(yōu);(當(dāng)然,如果直接放內(nèi)存里就能解決的話,那就直接想辦法求解,不需要分解了。)
(3)分解過程常用方法:hash(x)%m。其中x為字符串/url/ip,m為小問題的數(shù)目,比如把一個(gè)大文件分解為1000份,m=1000;
(4)解決問題輔助數(shù)據(jù)結(jié)構(gòu):hash_map,Trie樹,bit map,二叉排序樹(AVL,SBT,紅黑樹);
(5)top K問題:最大K個(gè)用最小堆,最小K個(gè)用最大堆。(至于為什么?自己在紙上寫個(gè)小栗子,試一下就知道了。)
(6)處理大數(shù)據(jù)常用排序:快速排序/堆排序/歸并排序/桶排序