資源描述:
《華為java面試》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、IT旅途——程序員面試經(jīng)驗(yàn)分享發(fā)表于2013-05-0909:16
2、?10181次閱讀
3、來源CSDN
4、?50?條評(píng)論
5、作者季紅程序員面試職業(yè)生涯摘要:本文從IT人員的角度,一起分享面試道路上的坎坷。文章匯集幾個(gè)知名公司的面試題,從出題的角度到分析問題的方法到解決問題較為全面的講解面試題目,以供讀者參考。面試是職場的永恒話題,如何在職場面試中脫穎而出,獲得心儀職位?這里搜集了關(guān)于面試經(jīng)驗(yàn)的熱文,其中匯集了阿里巴巴、百度、微軟幾個(gè)知名公司的面試題以及部分答題方法、技巧、面試的心得體會(huì),供讀者參考。?[1]教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題?教你如何迅速秒殺掉
6、:99%的海量數(shù)據(jù)處理面試題作者:July出處:結(jié)構(gòu)之法算法之道blog前言一般而言,標(biāo)題含有“秒殺”,“99%”,“史上最全/最強(qiáng)”等詞匯的往往都脫不了嘩眾取寵之嫌,但進(jìn)一步來講,如果讀者讀罷此文,卻無任何收獲,那么,我也甘愿背負(fù)這樣的罪名,:-),同時(shí),此文可以看做是對(duì)這篇文章:十道海量數(shù)據(jù)處理面試題與十個(gè)方法大總結(jié)的一般抽象性總結(jié)。畢竟受文章和理論之限,本文將摒棄絕大部分的細(xì)節(jié),只談方法/模式論,且注重用最通俗最直白的語言闡述相關(guān)問題。最后,有一點(diǎn)必須強(qiáng)調(diào)的是,全文行文是基于面試題的分析基礎(chǔ)之上的,具體實(shí)踐過程中,還是得具體情況具體分析,且場景也遠(yuǎn)比本文所述的
7、任何一種情況復(fù)雜得多。OK,若有任何問題,歡迎隨時(shí)不吝賜教。謝謝。何謂海量數(shù)據(jù)處理?所謂海量數(shù)據(jù)處理,無非就是基于海量數(shù)據(jù)上的存儲(chǔ)、處理、操作。何謂海量,就是數(shù)據(jù)量太大,所以導(dǎo)致要么是無法在較短時(shí)間內(nèi)迅速解決,要么是數(shù)據(jù)太大,導(dǎo)致無法一次性裝入內(nèi)存。那解決辦法呢?針對(duì)時(shí)間,我們可以采用巧妙的算法搭配合適的數(shù)據(jù)結(jié)構(gòu),如Bloomfilter/Hash/bit-map/堆/數(shù)據(jù)庫或倒排索引/trie樹,針對(duì)空間,無非就一個(gè)辦法:大而化?。悍侄沃?hash映射,你不是說規(guī)模太大嘛,那簡單啊,就把規(guī)模大化為規(guī)模小的,各個(gè)擊破不就完了嘛。至于所謂的單機(jī)及集群問題,通俗點(diǎn)來講
8、,單機(jī)就是處理裝載數(shù)據(jù)的機(jī)器有限(只要考慮cpu,內(nèi)存,硬盤的數(shù)據(jù)交互),而集群,機(jī)器有多輛,適合分布式處理,并行計(jì)算(更多考慮節(jié)點(diǎn)和節(jié)點(diǎn)間的數(shù)據(jù)交互)。再者,通過本blog內(nèi)的有關(guān)海量數(shù)據(jù)處理的文章:BigDataProcessing,我們已經(jīng)大致知道,處理海量數(shù)據(jù)問題,無非就是:1.分而治之/hash映射+hash統(tǒng)計(jì)+堆/快速/歸并排序;2.雙層桶劃分3.Bloomfilter/Bitmap;4.Trie樹/數(shù)據(jù)庫/倒排索引;5.外排序;6.分布式處理之Hadoop/Mapreduce。下面,本文第一部分、從set/map談到hashtable/hash_ma
9、p/hash_set,簡要介紹下set/map/multiset/multimap,及hash_set/hash_map/hash_multiset/hash_multimap之區(qū)別(萬丈高樓平地起,基礎(chǔ)最重要),而本文第二部分,則針對(duì)上述那6種方法模式結(jié)合對(duì)應(yīng)的海量數(shù)據(jù)處理面試題分別具體闡述。第一部分、從set/map談到hashtable/hash_map/hash_set稍后本文第二部分中將多次提到hash_map/hash_set,下面稍稍介紹下這些容器,以作為基礎(chǔ)準(zhǔn)備。一般來說,STL容器分兩種,·序列式容器(vector/list/deque/stack
10、/queue/heap),·關(guān)聯(lián)式容器。關(guān)聯(lián)式容器又分為set(集合)和map(映射表)兩大類,以及這兩大類的衍生體multiset(多鍵集合)和multimap(多鍵映射表),這些容器均以RB-tree完成。此外,還有第3類關(guān)聯(lián)式容器,如hashtable(散列表),以及以hashtable為底層機(jī)制完成的hash_set(散列集合)/hash_map(散列映射表)/hash_multiset(散列多鍵集合)/hash_multimap(散列多鍵映射表)。也就是說,set/map/multiset/multimap都內(nèi)含一個(gè)RB-tree,而hash_set/ha
11、sh_map/hash_multiset/hash_multimap都內(nèi)含一個(gè)hashtable。所謂關(guān)聯(lián)式容器,類似關(guān)聯(lián)式數(shù)據(jù)庫,每筆數(shù)據(jù)或每個(gè)元素都有一個(gè)鍵值(key)和一個(gè)實(shí)值(value),即所謂的Key-Value(鍵-值對(duì))。當(dāng)元素被插入到關(guān)聯(lián)式容器中時(shí),容器內(nèi)部結(jié)構(gòu)(RB-tree/hashtable)便依照其鍵值大小,以某種特定規(guī)則將這個(gè)元素放置于適當(dāng)位置。包括在非關(guān)聯(lián)式數(shù)據(jù)庫中,比如,在MongoDB內(nèi),文檔(document)是最基本的數(shù)據(jù)組織形式,每個(gè)文檔也是以Key-Value(鍵-值對(duì))的方式組織起來。一個(gè)文檔可以有多個(gè)Key-Valu