前言
在現在的人才市場上,其實有相當一部分的開發者都不是科班出生的。尤其是Android程序員,基本上都是自學的,能在大學里接受正規系統的Android開發學習是很難的,很少有學校會專門教這個。
(以上都是我的個人經驗,不知道現在的大學教育是什么樣子)
以筆者自身為例,14年會計本科畢業,編程都是大學的時候自學的,Android更是完全的零基礎自學。但是畢業后,我幸運的拿到了百度雲的Android開發崗offer,現在已經是一名Android高級研發工程師。
下面就來分享一下我這一路走來的心路歷程吧。

開門篇:萬丈高樓從地起
知識儲備要求:
- 算法分析和數據結構:
查找,排序,DP,圖論,數論,棧,堆,二叉樹等 - 操作系統:
進程線程,中斷機制等 - 計算機網絡:
五層架構,各種協議等 - 編譯原理:
理解語言的結構,詞法分析,語法分析等,對你后面掌握語言有幫助 - 數據庫:
簡單了解一下各種范式,android開發對其要求不算高
學習方法推薦:
推薦書籍:
《算法導論》,然后再來一本數據結構的書基本夠了。
《深入理解計算機系統》
《計算機網絡:自頂向下方法》
配合刷題:
刷題很重要,他可以讓你對算法還有其他的知識點理解更深。同時現在基本上正規規點的公司筆試也這樣,也算是為以后的進軍大廠做准備了。

入門篇:萬變不離其宗,書中自有黃金屋
知識儲備要求:
- Java 語言基礎
雖說現在是kotlin first,但是市面上的APP基本上還是用的Java語言寫的。不過,大家也可以選擇先學kotlin。
學習方法推薦:
書籍+檢索+上機實操
這個階段還是推薦大家以看書為主。現在網上的視頻資料也有很多,但是都比較零散,基本上都沒有什么系統,也沒什么體系,與其找一集看一集去耽誤時間,不如直接從書本上手,慢慢打造一個完整的知識體系。
當然,不是說視頻就不能看,大家在看書學習的過程中如果遇到了不懂的地方,或者上機操作出現問題的時候,大家可以就自己這個特定的問題去搜索視頻學習(學會在有用的網站檢索有用信息也是成為一名優秀的Android程序員的必備技能)。
推薦書籍:
《 JAVA核心技術(卷1)》
這本書可以理解成一本工具書,對於Java的講解面面俱到,在你不記得相關的知識的時候需要拿出來,鞏固學習。
《Effective java 中文版(第2版)》
進階學習,在了解Java的基礎的前提下,開始學習更多知識點。
《 Android開發入門教程 》
編程語言熟悉后開始向Android過渡。
檢索:
VPN + google
我當時學習的時候行業還不夠成熟,網上能夠找到的有用信息很少,現在關於Android的分享已經很多了,基本上大部分的問題都能檢索到答案。大家可以去CSDN、掘金或者玩安卓里面搜索答案或者自己提問。
個人覺得最好的地方就是:

初級篇:實踐是檢驗真理的唯一標准
知識儲備要求:
- Java 語言基礎
雖說現在是kotlin first,但是市面上的APP基本上還是用的Java語言寫的。不過,大家也可以選擇先學kotlin。 - Android 開發知識基礎
- 設計模式
學習方法推薦:
看書 + 逛博客 + 看視頻
(當你入門后,你會有更強的鑒別能力,這個階段可以較多的接觸視頻教學了,比較快速)
推薦書籍:
《深入理解java虛擬機》
《Java編程思想》
《java並發編程實戰》
《第一行代碼》
《android開發藝術探索》
《android編程權威指南》(工具書,當字典用)
《大話設計模式》
《head first:Java》
《重構》
《android源碼設計與實戰》
逛博客:
GitHub、掘金、CSDN、高質量的微信公眾號
看視頻:
現在網上的免費資源很多,但是都比較零散,沒什么條理和系統,這邊推薦B站幾個比較實用的學習視頻。
- 《史上最詳細的android studio安裝方法!!!(多圖詳解)》(圖文)
- 【Android開發入門系列 [一]】| 從UI開始上手Android開發!
- 【Android開發入門系列 [二]】| Android 築基之 Fragment!
- 【Android開發入門系列 [三]】| Android 築基之四大組件(必知必會)
- 【Android開發入門系列 [四]】| Android 流行框架
- 【Android開發入門系列 [五]】| Android基礎之數據存儲
- 【Android開發入門系列 [六]】| Android基礎之數據共享
- 【Android開發入門系列 [七]】| Android基礎之多媒體技術
- 【Android開發入門系列 [八]】| Android基礎之項目發布
- 【Android開發入門系列 [九]】| Android基礎之git命令講解
- 【Android開發入門系列 [十]】| MVP項目實戰

進階篇:理論和實踐的雙重進階
其實成為初級android工程師並不困難,但是目前初級android工程師已趨於飽和,因為這些年學習Android開發,想做這行的人實在是太多了。
這樣的大環境可能會讓一些正在走這條路或者想要走這條路的人感到並不容易。
但是想要脫穎而出也不是非常困難,只要你認真的學習,跟着下面的線路走。
知識儲備要求:
- 架構師築基必備技能:
深入Java泛型+注解深入淺出+並發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO - Android高級UI與FrameWork源碼:
高級UI晉升+Framework內核解析+Android組件內核+數據持久化 - 360°全方面性能調優:
設計思想與代碼質量優化+程序性能優化+開發效率優化 - 解讀開源框架設計思想:
熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack - NDK模塊開發:
NDK基礎知識體系+底層圖片處理+音視頻開發 - 微信小程序:
小程序介紹+UI開發+API操作+微信對接 - 進階大廠加分技術:
Flutter進階,跨平台開發技術

針對這些知識點,我手頭上也准備了不少的電子書和筆記,這些筆記將各個知識點進行了系統性的,有條理的總結。
資料開源分享。有需要的朋友可以掃描【下方二維碼】直接找我免費獲取全套資料。

- 架構師築基語言基礎

- 設計思想解讀開源框架

- 360°全方位性能調優

- Android框架體系架構

- NDK模塊開發(音視頻開發系列)

- Flutter學習進階

- 微信小程序開發

資料開源分享。有需要的朋友可以掃描【下方二維碼】直接找我免費獲取全套資料。

最后
技術提升需要一定的過程,腳踏實地走好每一步,先定好一個小目標,然后去實現。
希望大家好好利用這份資料,最終達成所願。
升職有壓力,我知道,我也知道很多程序員的學歷都在碩士以下,有不少朋友,還在用本科學歷,和那些名校碩士生,在職場死磕。
但是,我想說,牛逼的學歷固然重要,但也不要讓學歷成為你自我設限,然后放棄努力的理由!
技術,該進階的還是要進階,搞開發,是憑借技術端的飯碗!

