2015阿里巴巴校招內推Java崗位面經(jīng)分享
寫(xiě)在前面: 2015 年 7 月初,參加阿里巴巴校招內推, 8 月 15 日拿到研發(fā)工程師 JAVA 的 offer 。我的專(zhuān)業(yè)并非計算機,也沒(méi)有在互聯(lián)網(wǎng)公司實(shí)習過(guò),只有一些學(xué)習和面試心得,供大家參考。阿里巴巴 90% 以上使用 Java ,所以下面的分享也基于 Java 崗,如有表達不準確的地方,請提出建議和指正。
7 月上旬投遞簡(jiǎn)歷, 7 月 27 號至 29 號連續三天,每天一面,在 8 月 15 日正式收到校招 offer 。今年阿里依舊火熱,看簡(jiǎn)歷編號,內推階段大約有 6w 份簡(jiǎn)歷,而據 hr 告知實(shí)際通過(guò)比例略大于 1% ,所以競爭還是很激烈。
一面 :
時(shí)間約 50 分鐘,注重基礎,廣度加深度,刨根問(wèn)底。
自我介紹熟悉 java 、 jvm 、 Python 、 Hadoop( 包括 HDFS 、 MapReduce 、 HBase 等 ) 、優(yōu)化算法等。所以,針對這些來(lái)提問(wèn)。大概只記得這么多,后面想起來(lái)再補充。
1. Hashtable,HashMap,ConcurrentHashMap 底層實(shí)現原理與線(xiàn)程安全問(wèn)題(建議熟悉 jdk 源碼,才能從容應答)
2. MapReduce 輸入輸出格式
3. Mapper 和 Reducer 的功能
4. MapReduce 的工作機制,Shuffle過(guò)程
5. HDFS 工作原理,如何實(shí)現 HA
6. 節點(diǎn)間通信機制
7. DataNode 如何冗余備份
8. Java 的引用類(lèi)型有哪幾種
9. 抽象類(lèi)和接口的區別
10. 設計模式會(huì )哪些
11. 工廠(chǎng)方法模式的優(yōu)點(diǎn)(低耦合、高內聚,開(kāi)放封閉原則)
12. 數組多大放在 JVM 老年代(不只是設置 PretenureSizeThreshold ,問(wèn)通常多大,沒(méi)做過(guò)一問(wèn)便知)
13. 老年代中數組的訪(fǎng)問(wèn)方式
14. GC 算法,永久代對象如何 GC , GC 有環(huán)怎么處理
15. 誰(shuí)會(huì )被 GC ,什么時(shí)候 GC
16. 如果想不被 GC 怎么辦
17. 如果想在 GC 中生存 1 次怎么辦
18 緩存設計與 LRU
19. hashCode() 與 equals() 生成算法、方法怎么重寫(xiě)
20. 關(guān)系型和非關(guān)系型數據庫區別
21. HBase 原理與工作機制,如何保證 HA ,如何保證宕機數據可恢復
22. 數據庫處理大數據的優(yōu)化
23. 索引的分類(lèi)
24. 模糊查詢(xún)性能
25. 排序算法與時(shí)空復雜度(快排為什么不穩定,為什么你的項目還在用)
26. 逆波蘭計算器
27. Hoffman 編碼
28. 查找樹(shù)與紅黑樹(shù)
29. Spring 框架等
30. 項目
31. jvm 如何分配直接內存, new 對象如何不分配在堆而是棧上,常量池解析
一面總結 :
面試官竟然主動(dòng)對我說(shuō)謝謝 … 驚我一身冷汗,不過(guò)立刻意識到肯定過(guò)了。
1) 面試問(wèn)題主要根據自我介紹和項目,所以,對寫(xiě)在簡(jiǎn)歷上的內容,一定要理解的清清楚楚,也不要為了簡(jiǎn)歷看起來(lái)牛比而羅列經(jīng)歷,尤其是自己淺嘗輒止的項目。
例如,建議不要輕易說(shuō)自己寫(xiě)過(guò)爬蟲(chóng),因為沒(méi)那么簡(jiǎn)單,一般會(huì )追問(wèn)懂 Scrapy 框架嗎,為什么不做成分布式的,如何并行爬取多個(gè)網(wǎng)站,如何設計并行任務(wù)分發(fā)器,爬來(lái)的數據如何存儲,索引,檢索,你覺(jué)得還有什么可以改進(jìn)的。爬蟲(chóng)屬于搜索引擎框架的一部分,面試爬蟲(chóng)很容易給自己挖一個(gè) “ 系統設計 ” 的坑。
2) 阿里注重基礎、潛力和興趣,而一些初創(chuàng )公司往往更注重立即上手的技能,這一點(diǎn)在面試中有所體會(huì )。
3) 阿里注重基礎,但是僅有基礎是不夠的。
項目經(jīng)歷與實(shí)習經(jīng)歷可以加分,一線(xiàn)互聯(lián)網(wǎng)公司的實(shí)習經(jīng)歷可以鍍金,由于師門(mén)嚴禁實(shí)習,因此需要項目彌補,除去研究的課題多目標優(yōu)化算法, Hadoop 是個(gè)“大寶貝”,它包含了 java 、 jvm 、設計模式、大數據處理框架、分布式計算、 HA 、負載均衡、主備一致性等,也包含分布式文件系統、分布式計算框架、非關(guān)系型數據庫的實(shí)現等,幾乎面試官問(wèn)的任何場(chǎng)景的問(wèn)題,都可以在 Hadoop 中找到解答,所以, Hadoop 是我最大的加分項,彌補了自己零實(shí)習的弱點(diǎn)。
至于 Hadoop 需要掌握到什么程度,才能應對面試?原理上,可以回答上面提到的點(diǎn),操作上,自己可以實(shí)現淘寶的數據魔方的 Demo 。
4) 面試官的問(wèn)題不會(huì )了怎么辦?個(gè)人不建議直接說(shuō)不會(huì ),而是要 “ 扯 ” 。
例如,問(wèn)我 Spring 、 iBatis 等框架,而我一點(diǎn)不懂,但我說(shuō)會(huì ) Hadoop ,你有什么業(yè)務(wù)需求,我幾乎都可以在 Hadoop 找到實(shí)現。問(wèn)我 MySQL 數據庫,我也不精通,但我會(huì )告訴他 HBase 如何解決。
5) 關(guān)注面試的公司,關(guān)注阿里的開(kāi)源技術(shù)與自主框架,例如,問(wèn)到 jvm 的時(shí)候,我會(huì )向面試官闡述淘寶在 jvm 方面的優(yōu)化工作,以及 jvm 在 Hadoop 方面的優(yōu)化。有興趣的同學(xué)可以關(guān)注淘寶 “ 莫樞 ” ,后離職加入 Oracle 、 Azul ,在虛擬機方面做了很多出色的工作,詳情關(guān)注: ITeye 的高級語(yǔ)言虛擬機專(zhuān)欄。
6) 回答問(wèn)題時(shí),切忌使用 “ 應該 ” 、 “ 好像 ” 、 “… 吧 ” 等不確定性詞匯,因為搞技術(shù)還是需要嚴謹的,面試官不想招聘一個(gè)什么都靠猜測的同事。
二面 :
時(shí)間約 23 分鐘,感覺(jué)是交叉面,是其他部門(mén)的主管,聽(tīng)語(yǔ)氣感覺(jué)級別在 P8 以上。
首先也是自我介紹,針對自我介紹和項目,開(kāi)始提問(wèn)。
1. IO 流,字節流 --> 字符流
2. 遞歸讀取文件夾下的文件,代碼怎么實(shí)現
3. HashMap 與線(xiàn)程安全問(wèn)題
4. rehash
5. Web 框架
6. 項目與 Hadoop
7. 問(wèn)我未來(lái)的職業(yè)規劃
8. 問(wèn)我有什么問(wèn)題(問(wèn)了關(guān)于阿里工程師文化的問(wèn)題)
二面總結 :
1) 自我介紹要抓住重點(diǎn),與崗位匹配,比如面技術(shù),社團經(jīng)歷可以不說(shuō)(但是 hr 面非常有用)。
2) 二面問(wèn)的技術(shù)內容很少,感覺(jué)是可以看到一面成績(jì),進(jìn)行簡(jiǎn)單的確認。所以,筆試或一面表現好,對后面的面試很有幫助。
3) 當面試官不再關(guān)注你的過(guò)去,而是和你談未來(lái)談理想的時(shí)候,基本表明面試通過(guò)了。例如,問(wèn)職業(yè)規劃和你對阿里的想法等問(wèn)題的時(shí)候。
hr 面 :
知乎上稱(chēng)阿里的 hr 是神存在,掌握生殺大權,多少英雄好漢歷經(jīng)殘酷的技術(shù)面,卻倒在 hr 面前,但是從個(gè)人的經(jīng)歷,感覺(jué) hr 姐姐還是很 nice 的。
40 分鐘,并沒(méi)有自我介紹,而是直接轟炸。
1. 暑假在學(xué)校做什么呢
2. 平時(shí)喜歡閱讀什么書(shū)
3. 問(wèn)我俱樂(lè )部主席的工作,有什么收獲(社團主席,是 hr 的.興趣點(diǎn))
4. 課題是什么,遇到什么困難,你是如何解決問(wèn)題的
5. 為什么不從事本專(zhuān)業(yè)相關(guān)工作
6. 你專(zhuān)業(yè)是電磁場(chǎng),為什么要轉行
7. 你是一個(gè)什么樣的人
8. 你的缺點(diǎn)
9. 曾經(jīng)最大的打擊
10. Web 框架不會(huì )怎么辦,以后工作的內容和你現在研究的不同怎么辦
11. 職業(yè)規劃
12. 如果能去杭州家人同意嗎
13. 向我介紹了所應聘部門(mén)
14. 問(wèn)我有什么問(wèn)題
hr 面總結 :
1) 一定要坦誠, hr 閱人無(wú)數,更別說(shuō)阿里的 hr 了。
2) 面試官是在考察適合自己團隊的人選,而面試者,也是在尋找適合自己的團隊和 manager ,這是雙向選擇的過(guò)程,所以自己的心態(tài)要和面試官持平。記住,面試官是在尋找團隊伙伴,不是在對你考試,這種心態(tài)有助于減輕緊張的心情。
3) 社團經(jīng)歷對自己的成長(cháng),看不見(jiàn)摸不著(zhù),但在時(shí)間管理、情緒控制、團隊管理等方面,有很大的收獲。程序猿的工作壽命并不長(cháng),當技術(shù)過(guò)硬,開(kāi)始帶團隊的時(shí)候,相信一定會(huì )感謝自己在社團的經(jīng)歷。
推薦書(shū)目 :
限于師門(mén)不允許實(shí)習,所以只能在學(xué)校學(xué)習干貨,提升內功。一直相信,理論決定上限,技能決定下限。修煉好內功,學(xué)習各種武功招式便輕而易舉。
《 Java 編程思想》, Java 業(yè)界神書(shū),不建議入門(mén)閱讀,相比較,《 Java 核心技術(shù) I 》非常適合入門(mén)。
《 Java 核心技術(shù) I 》,如果不想啃《 Java 編程思想》,這本是絕佳的入門(mén)神器。
《 Effective Java 第二版》,別猶豫了,深入 Java 必讀,因為 James Gosling 也讀,務(wù)必打好基礎再讀,否則會(huì )打擊學(xué)習 Java 的信心。居家旅行,催眠必備。
《 Java 解惑》, Effective Java 作者又一力作,解析 Java 的各種坑。
《 Java 并發(fā)編程實(shí)戰》,玩 Java ,怎么能不懂并發(fā),并發(fā)的世界很奇妙。
《 Java 特種兵》,淘寶謝宇所著(zhù),洋洋灑灑,也是進(jìn)階讀物,不可入門(mén),作為補充參考。
《深入理解 Java 虛擬機》,周志明所著(zhù),國內業(yè)界良心之作,建議參考 ITeye 高級語(yǔ)言虛擬機專(zhuān)欄,也可與《 Java 性能優(yōu)化權威指南》參考來(lái)看。
《 Java 性能優(yōu)化權威指南》,深入理解 Java 性能優(yōu)化細節, James Gosling 力薦。
《設計模式之禪》,一個(gè)個(gè)生動(dòng)的例子,讓枯燥的設計模式也變得有趣,不建議初學(xué)者直接看 GOF 的《設計模式》。
《 Hadoop 權威指南》,掌握 Hadoop 必看,不用多說(shuō)。
《 Hadoop 技術(shù)內幕》之 HDFS 、 MapReduce 、 YARN ,參考與補充。
《 Python 核心編程》,對 Python 的講解深入淺出,雖然基于 Python2.5 ,但是核心思想不變。Python有很多庫,建議閱讀官方文檔,里面有詳細解釋和示例代碼。
《計算機網(wǎng)絡(luò )》,網(wǎng)絡(luò )基礎入門(mén)必備。
《大型網(wǎng)站技術(shù)架構》,簡(jiǎn)單實(shí)在,理解大型網(wǎng)站架構,學(xué)習 Hadoop 之后才看發(fā)現架構上很多相似之處。
《 Linux 內核設計與實(shí)現》,拋開(kāi)了 Linux 內核紛繁的源碼,給出了關(guān)鍵的架構與實(shí)現,與《深入理解 Linux 內核》互補,重點(diǎn)推薦。
《深入理解 Linux 內核》,幾乎所有關(guān)鍵的疑問(wèn),都可以在里面找到解答,需要時(shí)查閱,千萬(wàn)不要從第一頁(yè)開(kāi)始讀。
《程序員面試金典》,注意不是 “ 寶典 ” ,涉及算法、對象設計、概率智力題等,面試神器。
《劍指 offer 》,刷題必備,面試利器。
《編程之美》,你會(huì )發(fā)現各大公司的算法題好像似曾相似。
《大話(huà)數據結構》、《算法》、《算法導論》,算法是我的弱項,以我的教訓建議算法長(cháng)期準備。
實(shí)際上,上面的書(shū)目我表示也只看了 50% 不到,大神的作品需要反復研讀,比如《 Effective Java 》。
個(gè)人體會(huì ), Hadoop 是個(gè)“大寶貝”,尤其對于我這樣零實(shí)習,少項目的非科班學(xué)生,在面試的時(shí)候化解了很多面試官的刁難問(wèn)題。它是 DT 時(shí)代的關(guān)鍵技術(shù),包含了太多大神的心血和智慧,深入理解,不僅是 Java 與編程的提升,而且提高架構與系統設計的能力。抓蛇抓七寸,對于 Hadoop 一樣,其中關(guān)鍵的組件有分布式文件系統、分布式計算框架、非關(guān)系型數據庫、分布式協(xié)調服務(wù)等,而各個(gè)組件都有其核心架構與關(guān)鍵技術(shù)點(diǎn),認清架構,由廣度到深度,各個(gè)擊破。理論加實(shí)踐,建議在 Debug 中探索工作機制。
最后推薦一些技術(shù)資源, lintcode 、 leetcode 刷題必備(適可而止,不同于北美 FLAG 和一些 startup 公司,國內的面試往往需要很多應用技術(shù),也就是項目), July 的 csdn 博客 “ 結構之法 算法之道 ” ,數據庫可以學(xué)習淘寶沈詢(xún)的視頻和博客,操作系統( Linux 進(jìn)程管理與調度、內核同步、虛擬文件系統、內存管理、進(jìn)程地址空間等),推薦網(wǎng)站: ?途W(wǎng), 七月算法,博客在線(xiàn), ImportNew 、 ITeye 、 InfoQ 、 csdn 、博客園, IBM developerWorks 等。另外,可以關(guān)注技術(shù)大牛的微博,開(kāi)開(kāi)眼界也是極好的,例如寒冬 winter 、淘寶沈詢(xún)、淘叔度、淘寶丁奇、阿里正祥、淘寶正明、淘寶褚霸、 RednaxelaFX 、 2gua 等大神。
對于非應屆生,有足夠的時(shí)間,修煉內功,切忌基礎不牢就模仿武功招數。對于應屆生,時(shí)間不多,可以刷刷題,多看看面經(jīng),磨磨槍。
寫(xiě)在最后 : 2015 年寒假前,決心 coding ,棄硬投軟,自學(xué)扎哇,劍指阿里,寒冬盛夏,枕書(shū)而眠,得償所愿。所以, i can you can ,每個(gè)人努力都能找到好工作!
【2015阿里巴巴校招內推Java崗位面經(jīng)分享】相關(guān)文章:
阿里巴巴2016校招筆試題11-02
網(wǎng)易2015校招筆試題11-01
2015阿里校招運營(yíng)專(zhuān)員筆試題08-21
阿里巴巴Java筆試題11-09
2016廣發(fā)秋招面試真題及面經(jīng)10-02
京東2015應屆生校招筆試題11-02
2015阿里校招研發(fā)工程師筆試題08-13