2015阿里巴巴校招內推Java崗位面經分享

才智咖 人氣:5.02K

寫在前面: 2015 年 7 月初,參加阿里巴巴校招內推, 8 月 15 日拿到研發工程師 JAVA 的 offer 。我的專業並非計算機,也沒有在網際網路公司實習過,只有一些學習和麵試心得,供大家參考。阿里巴巴 90% 以上使用 Java ,所以下面的分享也基於 Java 崗,如有表達不準確的地方,請提出建議和指正。

2015阿里巴巴校招內推Java崗位面經分享

7 月上旬投遞簡歷, 7 月 27 號至 29 號連續三天,每天一面,在 8 月 15 日正式收到校招 offer 。今年阿里依舊火熱,看簡歷編號,內推階段大約有 6w 份簡歷,而據 hr 告知實際通過比例略大於 1% ,所以競爭還是很激烈。

一面 :

時間約 50 分鐘,注重基礎,廣度加深度,刨根問底。

自我介紹熟悉 java 、 jvm 、 Python 、 Hadoop( 包括 HDFS 、 MapReduce 、 HBase 等 ) 、優化演算法等。所以,針對這些來提問。大概只記得這麼多,後面想起來再補充。

1. Hashtable,HashMap,ConcurrentHashMap 底層實現原理與執行緒安全問題(建議熟悉 jdk 原始碼,才能從容應答)

2. MapReduce 輸入輸出格式

3. Mapper 和 Reducer 的功能

4. MapReduce 的工作機制,Shuffle過程

5. HDFS 工作原理,如何實現 HA

6. 節點間通訊機制

7. DataNode 如何冗餘備份

8. Java 的引用型別有哪幾種

9. 抽象類和介面的區別

10. 設計模式會哪些

11. 工廠方法模式的優點(低耦合、高內聚,開放封閉原則)

12. 陣列多大放在 JVM 老年代(不只是設定 PretenureSizeThreshold ,問通常多大,沒做過一問便知)

13. 老年代中陣列的訪問方式

14. GC 演算法,永久代物件如何 GC , GC 有環怎麼處理

15. 誰會被 GC ,什麼時候 GC

16. 如果想不被 GC 怎麼辦

17. 如果想在 GC 中生存 1 次怎麼辦

18 快取設計與 LRU

19. hashCode() 與 equals() 生成演算法、方法怎麼重寫

20. 關係型和非關係型資料庫區別

21. HBase 原理與工作機制,如何保證 HA ,如何保證宕機資料可恢復

22. 資料庫處理大資料的優化

23. 索引的分類

24. 模糊查詢效能

25. 排序演算法與時空複雜度(快排為什麼不穩定,為什麼你的專案還在用)

26. 逆波蘭計算器

27. Hoffman 編碼

28. 查詢樹與紅黑樹

29. Spring 框架等

30. 專案

31. jvm 如何分配直接記憶體, new 物件如何不分配在堆而是棧上,常量池解析

一面總結 :

面試官竟然主動對我說謝謝 … 驚我一身冷汗,不過立刻意識到肯定過了。

1) 面試問題主要根據自我介紹和專案,所以,對寫在簡歷上的內容,一定要理解的清清楚楚,也不要為了簡歷看起來牛比而羅列經歷,尤其是自己淺嘗輒止的專案。

例如,建議不要輕易說自己寫過爬蟲,因為沒那麼簡單,一般會追問懂 Scrapy 框架嗎,為什麼不做成分散式的,如何並行爬取多個網站,如何設計並行任務分發器,爬來的資料如何儲存,索引,檢索,你覺得還有什麼可以改進的。爬蟲屬於搜尋引擎框架的一部分,面試爬蟲很容易給自己挖一個 “ 系統設計 ” 的坑。

2) 阿里注重基礎、潛力和興趣,而一些初創公司往往更注重立即上手的技能,這一點在面試中有所體會。

3) 阿里注重基礎,但是僅有基礎是不夠的。

專案經歷與實習經歷可以加分,一線網際網路公司的實習經歷可以鍍金,由於師門嚴禁實習,因此需要專案彌補,除去研究的課題多目標優化演算法, Hadoop 是個“大寶貝”,它包含了 java 、 jvm 、設計模式、大資料處理框架、分散式計算、 HA 、負載均衡、主備一致性等,也包含分散式檔案系統、分散式計算框架、非關係型資料庫的實現等,幾乎面試官問的任何場景的問題,都可以在 Hadoop 中找到解答,所以, Hadoop 是我最大的加分項,彌補了自己零實習的弱點。

至於 Hadoop 需要掌握到什麼程度,才能應對面試?原理上,可以回答上面提到的點,操作上,自己可以實現淘寶的資料魔方的 Demo 。

4) 面試官的問題不會了怎麼辦?個人不建議直接說不會,而是要 “ 扯 ” 。

例如,問我 Spring 、 iBatis 等框架,而我一點不懂,但我說會 Hadoop ,你有什麼業務需求,我幾乎都可以在 Hadoop 找到實現。問我 MySQL 資料庫,我也不精通,但我會告訴他 HBase 如何解決。

5) 關注面試的公司,關注阿里的開源技術與自主框架,例如,問到 jvm 的時候,我會向面試官闡述淘寶在 jvm 方面的優化工作,以及 jvm 在 Hadoop 方面的優化。有興趣的同學可以關注淘寶 “ 莫樞 ” ,後離職加入 Oracle 、 Azul ,在虛擬機器方面做了很多出色的工作,詳情關注: ITeye 的高階語言虛擬機器專欄。

6) 回答問題時,切忌使用 “ 應該 ” 、 “ 好像 ” 、 “… 吧 ” 等不確定性詞彙,因為搞技術還是需要嚴謹的,面試官不想招聘一個什麼都靠猜測的同事。

二面 :

時間約 23 分鐘,感覺是交叉面,是其他部門的主管,聽語氣感覺級別在 P8 以上。

首先也是自我介紹,針對自我介紹和專案,開始提問。

1. IO 流,位元組流 --> 字元流

2. 遞迴讀取資料夾下的檔案,程式碼怎麼實現

3. HashMap 與執行緒安全問題

4. rehash

5. Web 框架

6. 專案與 Hadoop

7. 問我未來的職業規劃

8. 問我有什麼問題(問了關於阿里工程師文化的問題)

二面總結 :

1) 自我介紹要抓住重點,與崗位匹配,比如面技術,社團經歷可以不說(但是 hr 面非常有用)。

2) 二面問的技術內容很少,感覺是可以看到一面成績,進行簡單的確認。所以,筆試或一面表現好,對後面的面試很有幫助。

3) 當面試官不再關注你的過去,而是和你談未來談理想的時候,基本表明面試通過了。例如,問職業規劃和你對阿里的想法等問題的時候。

hr 面 :

知乎上稱阿里的 hr 是神存在,掌握生殺大權,多少英雄好漢歷經殘酷的技術面,卻倒在 hr 面前,但是從個人的經歷,感覺 hr 姐姐還是很 nice 的。

40 分鐘,並沒有自我介紹,而是直接轟炸。

1. 暑假在學校做什麼呢

2. 平時喜歡閱讀什麼書

3. 問我俱樂部主席的工作,有什麼收穫(社團主席,是 hr 的.興趣點)

4. 課題是什麼,遇到什麼困難,你是如何解決問題的

5. 為什麼不從事本專業相關工作

6. 你專業是電磁場,為什麼要轉行

7. 你是一個什麼樣的人

8. 你的缺點

9. 曾經最大的打擊

10. Web 框架不會怎麼辦,以後工作的內容和你現在研究的不同怎麼辦

11. 職業規劃

12. 如果能去杭州家人同意嗎

13. 向我介紹了所應聘部門

14. 問我有什麼問題

hr 面總結 :

1) 一定要坦誠, hr 閱人無數,更別說阿里的 hr 了。

2) 面試官是在考察適合自己團隊的人選,而面試者,也是在尋找適合自己的團隊和 manager ,這是雙向選擇的過程,所以自己的心態要和麵試官持平。記住,面試官是在尋找團隊夥伴,不是在對你考試,這種心態有助於減輕緊張的心情。

3) 社團經歷對自己的成長,看不見摸不著,但在時間管理、情緒控制、團隊管理等方面,有很大的收穫。程式猿的工作壽命並不長,當技術過硬,開始帶團隊的時候,相信一定會感謝自己在社團的經歷。

推薦書目 :

限於師門不允許實習,所以只能在學校學習乾貨,提升內功。一直相信,理論決定上限,技能決定下限。修煉好內功,學習各種武功招式便輕而易舉。

《 Java 程式設計思想》, Java 業界神書,不建議入門閱讀,相比較,《 Java 核心技術 I 》非常適合入門。

《 Java 核心技術 I 》,如果不想啃《 Java 程式設計思想》,這本是絕佳的入門神器。

《 Effective Java 第二版》,別猶豫了,深入 Java 必讀,因為 James Gosling 也讀,務必打好基礎再讀,否則會打擊學習 Java 的信心。居家旅行,催眠必備。

《 Java 解惑》, Effective Java 作者又一力作,解析 Java 的各種坑。

《 Java 併發程式設計實戰》,玩 Java ,怎麼能不懂併發,併發的世界很奇妙。

《 Java 特種兵》,淘寶謝宇所著,洋洋灑灑,也是進階讀物,不可入門,作為補充參考。

《深入理解 Java 虛擬機器》,周志明所著,國內業界良心之作,建議參考 ITeye 高階語言虛擬機器專欄,也可與《 Java 效能優化權威指南》參考來看。

《 Java 效能優化權威指南》,深入理解 Java 效能優化細節, James Gosling 力薦。

《設計模式之禪》,一個個生動的例子,讓枯燥的設計模式也變得有趣,不建議初學者直接看 GOF 的《設計模式》。

《 Hadoop 權威指南》,掌握 Hadoop 必看,不用多說。

《 Hadoop 技術內幕》之 HDFS 、 MapReduce 、 YARN ,參考與補充。

《 Python 核心程式設計》,對 Python 的講解深入淺出,雖然基於 Python2.5 ,但是核心思想不變。Python有很多庫,建議閱讀官方文件,裡面有詳細解釋和示例程式碼。

《計算機網路》,網路基礎入門必備。

《大型網站技術架構》,簡單實在,理解大型網站架構,學習 Hadoop 之後才看發現架構上很多相似之處。

《 Linux 核心設計與實現》,拋開了 Linux 核心紛繁的原始碼,給出了關鍵的架構與實現,與《深入理解 Linux 核心》互補,重點推薦。

《深入理解 Linux 核心》,幾乎所有關鍵的疑問,都可以在裡面找到解答,需要時查閱,千萬不要從第一頁開始讀。

《程式設計師面試金典》,注意不是 “ 寶典 ” ,涉及演算法、物件設計、概率智力題等,面試神器。

《劍指 offer 》,刷題必備,面試利器。

《程式設計之美》,你會發現各大公司的演算法題好像似曾相似。

《大話資料結構》、《演算法》、《演算法導論》,演算法是我的弱項,以我的教訓建議演算法長期準備。

實際上,上面的書目我表示也只看了 50% 不到,大神的作品需要反覆研讀,比如《 Effective Java 》。

個人體會, Hadoop 是個“大寶貝”,尤其對於我這樣零實習,少專案的非科班學生,在面試的時候化解了很多面試官的刁難問題。它是 DT 時代的關鍵技術,包含了太多大神的心血和智慧,深入理解,不僅是 Java 與程式設計的提升,而且提高架構與系統設計的能力。抓蛇抓七寸,對於 Hadoop 一樣,其中關鍵的元件有分散式檔案系統、分散式計算框架、非關係型資料庫、分散式協調服務等,而各個元件都有其核心架構與關鍵技術點,認清架構,由廣度到深度,各個擊破。理論加實踐,建議在 Debug 中探索工作機制。

最後推薦一些技術資源, lintcode 、 leetcode 刷題必備(適可而止,不同於北美 FLAG 和一些 startup 公司,國內的面試往往需要很多應用技術,也就是專案), July 的 csdn 部落格 “ 結構之法 演算法之道 ” ,資料庫可以學習淘寶沈詢的視訊和部落格,作業系統( Linux 程序管理與排程、核心同步、虛擬檔案系統、記憶體管理、程序地址空間等),推薦網站: 牛客網, 七月演算法,部落格線上, ImportNew 、 ITeye 、 InfoQ 、 csdn 、部落格園, IBM developerWorks 等。另外,可以關注技術大牛的微博,開開眼界也是極好的,例如寒冬 winter 、淘寶沈詢、淘叔度、淘寶丁奇、阿里正祥、淘寶正明、淘寶褚霸、 RednaxelaFX 、 2gua 等大神。

對於非應屆生,有足夠的時間,修煉內功,切忌基礎不牢就模仿武功招數。對於應屆生,時間不多,可以刷刷題,多看看面經,磨磨槍。

寫在最後 : 2015 年寒假前,決心 coding ,棄硬投軟,自學扎哇,劍指阿里,寒冬盛夏,枕書而眠,得償所願。所以, i can you can ,每個人努力都能找到好工作!