回顧
我們總是在為了生活奔波,漸漸的迷失在了其中,但我們必須清楚的知道自己從哪裡來,才能知道未來要到哪裡去
入行之後遇到的一些事情
畢業出社會,開始 Android 開發之旅
畢業之後,進入了一家小公司;在這家公司工作的幾年,技術棧一直沒怎麼變過,就是傳說中的 SSH,也不是說 SSH 不好,Spring 不是也火到現在麼,問題是:“大部分工作都在做增删查改,而且是并發量、資料量都非常低的增删查改”
更可怕的是,在這種環境中工作久了,可能會讓你有一種自己很厲害的錯覺,因為資料量很少,幾百萬幾千萬的資料量,加個索引就查詢的很快了,隻要自己知道如何避免索引失效,就已經打敗了 90% 的隊友,因為你的眼界已經變窄了
我自認為還算是個努力的人,一直是機關中技術能力的“佼佼者”,但是我心裡知道,我這點兒能力拉到外面去根本是個渣渣
“心存敬畏,放寬眼界”,我一直這麼告訴自己
跳出目前的圈子,尋求更好的發展
當年我在這個小公司已經爬到了一個技術工程師的位置,但我并不為此感到自豪,我想要去往大城市發展,隻有這樣才能學到更為前沿的技術,于是我準備跳槽,但當我準備跳槽的時候我意識到自己的一個很大的問題:時常感覺自己沒有準備好,面試的時候會不會被鄙視,我還是刷一個月的題再去吧;一個月之後,感覺不懂的東西更多了,然後繼續準備
因為這樣,我也錯過了很多的機會,有朋友内推我去面試,我後來都已各種理由推掉了;後來我發現,很多朋友也有這樣的問題,老是怕面試過不了,是以幹脆沒有去面試
是以必須要在“平時做好準備,機會是不會等到你做好準備了才來,看到機會就上!就算沒做好準備,也硬着頭皮上去試試”
後來我終于下決心必須跳槽了,最後面試了幾家公司,通過率還算不錯;有時候被面試官秒殺,有時候秒殺面試官
進入騰訊;開始架構師進階之路
經過自己的努力,終于面試通過,拿到了 offer ;在進入騰訊之後,我被配置設定到底層開發的業務中,也是由此打開了自己的眼界
騰訊有着多款億級使用者的産品,複雜的業務常常會遇到各種意想不到的問題,這些問題需要深入底層,對安卓系統的整個架構都比較熟悉,才能夠解決
上面這張圖想必大家都看過,是 Google 官方提供過一張經典的架構圖,其中每一層都包含大量的子子產品或子系統
之前我始終停留在一二層,不得寸進;但在進入騰訊這一時期,對此終于有了縱深的實踐經驗
比如幫業務方解決一個記憶體問題,除了要了解記憶體名額監控方式,還要知道分析不同類型記憶體使用的工具及基本原理,最後知道是哪裡出了問題後,還要想如何進行體系化的工具,降低學習成本,提升排查效率
問題驅動是非常好的學習方式;每次幫助業務解決一個新問題,我的知識庫都會多一個點,這讓我非常興奮;之前不知道學來幹什麼的 Linux 程式設計、Android 虛拟機,終于在實際問題中明白了使用場景,學起來效率也高了很多
對 Android 開發未來發展方向的展望
Android 發展至今,已成為全球使用者量最廣泛的移動作業系統,手機行業競争異常激烈,經過幾番洗牌,國内手機廠商主要是華為、小米、 OPPO、VIVO 四大公司,并且随着移動網際網路增長見頂,國内 Android 開發的需求也越來越少;那麼Android 的未來在哪裡呢?
目前,Android 在應用層次的發展已經見頂,未來的發展主要集中在人工智能和 5G 結合的産業,智能汽車、智能家居、 IOT都将是 Android 發展的廣闊市場;但就目前人工智能的奇點還沒到來,技術還處于前期階段,一旦奇點來臨将會爆炸式發展,或将重新定義生活方式
汽車的智能化和網際網路化是未來一大趨勢, Google 這兩年确實在汽車領域發力,Android Auto 在過去一年的使用者增長250%。天生的移動特性加上越來越多的網際網路服務需求,汽車需要一個具備多種感覺能力的系統,或将成為是繼手機、電視後 Android 的下一重點開拓領域
那麼我們應該如何跟上這一未來趨勢呢?
首先我們可以通過上面 滴滴出行 的 招聘資訊 中了解到車載開發所必須要學會的就是 Framework 源碼 的學習;而 Framework 源碼 中又包含了 Handler 、Binder 、AMS、WMS 等 重點學習對象
那麼我們就必須要有一個好的學習方向,這樣才能在其中不走彎路,進而精通 Framework ,以此來抓住這一新時代的機遇;是以在這裡,我分享一份由騰訊大佬所整理的一份Framework 學習筆記;有需要學習筆記的朋友:可以私信發送 “筆記” 即可 直達擷取;希望大家看完之後能給大家一些幫助
内容展示如下:
《Framework 學習筆記》
《Android 車載工程師必修知識》
- 開發汽車媒體應用
- 建構車載媒體應用
- 配置應用的清單檔案
- 建立媒體浏覽器服務
- 啟動播放控制
- 支援語音操作
- 實作注意力分散預防措施
- 建構 Android Auto 即時通信應用
- 導入 Android X 核心庫
- 聲明 Android Auto 支援
- 建構車載導航和地圖注點應用
- 測試 Android 車載應用
- 分發 Android 車載應用
完整版PDF文檔擷取方式:私信發送 “筆記” 即可免費擷取
《應用程式與 AMS 的通訊實作》
- 從應用程式程序到管理者程序
- 應用程式程序向管理者程序發送消息
- 從管理者程序到應用程式程序
- 管理者程序向應用程式程序發送消息
- 使用者程序接收消息
《應用程序與 WMS 的通訊實作》
- WindowManagerImpl & WindowManagerGlobal
- ViewRootImpl
- 從應用程序到管理者程序
- 從管理者程序到應用程序
《應用程序之間的通訊實作》
- 服務端編寫 AIDL 檔案、編寫 Service、聲明 Service
- 用戶端編寫 AIDL 檔案、綁定服務,并調用
- IBinder實作原理
完整版PDF文檔擷取方式:私信發送 “筆記” 即可免費擷取
《Handler機制之Thread線程》
- 線程概念
- Android線程的實作
- 線程的阻塞
- 關于線程上下文切換
- 關于線程的安全問題
- 守護線程
- 線程的記憶體
《Binder機制之Linux基礎》
- Linux介紹
- 開源發展實驗室和Linux基金
- 核心态與使用者态
- 為什麼要有使用者态和核心态
- 紅黑樹 資料結構設計
- Linux的跨程序通信(IPC)概述
- Linux的跨程序通信詳解
- Linux的幾種跨程序通信的方式的比較
完整版PDF文檔擷取方式: 私信發送 “筆記” 即可 直達擷取
既然選擇了程式員這個行業,那麼你一定要做好充足的準備;要想在人前顯貴,背後所付出的辛勞和汗水就是必須的
Android 架構師之路還能漫長,與君共勉