阿里巴巴菜鳥校招三面以及未來學習計劃
分享攢一波人品。週六如期的面試了阿里菜鳥的3面。說實話,一直覺得自己很渣,不知道是怎麼稀裡糊塗走到這裡的。 下午面試官按時打來了電話,告知這是最後一次技術面試。 後來開始又一次介紹了專案,根據專案面試官問了一些關於專案的問題,和二面相比深入了一些。
隨後聊了一下collections,主要說了Hashmap, 面試官開始問TreeMap和HashMap的區別,說了一下底層資料結構的不同。後來衍生到比較兩個資料結構查詢和插入的效率。為什麼有時候會需要TreeMap來遍: 主要還是因為遍歷的順序性,我提了一嘴LinkedHashMap也是順序遍歷的(前面的教訓)[acessorder 引數可以設定是否是插入順序遍歷,false為訪問順序遍歷,是LRU排程演算法常用資料結構],中途提了紅黑樹的特性。
後面面試官出了一個場景題,說需要在一個網頁,用不同的執行緒去查詢baidu,google,Bing,要求同時返回結果,如果某個網頁無法返回,設定等待時間後顯示結構,怎麼設計? 自己選擇用CountDownLatch 去實現, 主執行緒await()其他執行緒,其他執行緒去做查詢操作(CountDown())。 然後配合Future框架,主執行緒不需要等待其他執行緒,可以先做一些渲染工作什麼的。然後用Future設定等待時間無法得到返回物件的話,主執行緒直接向前端返回結果。 不知道我這樣設計是不是最合理,面試官說了句還湊合後然後問了一下CountDownLatch具體怎麼實現,也答得差不多。然後繼續問後面的問題。。。
面試官問最近關心什麼新科技新技術嗎? 不自量力的說了區塊鏈(比特幣)。但是自己只知道大概的實現,不知道內部是怎麼實現的(就說了去中心化,分散式儲存), 使用者通過比特幣複雜的演算法去挖掘,比特幣數量固定,全部挖掘完的話就不會在產生出來了。 沒想到面試官具體問了比特幣內部怎麼運算的,這個我就真不會了。 後來自己查詢了一下:他也是通過類似於連結串列的儲存,只是比特幣存在於深部,如果一個計算機挖掘到了比特幣,那麼他會獲得比特幣的原本。這個時候其他計算機會計算這個比特幣的真實性,然後立即停止自己對這個比特幣的挖掘,並儲存這個比特幣的資訊在自己的資訊連結串列上(表示承認了這個比特幣的真實性,也達到了分散式儲存)。 還有一些怎麼計算比特幣交易的方法就不說了。。。因為我也不知道這個到底算不算內部比特幣實現,因為比特幣內部涉及很複雜的演算法和公私金鑰。
接著面試繼續說,我答不上來比特幣的內部實現後,我笑著說給自己挖了一個坑,其實我應該說自己的畢業設計的(畢業設計是語音識別,比較大資料弱標籤訓練機情況下,SVM,GMM,多層神經網路不同的表現),面試官也說我確實挖了一個坑,不過現在給你一個彌補的機會,說說你現在看什麼書吧。
我就說在看楊曉峰的深入理解Java連載。。然後就開始聊這本書,聊了10分鐘吧,主要是CAS,執行緒池,JDK的迭代什麼的。就不具體說了。 最後面試官介紹了部門的業務邏輯15分鐘吧。 然後就問有問題問他嗎。 整個面試60分鐘,問題基本答上來了(也都是基礎。。。),主要感覺考察的是學習能力吧,反正這幾天看來深受打擊在技術上,要努力學習了。。。
除去週末,這是工作日等待的第一天,希望人品爆發,能HR面進入阿里巴巴。。。
學習計劃:分散式,Think in Java,SSM框架, 做一個高併發分散式的小專案,自己優化。
後續:已經HR面試,還在等結果中,目測備胎。。。