首頁>科技>

現在 Android 相關崗位薪資越來越高、漲幅越來越大。

通過職友集資料可以檢視,以北京 Android 相關崗位為例,其中 【20k-30k】 薪酬的 Android 工程師,佔到了整體從業者的 30.8%!

北京 Android 工程師「工資收入水平 」

如果你在中小型公司,其實 20K 左右,幾乎已經是個極限,薪資想繼續提升很困難。而在阿里巴巴 P7 級別的 Android 技術人員,薪資可以輕鬆達到 30K - 50K,這還不算股份和年終獎。

但成為阿里 P7 級別的程式設計師,真的難麼?其實也未必。

通過對比各大公司招聘 Android 開發的崗位需求,以及BAT/TMD等大廠 40W年薪以上的Android開發所掌握的技能,耗費3個月的時間整理出一張 系統進階導圖

其中還有很多知識點沒有展開,全部展開的話,上傳上來大家都看不清。

1、架構師築基必備技能

Android應用是由Java語言進行開發的,SDK也是由Java語言編寫,所以我們要學習java語言。另外,雖說kotlin語言得到了Android官方的熱推,但是kotlin也是編譯成了java語言再執行的。對於Android來說,只要SDK沒有用kotlin重寫,那麼Java語言是都需要學習的。

而且Androidapk的後臺伺服器程式大部分也都是java語言構建,所以學習java也是一種必然。那麼Java中哪些東西是我們Android程式設計師需要學習的呢?由於Android程式設計師習慣了CV程式碼塊,所以與Android中比較相關的稍微比較難的Java基礎幾乎都是一個門檻,像泛型,多執行緒,反射,JVM,JavaIO,註解,序列化等,都是被CV的物件,而程式設計師是不懂原理的,具體內容如大綱所示。

2、Android框架體系架構(高階UI+FrameWork原始碼)

這塊知識是現今使用者最多的,我們稱之為Android2013~2016年的技術,但是,即使是這樣的技術,Android開發者也往往因為網上Copy程式碼習慣了而導致對這塊經常“使用”的程式碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道,天天在複製這些程式碼;陌生的是雖然天天和這些程式碼打交道,但是並沒有深入研究過這些程式碼的原理,程式碼深處的內涵。所以我們需要從新的角度去分析這些知識點,深入研究他們,要學習原始碼,模仿原始碼,然後再hook原始碼,這樣才能說自己懂這塊的知識。這些都是做Android開發,做高階工程師的基礎。

3、360°Androidapp全方位效能調優

首先什麼是效能:在同一個手機裡面,同樣功能的app,哪個跑的快,哪個不卡,哪個就效能高。我們這節就是解決那些效能慢的問題:

1)我們要找到效能低的地方,並且把這些地方解決掉,這個就是效能優化;

2)我們要讓自己具備一開始寫的程式碼,它執行起來就是高效能的,所以這個就是設計思想和程式碼質

量優化。一個app的效能好不好我們需要從兩個層面努力。

第一個層面:從寫程式碼的時候就需要注意,讓自己的程式碼是高效能高可用的程式碼,這個過程是書寫高

效能程式碼;第二個層面:對已經成型的程式碼通過工具檢查程式碼的問題,通過檢查

到的問題來指導我們進行程式碼的刪改,這個過程被稱為調優。如何寫出高效能的程式碼呢?那就需要我們具備深厚的程式碼功底,這就是程式碼的基礎,如:資料結構達到可以根據應用場景寫出符合當前場景的特殊結構,比如google針對Android平臺特徵研發了sparseArray替代HashMap。另外,對常用的演算法有自己獨到的見解,leetcode上有刷個上百道題,這樣差不多可以達到精通最常用的排序查詢動態規劃等演算法的能力。再者,高效的演算法以及節省記憶體的資料結構如果配合優秀的符合應用場景的設計模式,那麼,這些就為高效能的程式碼提供了實現依據。

另外一個就是對寫好的程式碼進行調優,那麼調優的方向就是使用Profiler工具進行測試和檢查,看哪裡有效能消耗大的操作,然後分析對於程式碼的問題。調優的方向就變成了如何對記憶體調優,對耗電調優,對網路流量調優,當然,還有對啟動速度,頁面切換效果與速度,開機白屏體驗,閃屏方面的原因等進行分析和調優。最後再加上一個螢幕適配相機適配。

4、設計思想解讀開源框架

現在去很多公司面試,除了你具備基本的能夠寫一個高效能app的能力後,一般都會在自己的app裡面加一些現有的相對較666的技術,這些技術我們稱之為開源框架。

比如,我們以前木匠做一個桌子,我們需要把木頭削成木板,然後把木板拼成桌面,然後再去用同樣的方式做桌子的腿;現在,我們只需要買做好的桌子板和做好的桌子腿,然後我們就可以用他們拼接就可以自己做一個桌子了。

所以,現在開放程式碼已經不再需要你去鋸木頭了,你只需要拿著一個SDK就可以實現一個功能了,那麼這個就是我們的開源技術。那麼,這些技術一般包含熱升級,熱修復,AppInstant,強制更新,元件化路由架構Arouter,RxJava,IOC架構方法,Hook技術,圖片載入(Glide),網路訪問(Retrofit,okHttp)等等,當然,這些技術你不能只會用,你需要知道他的原理,有時候,你還需要知道如何對這些架構進行改進。

另外,非常重要的一點,Android開發者不願意接受新知識,所以對於現在Google推出的新的技術方案毫無感覺,這些都是被controlC和controlV所毒害,開源讓開發者失去了自我,失去了基本的編碼能力,失去了深入學習的信心和毅力,所以對於很多google推出的新技術好元件(GoogleI/O大會新技術),好框架已經很多人不願意去學習了這是不應該的,我們需要好好學習啊。

5、NDK模組開發

音視訊的開發,往往是比較難的,而這個比較難的技術就是NDK裡面的技術。音視訊/高清大圖片/人工智慧/直播/抖音等等這年與使用者最緊密,與我們生活最相關的技術一直都在尋找最終的技術落地平臺,以前是windows系統,而現在則是移動系統了,移動系統中又是以Android佔比絕大部分為前提,所以AndroidNDK技術已經是我們必備技能了。要學習好NDK,其中的關於C/C++,jni,Linux基礎都是需要學習的,除此之外,音視訊的編解碼技術,流媒體協議,ffmpeg這些都是音視訊開發必備技能,而且OpenCV/OpenGl/這些又是影象處理必備知識,這些都在我們課程裡面有原理級的實戰專案。

6、移動架構師專題專案實戰環節

架構師不是天生的,是在專案中磨練起來的,所以,我們學了技術就需要結合專案進行實戰訓練,那麼在Android裡面最常用的架構無外乎MVC,MVP,MVVM,但是這些思想如果和模組化,層次化,元件化混和在一起,那就不是一件那麼簡單的事了,我們需要一個真正身經百戰的架構師才能講解透徹其中蘊含的深理。

沒錯,就是帶著Android程式設計師開發小程式,我們Android程式設計師很多不會小程式,但是,他們缺需要學習小程式,那麼只要自己願意去學,去系統的規劃其實學會了也就這樣,只要你想學就一定能學的會。

8、混合開發的flutter

同樣是手機開發,為什麼要分IOS和Android?如果分IOS&Android,那麼,它一定是因為價格不同。Ios手機5K以上,Android基本在500~5000。但是對於應用開發了說,一個應用,需要開發兩套,一套IOS,一套Android,那麼,能不能只開發一套,讓他們執行在兩個平臺上呢?答案是肯定的,那就是混合開發(Hybrid)Flutter計算。

如果你能學到上面的40%那麼,找到一份自己滿意的工作肯定是不成問題的,在努把力學到了60%哪呢年薪50萬+就不是什麼難事了,知識就是力量,書中自有黃金屋,只有不斷學習才能不斷超越自己,過上想要的生活。

肯定有小夥伴會說,我說了一大堆,還不如講點實在的,到底如何學習?怎樣學習比較高效呢?接下來我會說這個問題的,大家不要急。首先下面是我的個人觀點,有不同意見的,歡迎在評論區留言哦。

有人帶>看系統的學習資料視訊>網上搜部落格找百度

1、網上搜部落格,找百度

相信有很多小夥伴學習的時候都離不開百度,為什麼?方便啊!有問題全國網民幫你回答,但是久而久之你會發現,當時問題得到了解決,下次遇到類似的情況,還是一腦袋問號。百度確實方便,但是它只能解決你當下的問題,而且並不高效。到最後就是問題越積越多。你學習的越來越累。網上找部落格也是一個道理,且不說文章多且雜,天下文章一大抄,找來找去全是類似的,而且到最後學的都是零散的知識點並不系統。所以我不是很提倡網上搜部落格,和萬事找百度。

2、看系統的學習資料視訊

資料,大家應該都蒐集過,從個個平臺,或者自己買資料,這些是很多人的學習方法,確實有效也不能全部否定,但是這樣會有一個很大的問題,就是遇到問題怎麼辦?如何去解決,找書,查百度?太低效了。有沒有好一點的方法? 這就是我接下來要說的。

3、有人帶

最後

我在以前的文章了分享了很多學習方法,怎麼去記錄學習,對,光分享了方法,如果你不去堅持和實踐,你永遠也不會進步。「古之立大事者,不惟有超世之才,亦必有堅忍不拔之志」。是的,不否認天才型的程式設計師,但是天才太少,眾人皆普通,那想成為技術大牛,就得「堅持不懈」啊!學無止盡,不斷學習,不斷超越自己,這才是硬道理。

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 總裁夫人輸了?阿里公佈處理結果,網友:贏了公道,輸了愛