寫在前面: 2015 年 7 月初。參加阿里巴巴校招內推, 8 月 15 日拿到研發project師 JAVA 的 offer 。個人專業並非計算機,也沒有在互聯網公司實習過,僅僅有一些學習和麪試心得,供你們參考。阿里巴巴 90% 以上使用 Java ,因此如下的分享也基於 Java 崗,若有表達不許確的地方。請提出建議和指正。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 框架嗎。爲何不作成分佈式的。怎樣並行爬取多個站點,怎樣設計並行任務分發器,爬來的數據怎樣存儲,索引,檢索,你認爲還有什麼可以改進的。爬蟲屬於搜索引擎框架的一部分,面試爬蟲很是easy給本身挖一個 「 系統設計 」 的坑。 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. 問我有什麼問題(問了關於阿里project師文化的問題)
1) 自我介紹要抓住重點。與崗位匹配。比方面技術。社團經歷可以不說(但是 hr 面很是實用)。 2) 二面問的技術內容很是少。感受是可以看到一面成績,進行簡單的確認。因此,筆試或一面表現好,對後面的面試很是有幫助。 3) 當面試官再也不關注你的過去,而是和你談將來談理想的時候。基本代表面試經過了。好比,問職業規劃和你對阿里的想法等問題的時候。
>知乎上稱阿里的 hr 是神存在,掌握生殺大權。多少英雄好漢歷經殘酷的技術面,卻倒在 hr 面前,但是從我的的經歷,感受 hr 姐姐仍是很是 nice 的。 40 分鐘,並無自我介紹,而是直接轟炸。1. 暑假在學校作什麼呢 2. 平時喜歡閱讀什麼書 3. 問我俱樂部主席的工做,有什麼收穫(社團主席。是 hr 的興趣點) 4. 課題是什麼,遇到什麼困難。你是怎樣解決這個問題的 5. 爲何不從事本專業相關工做 6. 你專業是電磁場,爲何要轉行 7. 你是一個什麼樣的人 8. 你的缺點 9. 之前最大的打擊 10. Web 框架不會怎麼辦,之後工做的內容和你現在研究的不一樣怎麼辦 11. 職業規劃 12. 假設能去杭州家人容許嗎 13. 向我介紹了所應聘部門 14. 問我有什麼問題
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 。每個人努力都能找到好工做。
原文連接:http://bbs.byr.cn/#!article/Job/1728920 (轉自牛客網)