本文首發公衆號:只是說說話,請掃描關注二維碼關注後續系列更新面試
跟以前同樣,打開內外,看到系統提示已經入職恰好一年,心裏思緒萬千,內心依舊懷揣着進入阿里當時的新鮮感與興奮感。算法
筆者2016年畢業,畢業於國內某普通二本學校,大學作的是Android客戶端開發工做,畢業後從事Java服務端開發,17年中公司不景氣,因而決定跳出溫馨圈,以入職阿里巴巴爲目標,從零開始從新認識服務端,重新開始Java後端的學習,期間面試並拿下小米、美團、餓了麼、阿里、百度等一系列公司的offer。後端
本系列將從知識儲備、簡歷、崗位策略、內推方式、面試技巧、面試流程、背調、阿里工做等方方面面,絕不保留的分享筆者在衝刺面試阿里巴巴的準備過程以及入職阿里巴巴後的所思所想,但願對讀者有一些微小的幫助。性能優化
BAT的後端崗位,對社招都有必定的經驗要求,以筆者所在的A爲例,通常2-3年的童鞋的定級基本處於P6-到P6+之間,A對於P6的定義主要是:微信
一、主導產品,實現用戶價值。數據結構
二、準確理解需求,能有產品設計方案。多線程
三、溝通協調能力,把控產品落地。併發
從上面的要求能夠看到,對於2-3年工做經驗開發的童鞋,通常要求你能hold得住壓力、實現得了需求、產品能穩定落地。所以有足夠的知識儲備以及項目經驗是任何一家公司是否選擇你的重要條件。框架
在知識儲備方面,筆者當時內心很虛,由於在公司作的基本都是CRUD的操做,雖然代碼寫了很多,功能寫了很多,可是能拿出手的項目屈指可數。爲了彌補知識儲備的不足,筆者花了許多時間,從許多渠道整理而且獲取了Java後端開發的相關知識,然後來的實踐證實,這些起到了舉足輕重的做用。分佈式
筆者知識儲備的渠道包括:關注比較有價值的微信公衆號,簡書或者掘金上面的技術分享,公司內網的技術文章分享以及經過閱讀書籍構建起比較完整的複習知識樹。
筆者認爲,2-3年的Java工做經驗的童鞋應該具有如下的工做技能:
A、基礎
Java基礎:面向對象、集合、反射、多線程、鎖、註解、併發(CAS、樂觀鎖、ABA、ThreadLocal、synchronized、Java內存模型、線程池、引用類型)、IO、JVM、JMM等等。
存儲基礎:MySQL、NOSQL、分庫分表、SQL優化、索引、分佈式主鍵、事務隔離級別ACID、數據結構、最左匹配等。
B、Spring
事務、IOC、AOP、循環依賴、Spring Cloud、Spring父子容器、動態代理(Java、cglib)等。
C、中間件基礎
消息隊列:消息隊列使用、重發解決、冪等設計、分佈式鎖、消息堆積、消息模型。
相關中間件實現原理:掌握一個RPC框架實現原理(例如服務發現、治理、路由、優雅下線、限流降級等等)、掌握一個MQ中間件的實現原理(例如Kafak設計方案、高可用、高併發、重複消費、消息延遲等等)、掌握經常使用的中間件實現原理(例如MyBatis、ZK、Redis等等,在此不一一列舉。)
高併發解決經驗:如何根據場景設計高併發方案、降級限流、分佈式事務、分佈式鎖、數據一致性等等。
D、問題排查以及性能優化
線上緊急問題處理流程、處理方式(好比FullGC、OOM、進程掛了等等)
性能優化:性能瓶頸、慢SQL、負載太高、CPU太高等等緊急問題處理方案。
E、計算機基礎、算法
計算機基礎
算法(算法是很是重要的,怎麼描述重要程度呢,筆者面試經過美團、餓了麼、小米、阿里所有都要手寫或者在線算法)
當時本身也是摸索了許久,按照筆者的愛好程度前後排序分別是:書籍、慕課網視頻、掘金、簡書、微信公衆號。其中書籍跟慕課網視頻是筆者主要的學習方式,在準備過程當中,筆者針對知識點,先去查找相應的書籍,而後先啃書。下圖是筆者當時讀的一部分書籍,另一部分找不到了。
在配合Java相關的書籍後,筆者又從慕課網獲取了許多Java的課程,課程很是多,以下圖,能夠根據我的須要獲取。 配合上面高強度的整理後,瞭解最新的Java技術、業界服務端技術等也是一個面試的亮點,因此筆者當時也裝了簡書、掘金、關注一些微信公衆號天天閒暇時間學習。此部份內容歡迎掃描下方二維碼關注微信公衆號查看(掘金不容許發佈此部份內容)。
若是您認爲本篇文章能給您起到必定的啓發做用,請點擊右上角關注微信公衆號(只是說說話),後續會連載簡歷準備、面試表達、阿里面試流程、各大公司面試過程、入職阿里一年我學習到了什麼等等系列連載,敬請關注。