最近跟我的一些讀者交流,有一位讀者的經歷讓我記憶深刻:
“有一次和大學同學聚會,和幾個在BAT的同學聊了聊技術,發現自己在創業公司這幾年,完全是吃老本的狀態,沒有什么機會精進技術,同樣是工作了三年,和同學的差距越來越大”
我繼續問他,他說真正讓他受打擊的是這個月的一次面試。
“面的是一個大廠,面試官問了很多問題,一大半的問題我都是一知半解,回答上來問題也是特沒底。
大概回顧了這場面試:上來先是問了Java基礎知識,自定義view,算法等等,這部分我還算準備的充分。第二部分開始復雜了,主要是底層、NDK、設計模式、調優方面的問題,像是如何檢測一段代碼的執行時間?滑動不流暢怎么處理??
我之前工作上經歷的少,加上自己技術儲備淺薄,到這部分時我就感覺自己快涼了。面試到最后,問了mvvm架構相關的,當時已經懵了,我只記得一個問題:讓你做一個項目,怎么選擇mvvm架構和MVP架構?我。。。。“
面完后他說,覺得自己在技術上欠了很多債,最慘的是,在這之前他根本不知道。
聽了這位讀者的經歷,于是有了今天這篇文章。很多工作了1-3年的Android人,想夠一夠 3w月薪的崗位,但在底層技術上卻有很大的問題:
畢業幾年,表面上用過很多技術,但都沒能深入學習,一年的工作經驗,干了好幾年。結果就是遇到實際問題時無從下手,最終還是走著普通工程師的道路,和高手的距離越來越遠。
都說三年是程序員的一個坎,能否晉升或者提高自己的核心競爭力,這幾年就十分關鍵。
1、Java se基礎
1).Java基本數據類型與表達式,分支循環。
2).String和StringBuffer的使用、正則表達式。
3).面向對象的抽象,封裝,繼承,多態,類與對象,對象初始化和回收;構造函數、this關鍵字、方法和方法的參數傳遞過程、static關鍵字、內部類。
4).對象實例化過程、方法的覆蓋、final關鍵字、抽象類、接口、繼承的優點和缺點剖析;對象的多態性:子類和父類之間的轉換、抽象類和接口在多態中的應用、多態帶來的好處。
5).Java異常處理,異常的機制原理。
6).常用的設計模式:Singleton、Template、Strategy模式。
7).JavaAPI介紹:種基本數據類型包裝類,System和Runtime類,Date和DateFomat類等。
8).Java集合介紹:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合類API。
9).JavaI/O輸入輸出流:File和FileRandomAccess類,字節流InputStream和OutputStream,字符流Reader和Writer,以及相應實現類,IO性能分析,字節和字符的轉化流,包裝流的概念,以及常用包裝類,計算機編碼。
10).Java高級特性:反射和泛型。
11).多線程原理:如何在程序中創建多線程(Thread、Runnable),線程安全問題,線程的同步,線程之間的通訊、死鎖。
2、android UI編程
1)、Android開發環境搭建:Android介紹,Android開發環境搭建,第一個Android應用程序,Android應用程序目錄結構。
2)、Android初級控件的使用:
TextView控件的使用
Button控件的使用方法
EditText控件的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法
3)、Android高級控件的使用:
ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView
4、對話框與菜單的使用:
Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定義Menu的實現方法
5.控件的布局方法:
線性布局的使用方法
相對布局的使用方法
6.多Acitivity管理:
AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent傳遞數據的方法
啟動Activity的方法
IntentFilter的使用方法
Activity Group的使用方法
7、自定義控件實現方法:
自定義ListView的實現方法
可折疊ListView的使用方法
自定義Adapter的實現方法
自定義View的實現方法
動態控件布局的上實現方法
上拉刷新下拉加載更多
3、android網絡編程與數據存儲
1).基于Android平臺的HTTP通訊:
Http協議回顧
使用Get方法向服務器提交數據的方法
使用POST方法向服務器提交數據的實現方法
使用Http協議實現多線程下載
使用Http協議實現斷點續傳
2).Android數據存儲技術:
SQLite3數據庫簡介
SQL語句回顧
SQLite3編程接口介紹
SQLite3事務管理
SQLite3游標使用方法
SQLite3性能分析
訪問SDCard的方法
訪問SharedPreferences的方法
初級工程師
技術要求:
- 基本知識點
比如四大組件如何使用、如何創建Service、如何進行布局、簡單的自定義View、動畫等常見技術 - 書籍推薦
《第一行代碼 Android》、《瘋狂Android》
中級工程師
技術要求:
-
稍微深入的知識點
AIDL、Messenger、Binder、多進程、動畫、滑動沖突、自定義View、消息隊列等 -
書籍推薦
《Android開發藝術探索》、《Android群英傳》 -
AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的區別;
-
Binder:從Java層大概理解Binder的工作原理,懂Parcel對象的使用;
-
多進程:熟練掌握多進程的運行機制,懂Messenger、Socket等;
-
事件分發:彈性滑動、滑動沖突等;
-
玩轉View:View的繪制原理、各種自定義View;
-
動畫系列:熟悉View動畫和屬性動畫的不同點,懂屬性動畫的工作原理;
-
懂性能優化、熟悉mat等工具
-
懂點常見的設計模式
-
搞懂view的滑動原理
-
搞懂如何實現彈性滑動
-
搞懂view的滑動沖突
-
搞懂view的measure、layout和draw
-
然后再學習幾個已有的自定義view的例子
-
最后就可以搞定自定義view了,所謂萬變不離其宗
高級工程師
技術要求:
-
稍微深入的知識點
-
系統核心機制
-
基本知識點的細節
-
設計模式和架構
-
書籍推薦
《Android開發藝術探索》、《Android 源碼設計模式解析與實戰》、《Android內核剖析》 -
繼續加深理解”稍微深入的知識點“中所定義的內容
-
了解系統核心機制:
- 了解SystemServer的啟動過程
- 了解主線程的消息循環模型
- 了解AMS和PMS的工作原理
- 能夠回答問題”一個應用存在多少個Window?“
- 了解四大組件的大概工作流程
- …
- 基本知識點的細節
- Activity的啟動模式以及異常情況下不同Activity的表現
- Service的onBind和onReBind的關聯
- onServiceDisconnected(ComponentName className)和binderDied()的區別
- AsyncTask在不同版本上的表現細節
- 線程池的細節和參數配置
- …
- 熟悉設計模式,有架構意識學習方法
以上就是整理分享的Android開發進階的一個學習路線。
其他重要知識點
下面是有幾位Android行業大佬對應上方技術點整理的一些進階資料。有**【Android架構視頻+BATJ面試專題PDF+核心筆記等資料+源碼+思維導圖】**。希望能夠幫助到大家提升技術。如果大家想要獲取的話,可以免費獲取哦~
高級進階篇——高級UI,自定義View(部分展示)
UI這塊知識是現今使用者最多的。當年火爆一時的Android入門培訓,學會這小塊知識就能隨便找到不錯的工作了。不過很顯然現在遠遠不夠了,拒絕無休止的CV,親自去項目實戰,讀源碼,研究原理吧!
- 面試題部分合集
最多的。當年火爆一時的Android入門培訓,學會這小塊知識就能隨便找到不錯的工作了。不過很顯然現在遠遠不夠了,拒絕無休止的CV,親自去項目實戰,讀源碼,研究原理吧!
[外鏈圖片轉存中…(img-QGLk3Tn5-1621242664405)]
- 面試題部分合集
[外鏈圖片轉存中…(img-2GBQYaAa-1621242664409)]