![](https://upload-images.jianshu.io/upload_images/16595031-0d47e72a46c11681.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)面試
## 寫在前面
記得我大二時「遊手好閒」地自學Android並跟了老師作項目,到大三開始在目前的公司實習,至今畢業已有幾年多,學習Android已經六、7年多了!但總感受知識點很零散,而且不夠深刻,遇到瓶頸,因此有了這文章。算法
本文是我對自身的**Android編程技能的總結、思考和檢討,意在系統地、深刻地學習Android的重難點,使本身的能力上一個臺階。下面我將會羅列Android知識體系中比較高頻、重要或難懂的知識點**,並將來會基於此文章列出的知識點一個一個學習研究,並寫成一系列的文章,當作本身的學習總結筆記,也但願童鞋們和我一塊兒學習和交流~編程
> 說明:本文不是面試經驗談,而是自我總結。我也不打算像網上不少文章那樣只列出點,說出結果,而沒說緣由,而後死記硬背,知其因此然而不知其然。而我是打算對下面的知識點深刻學習,並對每一個知識點從源碼或舉例來寫成文章,從而即知其然又知其因此然。我也不知可否作到,但我會堅持努力,看成立個flag吧~後端
![](https://upload-images.jianshu.io/upload_images/16595031-5ce2ed442162281e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)數據結構
## 正文 Android進階重難點架構
#### Javaide
- 集合:使用場景、源碼閱讀
- GC機制
- 虛擬機
- 對象內存分配工具
要學好Android,必需要有紮實的Java基礎(固然,如今還有Kotlin)。這裏只列出了四點,但Java的體系很是龐大,重難點固然不僅這些,列出來的是在實際項目和麪試中經常使用或常見的。學習
#### Android經常使用/重要類
- Activity
- Handler
- HandlerThread
- AsyncTask
- Binder測試
Android這幾個類在編程時是比較高頻使用的,因此我打算細讀下這幾個類的源碼。而這幾個類也是面試常常被問到的,如Activity啓動流程、Binder通訊原理等等,因此很是有閱讀價值!
#### Android基礎技術和高頻面試知識點
- View事件傳遞
- View繪製流程
- SurfaceView的使用
- IntentService替換Service的場景
- Service保活
- Android序列化方式和區別
這些知識點算是比較基礎的,但也很重要!惋惜在實際項目中不多用到,因此常常會忘了這些知識。因此打算把其寫成文章,加深本身印象。
#### NDK和JNI
提及這個我就頭疼,相信不少人跟我同樣,若是隻是調用C層接口還好,若是要寫C的代碼,就很尷尬了。但咱們不能老是逃避困難,而是迎難而上!因此我下定決心來跨過內心的這道坎了!
#### 算法與數據結構
- 隊列、棧、鏈表、有向圖
- 排序
- 查找
- 紅黑樹
在家的幾本算法書都盡是灰了... 羅列的點不難,算是須要基本掌握的吧,但我老是看了忘了,忘了又看,仍是記不得... 因此也打算寫文章加強記憶。另外,若是作應用級別的開發,掌握這幾個知識點基本是夠用的了,畢竟Java的集合也提供了排序接口。但仍是須要掌握下,畢竟不一樣算法使用到不一樣場景。
#### 插件化/熱修復
做爲Android進階必掌握的技能,這個不會都很差意思說本身的Android開發的。以前看了一個月RePlugin的源碼,感受道行還不夠。不少代碼的處理或適配看得似懂非懂,如Binder的機制等。因此這個須要大量的知識做爲支撐才能完成看懂,將來再戰!
#### 第三方優秀開源庫
- RxJava
- Glide
- OKHttp
「RTFSC (Read The F**king Source Code )」。每一個人都有本身的編程風格,若是不借鑑、不參考下別人的代碼,眼界永遠這麼小,難以進一步提高編程境界。因此閱讀他人優秀的代碼是很是有必要的!
#### Android常見的架構模式
- MVC
- MVP
- MVVM
解耦!解耦!Android的架構模式的使用重中之重無非就是解耦了。開發代碼不難,維護代碼纔是最難的。若是代碼都不少的解耦,把維護成本下降,工做效率天然提升。
#### Gradle和Groovy
相信如今大多數人都用Android Studio開發了,Gradle做爲構建工具真是很是強大,我的以爲它完成能夠取代Java的編譯期註解,有過之而無不及。由於連文件也能在編譯期做修改,很是強大,因此也很是值得學習。
#### 通用技能
- TCP/HTTP
- SQL
- 自動化測試
- 抓包
除了Android的知識點意外,還須要掌握一些通用的技能。畢竟懂多點纔有底氣跟後端懟嘛哈哈。
## 寫在最後
因爲本文羅列的知識點是根據我自身總結出來的,而且因爲本人水平有限,沒法所有說起,歡迎大神們能補充~
未來我會對上面的知識點一個一個深刻學習,也但願有童鞋跟我一塊兒學習,一塊兒進階。
**提高架構認知不是一蹴而就的,它離不開刻意學習和思考**。
**這裏,筆者分享一份從架構哲學的層面來剖析的視頻及資料分享給你們**梳理了多年的架構經驗,籌備近1個月最新錄製的,相信這份視頻能給你帶來不同的啓發、收穫。
![](https://upload-images.jianshu.io/upload_images/17537001-b37f5b4fe4ca6ddf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](https://upload-images.jianshu.io/upload_images/17537001-ebce12bf6dcfadea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](https://upload-images.jianshu.io/upload_images/17537001-a51e432087cfee45.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**領取方式:查看我主頁**
最近還在整理並複習一些Android基礎知識點,有問題但願你們夠指出,謝謝。
但願讀到這的您能轉發分享和關注一下我,之後還會更新技術乾貨,謝謝您的支持!
**轉發+點贊+關注,第一時間獲取最新知識點**
Android架構師之路很漫長,一塊兒共勉吧!