在2.5億個整數中找出不重複的整數,記憶體不足以容納這2.5億個整數。
方案1:採用2-bitmap(每個數分配2bit,00表示不存在,01表示出現一次,10表示多次,11無意義)進行,共需記憶體 記憶體,還可以接受。然後掃瞄這2.5億個整數,檢視bitmap中相對應位,如果是00變01,01變10,10保持不變。所描完事後,檢視bitmap,把對應位是01的整數輸出即可。
方案2:也可採用上題類似的方法,進行劃分小檔案的方法。然後在小檔案中找出不重複的整數,並排序。然後再進行歸併,注意去除重複的元素。
海量資料分布在100臺電腦中,想個辦法高校統計出這批資料的top10。
在每台電腦上求出top10,可以採用包含10個元素的堆完成(top10小,用最大堆,top10大,用最小堆)。比如求top10大,我們首先取前 10個元素調整成最小堆,如果發現,然後掃瞄後面的資料,並與堆頂元素比較,如果比堆頂元素大,那麼用該元素替換堆頂,然後再調整為最小堆。最後堆中的元 素就是top10大。
求出每台電腦上的top10後,然後把這100臺電腦上的top10組合起來,共1000個資料,再利用上面類似的方法求出top10就可以了。
怎麼在海量資料中找出重複次數最多的乙個?
先做hash,然後求模對映為小檔案,求出每個小檔案中重複次數最多的乙個,並記錄重複次數。然後找出上一步求出的資料中重複次數最多的乙個就是所求(具體參考上期ip那題)。
上千萬或上億資料(有重複),統計其**現次數最多的錢n個資料。
上千萬或上億的資料,現在的機器的記憶體應該能存下。所以考慮採用hash_map/搜尋二叉樹/紅黑樹等來進行統計次數。然後就是取出前n個出現次數最多的資料了,可以用第2題提到的堆機制完成。
1000萬字串,其中有些是重複的,需要把重複的全部去掉,保留沒有重複的字串。請怎麼設計和實現?
這題用trie樹比較合適,hash_map也應該能行。
乙個文字檔案,大約有一萬行,每行乙個詞,要求統計出其中最頻繁出現的前10個詞,請給出思想,給出時間複雜度分析。
這題是考慮時間效率。用trie樹統計每個詞出現的次數,時間複雜度是o(nle)(le表示單詞的平準長度)。然後是找出出現最頻繁的 前10個詞,可以用堆來實現,前面的題中已經講到了,時間複雜度是o(nlg10)。所以總的時間複雜度,是o(nle)與o(nlg10)中較大 的哪乙個。
經典大資料求職面試題目
首先看到100g的日誌檔案,我們的第一反應肯定是太大了,根本載入不到記憶體,更別說設計演算法了,那麼怎麼辦呢?既然裝不下,我們是不是可以將其切分開來,一小部分一小部分輪流進入記憶體呢,答案當然是肯定的。在這裡要記住一點 但凡是大資料的問題,都可通過切分來解決它。粗略算一下 如果我們將其分成1000個...
面試題目 大資料量專題
1.給你a,b兩個檔案,各存放50億條url,每條url占用64位元組,記憶體限制是4g,讓你找出a,b檔案共同的url。2.有10個檔案,每個檔案1g,每個檔案的每一行都存放的是使用者的query,每個檔案的query都可能重複。要你按照query的頻度排序 3.有乙個1g大小的乙個檔案,裡面每一...
面試題目 大資料量專題
1.給你a,b兩個檔案,各存放50億條url,每條url占用64位元組,記憶體限制是4g,讓你找出a,b檔案共同的url。2.有10個檔案,每個檔案1g,每個檔案的每一行都存放的是使用者的query,每個檔案的query都可能重複。要你按照query的頻度排序 3.有乙個1g大小的乙個檔案,裡面每一...