🔥 2021 最新Android知識體系

0. 背景

構建一個屬於本身的知識體系,可以讓咱們學到的知識體系化.讓本身清楚哪塊是本身的知識盲區,哪塊已經構建起根基.而後根據實際狀況,有針對性的進行模塊學習.讓本身成爲一個合格的Android工程師.前端

平時看博客或者學知識,學到的東西比較零散,沒有獨立的知識模塊概念,並且學了以後很容易忘.因而我創建了一個本身的筆記倉庫 (一個我長期維護的筆記倉庫,感興趣的能夠點個star~你的star是我寫做的巨大大大大的動力),將平時學到的東西都歸類而後放裏面,須要的時候呢也方便複習.過了段時間,我以爲這樣仍是不夠好,因而我最近花了點時間,整理了一下Android中的常見知識,畫了一張思惟導圖.更清晰地認識本身的知識邊界到底在哪裏,哪些東西還不足.python

圖片看不清楚朋友的能夠訪問圖片源文件,或者查看幕布筆記連接: Android知識體系最新git

此知識體系呢只是一個參考,你們能夠根據本身的實際狀況進行增刪(先將筆記保存到幕布,而後就能夠進行修改了).而後進行查漏補缺,提高本身~github

1. 計算機基礎

1.1 計算機網絡

1.1.1 計算機網絡概述

  • 網絡七層協議
  • TCP/IP四層模型
  • 底層協議
  • 底層設備

1.1.2 應用層

  • HTTP協議(⭐⭐⭐)
  • DHCP協議(⭐⭐⭐)
  • NAT

1.1.3 傳輸層(⭐⭐⭐)

  • TCP協議
  • UDP協議

1.1.4 網絡層

  • IP協議
  • ICMP協議

1.2 操做系統(⭐⭐⭐)

1.2.1 操做系統基本功能

  • 進程管理
  • 做業管理/文件管理
  • 存儲管理/設備管理

1.2.2 Linux系統

  • 內存管理
  • 進程管理
  • 文件系統
  • 常見命令操做

1.2.3 補充

  • 自旋鎖/互斥鎖/讀寫鎖/條件變量/共享文件
  • 消息隊列/管道/信號量
  • 操做系統的用戶態與內核態
  • 上下文切換成本
  • 進程,線程與協程

2. Java基礎(⭐⭐⭐)

2.1 集合原理

  • ArrayList
  • Vector
  • Stack
  • LinkedList
  • HashMap
  • Hashtable
  • TreeMap
  • LinkedHashMap
  • HashSet
  • TreeSet
  • CopyOnWriteArrayList
  • ConcurrentHashMap
  • LinkedBlockingQueue
  • SynchronousQueue
  • SparseArray
  • ArrayMap

2.2 其餘

  • 面向對象
  • 設計模式
  • 反射
  • 泛型
  • 註解

3. Java併發

3.1 線程基礎

  • 實現多線程
  • 啓動線程
  • 中止線程
  • 線程的6種狀態
  • 各類各樣的鎖
    • 悲觀鎖和樂觀鎖
    • 共享鎖和獨佔鎖
    • 公平鎖和非公平鎖
    • 可重入鎖和非可重入鎖
    • 可中斷鎖和非可中斷鎖
    • 自旋鎖和非自旋鎖
    • 偏斜鎖/輕量級鎖/重量級鎖
    • JVM對synchronized鎖的優化
  • wait/notify/sleep/join等重要方法
  • 守護線程,優先級等屬性
  • 線程安全
  • Future獲取運行結果
  • Fork/Join模式
  • CountDownLatch
  • CyclicBarrier
  • Semaphore
  • Condition
  • Phaser
  • 重排序
  • 原子性
  • 內存可見性
  • CAS原理
  • AQS框架

3.2 其餘

3.2.1 併發容器

  • Vector/Hashtable
  • ConcurrentHashMap
  • CopyOnWriteArrayList
  • 阻塞隊列
  • 非阻塞隊列
  • ConcurrentSkipListMap

3.2.2 atomic包,6種原子類

  • 分類
  • 原子類與鎖
  • 原子類與volatile

3.2.3 ThreadLocal

  • 使用場景
  • 原理

3.3.4 線程池

  • 優勢
  • 參數
  • 分類
  • 執行任務流程
  • 拒絕策略
  • 正確關閉線程池
  • 線程池複用原理

4. JVM虛擬機

  • 內存區域
  • 內存模型
  • 內存分配回收策略
  • Java對象的建立、內存佈局和訪問定位
  • GC: 引用計數及可達性分析,垃圾回收算法,G1及ZGC
  • 類加載機制
  • 雙親委派模型
  • 編譯器優化: 方法內聯,逃逸分析
  • 虛擬機相關: HotSpot及JIT,Dalvik,ART及AOT
  • JVM執行方法
  • JVM實現反射
  • JVM實現泛型
  • JVM實現異常
  • JVM實現註解

5. 數據結構與算法

5.1 數據結構

  • 隊列
  • 數組
  • 鏈表
  • Hash表
  • 二叉樹
  • 基礎排序算法
  • 字符串操做

5.2 算法

  • 分治算法
  • 動態規劃
  • 貪心算法
  • 分支限界法

5.3 刷題

6. Android基礎

6.1 核心知識點

6.1.1 四大組件

  • Activity
  • Service
  • BroadcastReceiver
  • ContentProvider

6.1.2 佈局和控件

  • RelativeLayout
  • FrameLayout
  • LinearLayout
  • ConstraintLayout
  • Button
  • TextView
  • RecyclerView
  • ......

6.1.3 自定義View/ViewGroup

  • onMeasure
  • onLayout
  • onDraw
  • onTouchEvent
  • dispatchTouchEvent
  • 自定義屬性

6.1.4 動畫和手勢

  • View動畫
  • 屬性動畫
  • layoutAnimation視圖動畫
  • 手勢檢測(GestureDetector)
  • 縮放手勢檢測(ScaleGestureDecetor)

6.1.5 網絡

  • 請求網絡
  • 解析數據

6.1.6 圖片加載

  • 本地圖片
  • 網絡圖片
  • 壓縮圖片
  • 多圖列表
  • DiskLruCache

6.1.7 Handler

  • Looper
  • Message
  • MessageQueue
  • 內存泄漏
  • ThreadLocal

6.1.8 Android各版本新特性

  • Android5.0
  • Android6.0
  • Android7.0
  • Android8.0(O)
  • Android9.0(P)
  • Android10.0(Q)
  • Android11.0(R)

6.1.9 其餘

  • adb經常使用命令
  • 文件和數據庫
  • 異步線程池
  • Resources

6.2 開源庫使用

  • Retrofit/OKhttp
  • RxJava
  • Glide
  • 註解框架
  • Jetpack

6.3 性能優化

6.3.1 快-流暢的體驗

  • 佈局優化
  • 繪製優化
  • 內存優化
  • 啓動優化
  • 其餘

6.3.2 穩-穩定

  • 避免內存泄露
  • 避免崩潰

6.3.3 省-省電/流量

  • 使用JobScheduler調度任務
  • 使用懶惰法則

6.3.4 小-安裝包小

  • apk構成
  • 包體優化

7. Android進階

7.1 核心知識點

7.1.1 多進程

  • Binder
  • AIDL
  • Messenger

7.1.2 Activity難點

  • onSaveInstanceState()和onRestoreInstanceState()
  • intent-filter匹配規則
  • 生命週期
  • 啓動模式
  • Activity啓動過程
  • App啓動過程

7.1.3 Service難點

  • startService流程
  • bindService流程

7.1.4 BroadcastReceiver難點

  • 註冊/發送/接收工做原理

7.1.5 ContentProvider難點

  • ContentProvider啓動過程

7.1.6

  • View繪製
  • 事件分發
  • 消息隊列
  • AsyncTask原理
  • RemoteViews
  • Window和ViewRootImpl

7.2 開源庫原理

  • OkHttp
  • Retrofit
  • RxJava
  • Glide
  • LeakCanary
  • GreenDao
  • ARouter

7.3 Gradle

  • 編譯
  • 混淆
  • 簽名
  • Groovy
  • Gradle構建流程
  • GradlePlugin
  • Gradle構建優化
  • App構建過程
  • 差別化打包

7.4 初級架構

  • 設計模式
  • MVC,MVP,MVVM

7.5 JNI

  • JNI基礎
  • NDK基礎

7.6 動態化

7.6.1 前置知識

  • Android打包流程
  • Java字節碼
  • GradlePlugin
  • TransformAPI
  • ASM

7.6.2 熱修復:nuwa&Tinker

  • 經典-64k問題
  • dex分包
  • MultiDex優化
  • findClass原理
  • QQ空間熱補丁方案
  • Nuwa應用層實現
  • NuwaGradle

7.6.3 插件化:VirtualAPK

  • 加載類
  • 資源訪問
  • 生命週期管理

7.7 編譯插樁

  • AOP
  • ASM

7.8 Framework

7.8.1 系統服務

  • Zygote啓動
  • Android系統啓動
  • ServiceManager啓動及工做原理

7.8.2 應用進程

  • 啓動流程
  • 啓用Binder機制
  • Application初始化流程
  • Context

7.8.3 UI體系

  • 顯示原理
  • UI線程啓動
  • 屏幕刷新機制
  • surface
  • vsync

7.8.4 進程通訊

  • Binder
  • IPC通訊流程
  • Binder對象跨進程傳遞
  • OneWay機制

7.8.5 線程通訊

  • 消息隊列
  • 消息傳遞機制
  • Handler消息延遲實現
  • IdleHandler原理
  • 消息屏障
  • ThreadLocal原理

7.8.6 其餘

  • 跨進程傳遞大圖片
  • 四大組件啓動原理

8. 領域專家

8.1 性能優化方向

  • 穩定性優化
  • 啓動速度優化
  • 繪製優化
  • 內存優化
  • 包體積優化
  • 網絡優化
  • IO優化
  • 存儲優化
  • 耗電優化

8.2 基礎架構方向

  • Android工程實踐
  • Gradle自動化構建
  • 編譯插樁技術
  • Android架構
  • Android熱修復
  • Android插件化
  • Android核心源碼

8.3 NDK、音視頻

  • C
  • C++
  • JNI基礎
  • 編譯原理與語法基礎
  • Linux基礎
  • 熱修復
  • Gif圖實現
  • 音視頻基礎
  • ffmpeg
  • WebRTC
  • opengl
  • vulkan
  • opencv

8.4 大前端

8.4.1 前端基礎

  • HTML
  • CSS
  • JavaScript

8.4.2 Flutter(⭐⭐)

  • Dart入門
  • Flutter入門
  • 開發
  • 工程管理
  • 線上運維
  • 發佈
  • 測試調試

8.4.3 其餘

  • ReactNative
  • 小程序
  • 性能優化

9. 其餘Android相關

9.1 Kotlin(⭐⭐)

9.1.1 基礎部分

  • 內置類型
  • 類型初步
  • 表達算式
  • 函數進階
  • 類型進階

9.1.2 高級部分

  • 泛型
  • 反射
  • 註解
  • 協程

9.2 Python(⭐)

  • 基礎
  • 函數
  • 高級特性
  • 函數式編程
  • 模塊
  • 面向對象編程
  • 錯誤,調試,測試
  • IO編程
  • 進程和線程經常使用內建模塊
  • 經常使用第三方模塊
  • 網絡編程
  • 數據庫
  • 異步IO

寫了個python腳本,將幕布思惟導圖轉成markdown並標上序號. 有興趣的能夠在這裏看源碼算法

參考資料

感謝以上幾位大佬數據庫

相關文章
相關標籤/搜索