移动互联网高级开发学习笔记
一.關(guān)于Android的前景
不斷地也聽見很多人在談做Android是否還有前途、Android研發(fā)在走下坡路了、Android的工作太難找了,對于這些其實(shí)我的看法很簡單,現(xiàn)在真的還沒到說Android開發(fā)已經(jīng)無路可走的地步,當(dāng)然未來怎樣我無法預(yù)判。現(xiàn)在各大公司其實(shí)都很缺Android研發(fā)(中高級),不斷的在招人,就拿很多一線互聯(lián)網(wǎng)來說,別說來面試的人了,就簡歷都拿不到太多,需要花很多時(shí)間去找簡歷。所以,對于有Android開發(fā)經(jīng)驗(yàn)的同學(xué),更多應(yīng)該想想怎么往深探索,而不是一味想著換方向,不管換到哪個(gè)方向,都會面對從初級到高級到資深再到專家的時(shí)間點(diǎn)。所以我認(rèn)為正確的職業(yè)規(guī)劃應(yīng)該是金字塔形,核心競爭力一定要扎實(shí)!
二.知識點(diǎn)詳細(xì)清單
對于現(xiàn)在的Android及移動互聯(lián)網(wǎng)來說,我們需要掌握的技術(shù),我做了一個(gè)清單:
泛型原理
反射原理
Java虛擬機(jī)原理
線程池原理
注解原理
注解原理
序列化
Activity知識體系(Activity的生命周期、Activity的任務(wù)棧、Activity的啟動模式、View源碼、Fragment內(nèi)核相關(guān)、service原理等)
代碼框架結(jié)構(gòu)優(yōu)化(數(shù)據(jù)結(jié)構(gòu)、排序算法、設(shè)計(jì)模式)
APP性能優(yōu)化(用戶體驗(yàn)優(yōu)化、適配、代碼調(diào)優(yōu))
熱修復(fù)
熱升級
Hook技術(shù)
IOC架構(gòu)設(shè)計(jì)
NDK(c編程、C++、JNI、LINUX)
如何提高開發(fā)效率?
MVC、MVP、MVVM
微信小程序
Hybrid
Flutter
三丶解析知識點(diǎn),為什么要學(xué)
1.數(shù)據(jù)結(jié)構(gòu)和算法
數(shù)據(jù)結(jié)構(gòu)和算法其實(shí)是分開的東西,我們需要先掌握各種數(shù)據(jù)結(jié)構(gòu),再去加深算法,數(shù)據(jù)結(jié)構(gòu)和算法其實(shí)也屬于基礎(chǔ),但是它現(xiàn)在越來越重要,所以我就單獨(dú)拿出來說了。
數(shù)據(jù)結(jié)構(gòu)怎么深入同樣我也推薦大家去看清華或者浙大《數(shù)據(jù)結(jié)構(gòu)》公開課,特別是清華的,值得反復(fù)研究。
至于算法,首先要做的就是動手,LeetCode上直接干!
第二階段就是要總結(jié)各種算法的思想和套路,像遞歸、動態(tài)規(guī)劃等這些算法都是有套路的,在LeetCode上也有按數(shù)據(jù)結(jié)構(gòu)和算法分類的篩選,大家可以針對性練習(xí)和總結(jié)。
當(dāng)然,對于一個(gè)Android程序員,能做到每天在LeetCode上刷題就非常不錯(cuò)了,所以一定要堅(jiān)持,等你堅(jiān)持到一定的時(shí)間,你會發(fā)現(xiàn)你越來越游刃有余,我從18年底開始在LeetCode上刷題,目前已經(jīng)刷了200多道了,小米的面試也非常注重算法,還要能寫。
而且對一些特別注重算法的公司,算法這塊的考核非常嚴(yán)苛,對,就是嚴(yán)苛,而不是嚴(yán)格。
2.設(shè)計(jì)模式
設(shè)計(jì)模式中包括了設(shè)計(jì)原則,其實(shí)對于Android開發(fā)人員來說,設(shè)計(jì)模式就那23種,知道并了解這些設(shè)計(jì)模式是第一個(gè)階段,僅僅是到這個(gè)階段是不夠的,一般面試也不會問你某個(gè)設(shè)計(jì)模式的概念,而會讓你具體的說說你對某一種設(shè)計(jì)模式的深入了解和使用,它的優(yōu)缺點(diǎn),所以,第二階段就是要運(yùn)用它們,其次要和Android源碼中運(yùn)用到設(shè)計(jì)模式地方進(jìn)行結(jié)合學(xué)習(xí)。
例如建造者模式,Andoird中的Dialog創(chuàng)建就使用到了,還有像單例模式、適配器模式、觀察者模式等等都是在Android中非常常用的設(shè)計(jì)模式,也是在面試中出現(xiàn)頻率很高的。
3.語言學(xué)習(xí)開發(fā)語言
Android應(yīng)用是由Java語音進(jìn)行開發(fā)的,SDK也是由Java語言編寫的,所以我們要學(xué)習(xí)Java語言。另外,雖然說Kotlin語言也得到Android官方的熱推,但是Kotlin也是編譯成了Java語言在運(yùn)行的。對于Android開發(fā)來說。
只要SDK沒有用Kotlin重寫,那么Java語言都是需要學(xué)習(xí)的。而且Android apk的后臺服務(wù)器程序大概率是Java語言構(gòu)建,所以學(xué)習(xí)Java是一個(gè)必然。
那么Java中那些東西是我們Android中比較相關(guān)的稍微比較難的Java基礎(chǔ)幾乎是一個(gè)門檻,像泛型丶多線程丶反射丶JVM丶JavaIO丶注解丶序列化等等。
4.APP開發(fā)框架知識
這塊知識是現(xiàn)今使用者最多的,我們稱之為Android2013-2016nian 的技術(shù)。但是,即使是這樣的技術(shù),很多開發(fā)者也往往因?yàn)榫W(wǎng)上很多copy代碼的習(xí)慣而導(dǎo)致對這塊的使用的代碼熟悉而陌,熟悉的是天天和它們打交道天天在復(fù)制,陌生的是天天打交道卻沒有深入研究過他們,要學(xué)習(xí)源碼,模仿源碼,然后在hook源碼,這樣才能說懂這塊的知識。
5.App性能優(yōu)化
一個(gè)app的西能好不好我們需要從兩個(gè)層面分析:
①從寫代碼的時(shí)候就注意,讓自己的代碼是高性能高可用的代碼,這個(gè)過程是書寫高性能代碼
②對已經(jīng)成型的代碼通過工具檢測代碼問題,通過檢查到問題來指導(dǎo)我們進(jìn)行代碼的刪改這個(gè)過程被稱為調(diào)優(yōu)
那如何寫出高性能的代碼呢?
需要我們具備深厚的代碼功底,這就是代碼的基礎(chǔ),如:數(shù)據(jù)結(jié)構(gòu)達(dá)到可以根據(jù)應(yīng)用場景寫出符合當(dāng)前場景的特殊結(jié)構(gòu),比如google針對Android平臺特征研發(fā)了SparseArray代替HashMap.另外,對常用的算法也有自己獨(dú)到的見解
6.NDK模塊開發(fā)
音視頻丶高清大圖片丶人工智能丶抖音直播等這些年與用戶緊密相關(guān),與我們生活最相關(guān)的技術(shù)一直都在尋找最終的技術(shù)落地平臺,以前是s系統(tǒng),而現(xiàn)在是移動系統(tǒng)了。而移動系統(tǒng)中Android比例又是最大的。所以NDK可以說是必備要學(xué)習(xí)的,除此之外,音視頻的編解碼技術(shù)流媒體協(xié)議,ffmepeg,c,c++,JNI,linux都是音視頻開發(fā)必備技能。而且OpenCV \OpenGI這些又是圖像處理必備。
7.如何提高開發(fā)效率?
工欲善其事必先利其器,如何提高開發(fā)效率,很多開發(fā)者在開發(fā)中由于gradle不會用導(dǎo)致加載代碼非常耗時(shí),這些都是你的工作成本的浪費(fèi)。還有就是git的使用也可以幫助我們管理好我們的代碼,這個(gè)非常關(guān)鍵,因?yàn)檫@個(gè)工具可以讓我們修改的代碼不會因?yàn)殄e(cuò)誤操作而導(dǎo)致丟失。另外,對移動開發(fā)者我們至少需要知道如何抓取網(wǎng)絡(luò)包。其中,最常用的stetho就是一個(gè)非常好用的可以抓取網(wǎng)絡(luò)包的工具。
8.混合開發(fā)
混合開發(fā)的flutter現(xiàn)在已經(jīng)逐漸成了主流的混合開發(fā)框架,另外由于阿里系的強(qiáng)大存在,導(dǎo)致阿里系的公司都在用Weex混合架構(gòu),這些都是一個(gè)Android工程師開拓視野,走向未來必不可少的基本技能的。
鏈接:https://pan.baidu.com/s/1_4PIUb-Yl68aTW9Bw95iJA
提取碼:tnav
總結(jié)
以上是生活随笔為你收集整理的移动互联网高级开发学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跑车敞篷是用什么电机驱动的?
- 下一篇: iOS中高级特训营