美團
(1)1 1 2 3 5 8...,求第n項
寫了個遞歸,面試官問了兩個,n=-1,和極限最大值狀況下怎麼辦。
我回答,會致使棧的內存空間溢出。又問了,在棧裏會是個怎樣的過程。
(2)打開摩拜單車頁面,問讓你去實現,就是實現找到離本身所在位置最近的一些單車的位置信息。
難點是,如何在千萬級別的數據中,快速匹配距離最小的單車實體。
(3)問在10T級別的文本數據中,詞已經分好的狀況下,在只有512mb的內存空間下,找到數量前10的詞?
解答:
(4)進程和線程的區別
(5)多線程必定比單線程快嗎
(6)樂觀鎖和悲觀鎖的概念,分別在什麼狀況下適用
(7)堆和棧的區別,堆的區劃分,gc root 根有哪些類型。默認狀況下,新生代的對象多少次gc會進入老年代
(8)新生代內部的eden和survivor關係,和老年代的區別
(9)數據爬區過程當中,分了不一樣的工做區,進行多線程的工做,如何保證,某個區內,多線程的各類單線程的工做不是重合的,即不會爬到相同的數據,形成資源的浪費。
解答:
下面的方法解決了三個問題,
1,考慮了計算機的工做內存,採用MapReduce的方式,分塊處理,同時加快了處理和查詢的速度。
2,解決了線程或者MapReduce中分塊的可能會重複工做的問題,由於數據hash後,根據hash值範圍對數據進行分配,個線程或者分塊工做能識別本身的工做的範圍沒避免重複計算。
3,消除了大量重複數據佔用內存的影響,固然,採用了hash的方法,節省存儲空間。