1. 程式人生 > >阿里巴巴菜鳥校招二面

阿里巴巴菜鳥校招二面

2018年7月25日經歷了來自大廠的第一次面試經歷,隨記錄之,供往後自己回顧。介紹一下本人情況:英國中上學校計算機碩士(很渣),5月開始系統複習JAVA,從基礎開始基本。大學學得比較雜,但是都不深入。

 

與阿里的一面相比二面的深度自我感覺更深(可能也是自己太菜)。首先也是突然襲擊,一面後的一個星期,下午2點杭州打來了電話,在確定二面不需要電腦程式設計的情況下,預約了5點面試。 面試官很準時,5點打來了電話,剛剛開始很緊張,面試官安慰了一下後,開始了自我介紹。 我的策略是實事求是,我直接指出了我因為缺乏工作經驗,所以做的專案可能和工作中實際注重的問題不同(分散式),可能因為如此,面試官後面就沒有問關於分散式的問題。

自我介紹介紹後,開始談自己做的專案。需要深入的說明自己的專案用到的知識點還有其亮點,當然也要說明自己的不足(我主要說的是自己專案在安全性上面沒有考慮周全:提了一下Https,其次還有沒有考慮高併發的狀態(分析了Tomcat伺服器最高併發負載只有300左右),最後我發散的提出了自己的改進方法:例如使用NIO的selector來搭建執行緒池,使之避免過多的執行緒之間切換帶來的開銷(上下文切換)。

後面開始了Java方面面試:資料結構,主要從Map上面展開(可能是二面,面試官預設你知道了最基本的概念)。我就從底層介紹了HashMapm,Hashtable,ConcurrentHashMap. 面試官很懂,中間把HashMap的abstract實現類說成了介面,被及時糾正。說完後,面試官繼續問還知道其他的嗎? 當時已懵逼,就是想不起來LinkedHashMap 的存在。面試官看出來後繼續問怎麼遍歷Map。 遍歷Map,用HashMap.keyset()。 遍歷Map的四種方法:主要就是keyset,或者利用Map裡面的EntrySet,虛擬碼如下. 

for (Entry<object,object> entry: HashMap.entrySet()){
//output
entry.getKey();
entry.getValue();
}

被虐完資料結構後,開始JVM。 我就從垃圾回收出發來說的。 就是常見的新生代,倖存區,老年代。中間提到了垃圾回收的可達性演算法和引用計數法。最後也談了幾種垃圾回收演算法:複製演算法,標記-清除,清除-整理。中間也提到了幾種引用,悲觀鎖什麼的,資料物件頭什麼,但是面試官沒有細問,最後問了我堆中有幾個倖存區;我回答了2個,他問為什麼? 當時我只知道肯定是幫助優化垃圾回收機制的,但是具體為什麼我真不知道,就說不會。。。。

最後面試官估計看了一下時間後就問有什麼問題問他的,我就問了一下常規問題後,他說等反饋。。。。在我心裡我已經覺得自己涼涼了。總結下來就是感覺自己的基礎知識還是薄弱,需要多看程式碼,多理解一下底層的設計目的。。。路還長~~~ ~~keep clam down and fking going on.

PS: 很開心,27號打來電話通知了三面,說是最後一輪技術了