在以前的文章裏我提到過,2017年我實現了一個小目標,畢業三年加入阿里。面試
聽上去好像挺厲害,挺光鮮,可是實際上並不那麼容易,在這背後有不少我本身摸索和努力的故事。算法
在這裏我想分享一些個人經驗,送給那些跟我同樣,沒名校背景沒大廠背景,可是想進阿里(或其餘大廠),又有點迷茫不知該如何前進的人。編程
其實在進阿里以前,我也挺迷茫,心裏有一些謎團一直困擾着我,好比阿里招人標準是什麼?,本身距離這個標準有多少差距?那時候一直不知道,就好像置身於沙漠之中,殊不知道往哪裏走。這時候,找到方向最爲關鍵。(不少人跟我那時候同樣迷茫,由於很多人問過我,到底怎麼樣才能加入阿里。)網絡
當時我問了幾個在阿里的朋友:數據結構
我問:要進阿里是什麼標準啊?ide
朋友答:社招的話通常P6起招,三年工做經驗。學習
我又會問:P6是什麼?搜索引擎
這時候每每獲得的回答就不同了。google
這裏普及一下,每一個公司都有職別定級系統,阿里也是,技術崗以 P 定級,通常校招 P5,社招 P6起。翻譯
之前我入職淘寶的title是『資深無線開發工程師』是 P6級別, 那時候 P6還分 高級 與 資深,如今都統一成高級了。
那 P6 的標準究竟是什麼呢?
其實還挺難說清,這個不像是考試的分數定級那樣清晰,到了60分就是及格。
在個人理解裏,一句話歸納就是:擁有獨立負責某個或多個模塊的開發工做的能力。(說得再白話一點,就是老闆放心你一我的負責某個或多個模塊的開發工做)
聽着好像仍是很抽象,別急,我嘗試着把這個能力拆分了一下,包括但不限於:
專業能力
解決問題的能力
學習能力
若是這幾項能力達標或突出,我以爲就能夠負責多個模塊的開發工做了,也意味着進阿里,技術問題不大。
那麼咱們能怎麼去提高本身達到目標呢?限於篇幅,我着重講怎麼提高專業能力。
計算機專業要學習的內容很是多,專業能力包含不少,光Android還不夠,還有好比數據結構、算法、Linux、網絡編程、計算機原理等等等等等等,因爲我作的是 Android,那麼這裏就偏向 Android 來說解了。
因爲開源的精神以及互聯網的偉大,咱們可以不費吹灰之力使用世界上頂尖的三方庫,好比很火的 RxJava、EventBus、Retrofit、OkHttp 、Glide 等等等等。只要添加一行依賴,就能起飛,有一種本身掌握了全世界最牛逼的技術的錯覺。
我見過很多人,也看到很多 人的Github 的庫裏寫着 MVP+RxJava+Glide+Dagger 等等相似的內容,他們可能一線開源庫用得很六,可是一旦問及原理,可能就一臉茫然,說不太上來。
這其實就是停留在使用階段的表現。
你要知道,一個庫再牛逼,這個牛逼是屬於做者的,而不是你。
站在面試官的角度講,這麼多人都會用,又憑什麼選你呢?對吧?!
這時候若是你懂一些原理,那你就能比別人更優秀一些了。
那麼,怎麼去深刻理解原理呢?閱讀源碼!
(退後,我要裝 X 了!)
其實所謂的原理,全都寫在源碼裏面,毫無保留。
有的人一聽看源碼就會慌,不知所措,代碼那麼多,怎麼看啊?
其實閱讀源碼也是有不少訣竅的,這裏分享幾點心得:
首先要會用。你要知道這個庫是幹什麼的,掌握它基本的使用方法;
有目的性。針對某個功能有目的的去挖掘,這樣就不會在茫茫源碼中迷失方向;
不須要看完全部細節。有的人閱讀源碼愛鑽牛角尖,非要把每個小細節都搞清楚,以致於看了一天可能都沒看明白主幹是什麼。
是否是有點道理?好比 EventBus ,你發送個 Event 怎麼就傳遞到了訂閱的地方?帶着這麼個小問題有目的的去看,會輕鬆不少。
閱讀源碼確實不簡單,可是不要着急,從簡單的源碼開始,慢慢提高,學會抽絲剝繭,層層遞進,逐漸培養閱讀源碼的習慣與能力。
相信我,學會看源碼,對專業能力的提高有巨大的幫助。
在平時保證完成工做的狀況下依然要保持學習,作不到天天學習,也要作到每週學習,擴大知識面,加深深度。
技術的發展很是快,要跟上得不斷持續的學習,這很重要。
說實在的,這個時代,已經不缺乏學習資料了。可是呢,資料也是有好有壞的,衆所周知,你用 google 搜跟 某度 搜到的資料會有很大的差異,因此第一步,把 google 做爲默認搜索引擎。
官方資料 跟別人的二手資料,差異也是很大的。
這裏不是說全部別人寫的資料都是差的都是不值得看的,而是說其實別人可能也是看了官方的資料,通過本身的理解加工輸出一個資料,而這個加工過程可能刪減了部份內容,也可能扭曲/誤解了官方的意思,以致於你看到的時候可能變了味。
所要儘可能去看一手資料,它能讓你學到最基本、最全面、也是最有用的知識,更況且,如今 Android 官方的文檔 視頻 越作越好,甚至都作了中文翻譯,還有什麼藉口不看?
前面我既讓你看官方的資料,又讓你去看源碼,那麼光看就夠了嗎?
顯然不是,紙上得來終覺淺。
學習,要作到有輸入有輸出,這樣才能更好地把知識掌握在腦子裏。
輸入就是那些資料,源碼等各類知識,那麼輸出是什麼?對於開發者來講輸出能夠是筆記,能夠是博客,也能夠是代碼。
做爲過來人,勸你一句,若是時間容許的話,嘗試維護個博客吧!
當你開始嘗試針對某個知識點寫文章的時候,你可能會有以下經歷:
我明明已經懂了,爲何解釋不清楚?(其實還沒真的懂)
這個知識點好像涉及到了其餘東西,我去看看,而後發現不懂的還有不少;
寫得多了,原本星星點點散佈在大腦各個角落的地方的零碎的知識點,在某個時刻忽然就被串了起來,造成一張了知識圖譜。
這是我以前寫博客的真實經歷,本身以爲懂了,跟 把知識說清楚讓別人懂,感受是兩個層次的事。在寫做的過程當中會強迫你本身把知識點組合起來,用通俗的語言表達你的想法,其實要求你對知識有更透徹的理解,這也能促使你變得更專業。
另外,寫博客其實也是對外展現本身的機會,寫得好,會有阿里員工或獵頭找上門的,幫你推薦工做的。
好的博客或 Github 也是一塊能夠敲開阿里大門的磚。
要加入阿里,你可能還須要學會如何寫好簡歷,找個靠譜的阿里員工幫你內推,另外可能還須要一些運氣,但這都是後話了,最最重要的前提就是自身的技術實力要過硬。
2019年伊始,全新的開始,相信不少人都給本身定了個小目標,但願個人這些經驗可以幫到你實現其中的某一個,祝願全部人能有個更加精彩美好的2019。
新的一年,要加油鴨!!!衝鴨!!!