前言
今年的寒來得格外慢,眼看年關将近,開年就入春了,但西北季風似乎沒有往年的無情。
天氣和網際網路行業的雙重寒冷險些讓我翻不過身。
那時的我正處在一個尴尬的境地,工作兩年,壓力不大,朝九晚五,做着一些在剛入職就一直在做的增删改查。

曾經也找過一些書,一些視訊,告訴自己,認真學一學,不然以後的路會越來越難走。但我發現自己已經不是那個在高中孤注一擲為考上大學努力學習的熱血少年了。我曾以為自己的實力雖然不濟,但認真複習一下找個工作應該不會太困難。好吧,現實狠狠地打了我的臉,年初面試的不斷失利,讓我明白了自己的不足,基礎不紮實,了解不深刻,新技術不了解。我們都知道現在的大環境不好,可是隻從外部環境去找原因,永遠無法改變自己找不到工作的現實。我以前天真地認為,既然在公司無法學習到更多的技術,那待個一兩年我再跳槽到其他公司,在下一個公司學習技術,還能漲漲工資,也挺好的。但直到後來我才了解到,一個人的進步永遠不要指望外部給予你的壓力,而任何公司招聘員工都是希望找到一個能力強的人來為公司服務,而不是到公司來學習,我本末倒置了。
第二層
面試官對我的偷雞取巧并不滿意啊,他需要我提速,這個速度不行啊。
What??是有時間複雜度更低的嗎?不不不,這是一道核心竟然是一道多線程的題目。
- 将10億的資料分片,通過分治的思維對資料進行第一次處理。
- 開啟多線程然後對其進行這些分片的資料進行優先級隊列操作。
- 然後每個子線程篩選出其中最大的k個數
- 當所有線程執行完畢之後合并資料
我猜測的第三層
- 是不是考慮下多少個資料一分片,然後如何把效能提升到最高的問題?
- 建構多少個線程讀取效率是最高的?
這個都是我沒想到的,各位大佬有想法的可以聊一下啊。
題二:一篇文章内的單詞數量
這題乍一看卧槽貌似不難,foreach循環碰到一個空格或者标點的情況下sum++,是不是就可以解決這個問題。
然而事情并沒有想想的這麼簡單。面試被問到這種問題最難的是什麼,可能是對于這題目真實的邊界問題的思考。
- 如果這篇文章内容很大怎麼辦,會不會把記憶體吃光?
- 如何給單詞去除重複?
是不是可以考慮逐行讀取呢?
将其轉化成IO流,逐行讀取流,之後對這個輸入内容進行一次計數操作,是不是就可以解決這個問題呢。
單詞重複的問題
卧槽,這個真簡單HashSet啊!!!!那麼如果海量資料我是不是又炸了?
卧槽,死亡螺旋嗎。或許我們可以考慮下用hash的方式來解決,隻保留單詞的hashcode,是不是可能可以解決呢。
同樣的這個也可以使用多線程分片去優化
方式的話基本也和上面是完全一樣的,隻要把資料分片,之後多線程排程,然後合并結果就可以了。
最後
贈送大家一套完整的Android學習資料吧。
以前一直是自己在網上東平西湊的找,找到的東西也是零零散散,很多時候都是看着看着就沒了,時間浪費了,問題卻還沒得到解決,很讓人抓狂。
後面我就自己整理了一套資料,還别說,真香!
資料有條理,有系統,還很全面,我不友善直接放出來,大家可以先看看有沒有用得到的地方吧。
附上白嫖位址:《Android架構視訊+BATJ面試專題PDF+學習筆記》
…(img-klZWtFpT-1620878387161)]
[外鍊圖檔轉存中…(img-HfetBVZu-1620878387162)]