Android 年薪百萬的進階攻略圖,阿里大牛耗時一年三個月最佳總結

思維導圖


Android 年薪百萬的進階攻略圖,阿里大牛耗時一年三個月最佳總結


系統啟動過程

這一部分是 Android 系統從按下電源鍵開始,然後到展示開機界面,再到展示桌面之前的一個過程。瞭解下面相關進程的工作流程,會對 Android 系統有一個整體的概念,是一個從 0 到 1 的過程,對深入研究 Android 系統內部機制有很大幫助。

  • init 進程
  • 瞭解 init 進程創建與啟動的流程。
  • Zygote 進程
  • 瞭解 Zygote 進程創建的流程,以及 fork 的過程。
  • system_server 進程
  • 瞭解 system_server 進程啟動流程,工作流程。
  • ServiceManager 瞭解 ServiceManager 的啟動流程,以及 ServiceManager 在系統中的作用。

內核技術

這一部分是計算機操作系統相關的原理,也是計算機相關專業的一門必修課程,推薦學習下相關知識。

  • CPU 調度
  • 進程管理
  • 文件系統
  • 內存管理

通信方式

  • Binder

Binder 是 Android 系統中特有的一種 IPC 通信方式,建議閱讀 Binder 相關的源碼,與深入越好,理解 Binder 工作的原理,瞭解服務的註冊、獲取、死亡通知的流程。

  • Handler

Handler 是 Android 系統中線程間通信的方式,已經在 Android 高級工程師部分說過了。這裡一定要閱讀下源碼瞭解內部的運行機制。

  • Socket

Socket 是系統中常見的一種 IPC 通信方式,Socket 的應用範圍很廣,在進程間通信、網絡通信都會用到,建議深入瞭解下。

  • Pipe

Pipe(管道)是 Linux 系統中常見的一種 IPC 通信方式,建議深入瞭解下工作原理。

  • signal

signal(信號量)是系統中常見的一種 IPC 通信方式,建議深入瞭解下工作原理。

核心服務

  • Activity、Service、Broadcast、ContentProvider瞭解四大組件啟動流程,理解生命週期回調過程,瞭解工作原理。
  • ActivityManagerService(AMS)理解 ActivityManagerService 工作流程,以及與 Activity 工作的流程。
  • WindowManagerService(WMS)理解 WindowManagerService 工作流程,以及與 ActivityManagerService 和 Activity 工作的過程。
  • View、Window、Surface理解 Activity、Window、View 之間的關係,瞭解 View 渲染機制。
  • Surface、SurfaceFlinger理解 View 與 Surface 之間的關係,瞭解 SurfaceFlinger 工作流程,理解 View 渲染的過程。
  • PackageManagerService(PKMS)理解 PackageManagerService 工作流程,瞭解 Apk 安裝與卸載過程。
  • PowerManagerService(PMS)理解 PackageManagerService 工作流程,瞭解屏幕喚醒、滅屏的過程,並理解 WeakLock 機制。
  • InputManagerService(IMS)理解 InputManagerService 工作流程,理解事件的創建流程、事件分發機制,ANR 觸發原理。
  • AudioFlinger理解 AudioFlinger 工作流程。
  • AssertManager理解 Apk 安裝包中資源管理的過程。

異常處理

可以從源碼的角度分析異常產生的原因,定位異常,以及處理。

  • Watchdog
  • ANR
  • Java Crash
  • Native Crash
  • 卡頓

Java 虛擬機

  • 內存模型

瞭解 JVM 內存模型,包括堆、棧、方法區、運行時常量池等。

  • 類加載機制

瞭解類加載時機,類加載的過程,理解類加載器雙親委派模型。

  • 垃圾回收機制

瞭解垃圾回收的原因,理解對象生命週期,瞭解垃圾回收算法。

動態化

  • Android Gradle Plugin

通過閱讀 Android Gradle Plugin 源碼,理解 Gradle 構建項目的過程,瞭解插件開發過程。

  • VirtualAPK、Tinker

通過閱讀 VirtualAPK 源碼,理解熱修復、插件化的原理。

  • Hook 技術

設計模式與架構

  • 熟悉六大 OOD 設計原則
  • 熟悉常見的設計模式,可以熟練的運用在項目中
  • 理解 MVC、MVP、MVVM 的思想以及區別
  • 項目架構設計與重構
  • 項目組件化設計與開發

軟技能

  • 拓展技術廣度,其他領域的技術學習
  • 團隊管理和指導新人

總結

以上就是 Android 資深(專家)工程師 的基本知識點,如果在高級工程師部分基礎很牢,進階到資深(專家)是很容易的。這個級別的知識點不僅僅需要對 API 熟練應用,更重要的是對內部的運行機制的深入理解。

我們可以發現很多的知識點都是對 Android 系統源碼的閱讀來獲取的,閱讀源碼是一個很痛苦的過程,也是必須經歷的一個過程。

在閱讀源碼的時候建議多注重對整體流程的把握,而不是深入細節不能自拔。畢竟我們主要工作還是開發 App,閱讀源碼是為了更好的理解內部運行機制。

專家除了具有紮實的技術深度以外,還有一定的技術廣度,以及不錯的架構設計能力。除了技術,軟技能也是很重要的部分。比如如何管理團隊,帶帶新人,寫寫 PPT,吹 NB 啥的。

已經達到了資深(專家)的開發者,以後的學習路線跟自己的職業規劃有很大關係。這個級別技術也不再那麼重要,畢竟都是專家了,大家都很 NB,怎麼還能讓人手把手教呢?!

以下方面大家可以參考下:

  • 維護一個公眾號,增加業內影響力
  • 考慮出一本書,增加業內知名度
  • 開源一個 NB 的項目,為開源貢獻一份力量
  • 轉型做產品或者管理
  • 換一個領域繼續深入研究

一般達到資深(專家)的開發者需要 3 - 5 年左右,本科畢業的學生年齡一般在 22 週歲左右,那麼達到資深(專家)最快也得 25 週歲了。這裡我們會遇到一個職業上的危機 —— 30 歲危機。

隨著年齡的越來越大是繼續做技術?還是轉型做管理呢?Android 也沒啥可研究的了,還是換其他領域呢?這是一個值得思考的問題,我還沒有這個經歷(歲數還沒到)不敢妄下定論,哈哈。

這裡分享下網上的一份關於各大廠 Android 級別的薪資參考圖(如有侵權,請聯繫我刪除)。


Android 年薪百萬的進階攻略圖,阿里大牛耗時一年三個月最佳總結

我看到網上很多消息都說今年互聯網寒冬什麼什麼的,其實每年都會說寒冬。互聯網總共也就發展了十幾年,從 2000 年初的諾基亞到現在的智能手機時代,也就十幾年的時間。誰有會預料的下一個十年之後會是什麼樣的呢?

由於前幾年大量培訓出來的開發者(這裡只是說下客觀事實,沒有貶低的意思),整個市場湧入大量的初級、中級開發者,所以對於新人來說的確不好找工作了,因為競爭的人多了。

自己沒能力就說沒能力,怎麼你到哪兒,哪都大環境不好,你是破壞大環境的人啊?—— 趙本山

作為開發者我們最好的準備就是知識的儲備,如果我們努力學習達到了高級甚至更高,目前需求量還是很大的。目前我瞭解到的 Android 領域專家級別的工程師也沒有多少,大家可以留意統計一下。

關於 Android 進階的學習指南就已經完結了,歡迎大家繼續關注,其他方面的技術分享,及個人感悟。


分享到:


相關文章: