首頁>科技>

一.關於Android的前景

不斷地也聽見很多人在談做Android是否還有前途、Android研發在走下坡路了、Android的工作太難找了,對於這些其實我的看法很簡單,現在真的還沒到說Android開發已經無路可走的地步,當然未來怎樣我無法預判。

現在各大公司其實都很缺Android研發(中高階),不斷的在招人,就拿很多一線網際網路來說,別說來面試的人了,就簡歷都拿不到太多,需要花很多時間去找簡歷。

所以,對於有Android開發經驗的同學,更多應該想想怎麼往深探索,而不是一味想著換方向,不管換到哪個方向,都會面對從初級到高階到資深再到專家的時間點。所以我認為正確的職業規劃應該是金字塔形,核心競爭力一定要紮實!

二.知識點詳細清單

對於現在的Android及移動網際網路來說,我們需要掌握的技術,我做了一個清單:

泛型原理丶反射原理丶Java虛擬機器原理丶執行緒池原理丶註解原理丶序列化Activity知識體系(Activity的生命週期丶Activity的任務棧丶Activity的啟動模式丶View原始碼丶Fragment核心相關丶service原理等)程式碼框架結構優化(資料結構丶排序演算法丶設計模式)APP效能優化(使用者體驗優化丶適配丶程式碼調優)熱修復丶熱升級丶Hook技術丶IOC架構設計NDK(c程式設計丶C++丶JNI丶LINUX)如何提高開發效率?MVC丶MVP丶MVVM微信小程式HybridFlutter

三丶解析知識點,為什麼要學

1.資料結構和演算法

資料結構和演算法其實是分開的東西,我們需要先掌握各種資料結構,再去加深演算法,資料結構和演算法其實也屬於基礎,但是它現在越來越重要,所以我就單獨拿出來說了。

資料結構怎麼深入同樣我也推薦大家去看清華或者浙大《資料結構》公開課,特別是清華的,值得反覆研究。

至於演算法,首先要做的就是動手,LeetCode上直接幹!

第二階段就是要總結各種演算法的思想和套路,像遞迴、動態規劃等這些演算法都是有套路的,在LeetCode上也有按資料結構和演算法分類的篩選,大家可以針對性練習和總結。

當然,對於一個Android程式設計師,能做到每天在LeetCode上刷題就非常不錯了,所以一定要堅持,等你堅持到一定的時間,你會發現你越來越遊刃有餘,我從18年底開始在LeetCode上刷題,目前已經刷了200多道了,小米的面試也非常注重演算法,還要能寫。

而且對一些特別注重演算法的公司,演算法這塊的考核非常嚴苛,對,就是嚴苛,而不是嚴格。

2.設計模式

設計模式中包括了設計原則,其實對於Android開發人員來說,設計模式就那23種,知道並了解這些設計模式是第一個階段,僅僅是到這個階段是不夠的,一般面試也不會問你某個設計模式的概念,而會讓你具體的說說你對某一種設計模式的深入了解和使用,它的優缺點,所以,第二階段就是要運用它們,其次要和Android原始碼中運用到設計模式地方進行結合學習。

例如建造者模式,Andoird中的Dialog建立就使用到了,還有像單例模式、介面卡模式、觀察者模式等等都是在Android中非常常用的設計模式,也是在面試中出現頻率很高的。

3.語言學習開發語言

Android應用是由Java語音進行開發的,SDK也是由Java語言編寫的,所以我們要學習Java語言。另外,雖然說Kotlin語言也得到Android官方的熱推,但是Kotlin也是編譯成了Java語言在執行的。對於Android開發來說。

只要SDK沒有用Kotlin重寫,那麼Java語言都是需要學習的。而且Android apk的後臺伺服器程式大概率是Java語言構建,所以學習Java是一個必然。

那麼Java中那些東西是我們Android中比較相關的稍微比較難的Java基礎幾乎是一個門檻,像泛型丶多執行緒丶反射丶JVM丶JavaIO丶註解丶序列化等等。

4.APP開發框架知識

這塊知識是現今使用者最多的,我們稱之為Android2013-2016年的技術。但是,即使是這樣的技術,很多開發者也往往因為網上很多copy程式碼的習慣而導致對這塊的使用的程式碼熟悉而陌生,熟悉的是天天和它們打交道天天在複製,陌生的是天天打交道卻沒有深入研究過他們,要學習原始碼,模仿原始碼,然後在hook原始碼,這樣才能說懂這塊的知識。

5.App效能優化

一個app的效能好不好我們需要從兩個層面分析:

1、從寫程式碼的時候就注意,讓自己的程式碼是高效能高可用的程式碼,這個過程是書寫高效能程式碼

2、對已經成型的程式碼通過工具檢測程式碼問題,通過檢查到問題來指導我們進行程式碼的刪改這個過程被稱為調優

這裡提供一份效能優化方面的學習思路給大家:

那如何寫出高效能的程式碼呢?

需要我們具備深厚的程式碼功底,這就是程式碼的基礎,如:資料結構達到可以根據應用場景寫出符合當前場景的特殊結構,比如google針對Android平臺特徵研發了SparseArray代替HashMap.另外,對常用的演算法也有自己獨到的見解

6.NDK模組開發

音視訊丶高清大圖片丶人工智慧丶抖音直播等這些年與使用者緊密相關,與我們生活最相關的技術一直都在尋找最終的技術落地平臺,以前是Windows系統,而現在是移動系統了。而移動系統中Android比例又是最大的。所以NDK可以說是必備要學習的,除此之外,音視訊的編解碼技術流媒體協議,ffmepeg,c,c++,JNI,linux都是音視訊開發必備技能。而且OpenCV \\OpenGI這些又是影象處理必備。

關於NDK模組開發的學習思路:

7.如何提高開發效率?

工欲善其事必先利其器,如何提高開發效率,很多開發者在開發中由於gradle不會用導致載入程式碼非常耗時,這些都是你的工作成本的浪費。還有就是git的使用也可以幫助我們管理好我們的程式碼,這個非常關鍵,因為這個工具可以讓我們修改的程式碼不會因為錯誤操作而導致丟失。另外,對移動開發者我們至少需要知道如何抓取網路包。其中,最常用的stetho就是一個非常好用的可以抓取網路包的工具。

8.混合開發

混合開發的flutter現在已經逐漸成了主流的混合開發框架,另外由於阿里系的強大存在,導致阿里系的公司都在用Weex混合架構,這些都是一個Android工程師開拓視野,走向未來必不可少的基本技能的。

Flutter學習思維導圖:

四.我們和大牛之間有多少距離?

跟很多人一樣,剛畢業時我覺得作為程式設計師,只要努力,加上少許天賦便可以獲得一些成績。

工作一段時間後,對自己和其他人的認識也越來越清晰,逐漸的發現程式設計師之間的差距或許比人和猴子之間的差距還大,接受這個事實這讓我鬱悶了很久。

再過一段時間,發現自己已經能夠客觀的評價自己的能力,也意識到了距離並不是那麼重要,只要想辦法跑的更快,就足夠了。

五.寫在最後

不論遇到什麼困難,都不應該成為我們放棄的理由!

很多人在剛接觸這個行業的時候或者是在遇到瓶頸期的時候,總會遇到一些問題,比如學了一段時間感覺沒有方向感, 個人認為android開發者在兩到三年後會出現這種現象.原因和下述基本一致:

經濟差 需求減少開源庫豐富 導致開發門檻逐步降低,老的比如2.3相容 等等經驗 放到現在完全沒用android由於相容等問題 門檻比ios率高 加上還有智慧家居 framework開發等等 會比ios出現飽和的時間拖後

不過大家可以參考上面的建議,或者走音視訊,高階Android開發工程師,或者轉向後臺,前端開發,時代在演進,我們也去多思考下,為我們的將來做計劃!

願與各位堅守在Android開發崗位的同胞們互相交流學習,共同進步!

在這裡我也分享一份自己收錄整理的Android學習PDF+架構視訊+面試文件+原始碼筆記,還有高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習

如果你有需要的話,可以點贊+評論+轉發,關注我,然後私信我【進階】我發給你

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 眾望所歸2020Adobe AI 終於來了!功能詳解附安裝教程