現在的人自我意識越來越強,專注做自己的事不太會在意別人的眼光,不管別人如何評價路,畢竟腳下的路是自己在走,
最近有位網友在職場論壇上發帖,說看見地鐵上有一程式員大哥在寫代碼,并且配上了一張照片,

從照片中可以看出,一位男子坐在靠地鐵欄桿的地方,把包放在腿上,墊著電腦,噼噼啪啪的在作業,地鐵上人不多,顯然不是高峰期,他作業的狀態很專注,
沒想到程式員的這個舉動卻被路人吐槽說:“有什么好裝的”,地鐵里手機信號都不好,如果遇到緊急的bug,早就下車找地方去修改了,還用在地鐵里干,

但這個網友的帖子立刻引來其他網友的回懟,說寫代碼根本不用網路而且地鐵的網路現在也很好,就是因為他覺得寫代碼是一個很高大上的事情,所以才會覺得程式員在裝,
其實在程式員看來這就是他的作業,是因為作業太多,進度太趕,實在忙不過來,或者因為在下班的路上,突然有了靈感才在地鐵里干活,

也有網友說,不管他是不是裝,他都是在工努力作業,對于這種抓緊分分秒秒都在拼搏的年輕人,我們應該對他心生敬意,而不是冷嘲熱諷,
如果一個人在地鐵里背英文單詞,是不是也會被人諷刺裝呢,但是有很多人就是這樣不斷充實自己,才讓自己變得更優秀,

也有人說他不是在裝,沒有從事過這個行業的人不了解,真的是太忙了,地鐵里不干,可能回家就要多干一小時,利用地鐵的時間多干一點,那么回家就可以多休息一會,

分享讀者
作為一名Android開發,與其整天996,拼命加班,不妨正視自己的缺點和不足,構建一個屬于自己的知識體系,提升作業效率,
同時也能夠讓我們學到的知識體系化.讓自己清楚哪塊是自己的知識盲區,哪塊已經構建起根基.然后根據實際情況,有針對性的進行模塊學習.讓自己成為一個合格的Android工程師.
我們平時看博客或者學知識,學到的東西比較零散,沒有獨立的知識模塊概念,而且學了之后很容易忘.于是我建立了一個自己的筆記倉庫 (一個我長期維護的筆記倉庫,感興趣的可以點個star~你的star是我寫作的巨大大大大的動力),將平時學到的東西都歸類然后放里面,需要的時候呢也方便復習.過了段時間,我覺得這樣還是不夠好,于是我最近花了點時間,整理了一下Android中的常見知識,畫了一張思維導圖.更清晰地認識自己的知識邊界到底在哪里,哪些東西還不足.
此知識體系呢只是一個參考,大家可以根據自己的實際情況進行針對性學習,然后進行查漏補缺,提升自己~
1. 計算機基礎
1.1 計算機網路
1.1.1 計算機網路概述
-
網路七層協議
-
TCP/IP四層模型
-
底層協議
-
底層設備
1.1.2 應用層
-
HTTP協議(???)
-
DHCP協議(???)
-
NAT
1.1.3 傳輸層(???)
-
TCP協議
-
UDP協議
1.1.4 網路層
-
IP協議
-
ICMP協議
1.2 作業系統(???)
1.2.1 作業系統基本功能
-
行程管理
-
作業管理/檔案管理
-
存盤管理/設備管理
1.2.2 Linux系統
-
記憶體管理
-
行程管理
-
檔案系統
-
常見命令操作
1.2.3 補充
-
自旋鎖/互斥鎖/讀寫鎖/條件變數/共享檔案
-
訊息佇列/管道/信號量
-
作業系統的用戶態與內核態
-
背景關系切換成本
-
行程,執行緒與協程
2. Java基礎(???)
2.1 集合原理
-
ArrayList
-
Vector
-
Stack
-
LinkedList
-
HashMap
-
Hashtable
-
TreeMap
-
LinkedHashMap
-
HashSet
-
TreeSet
-
CopyOnWriteArrayList
-
ConcurrentHashMap
-
LinkedBlockingQueue
-
SynchronousQueue
-
SparseArray
-
ArrayMap
2.2 其他
-
面向物件
-
設計模式
-
反射
-
泛型
-
注解
3. Java并發
3.1 執行緒基礎
-
實作多執行緒
-
啟動執行緒
-
停止執行緒
-
執行緒的6種狀態
-
各種各樣的鎖
-
悲觀鎖和樂觀鎖
-
共享鎖和獨占鎖
-
公平鎖和非公平鎖
-
可重入鎖和非可重入鎖
-
可中斷鎖和非可中斷鎖
-
自旋鎖和非自旋鎖
-
偏斜鎖/輕量級鎖/重量級鎖
-
JVM對synchronized鎖的優化
-
-
wait/notify/sleep/join等重要方法
-
守護執行緒,優先級等屬性
-
執行緒安全
-
Future獲取運行結果
-
Fork/Join模式
-
CountDownLatch
-
CyclicBarrier
-
Semaphore
-
Condition
-
Phaser
-
重排序
-
原子性
-
記憶體可見性
-
CAS原理
-
AQS框架
3.2 其他
3.2.1 并發容器
-
Vector/Hashtable
-
ConcurrentHashMap
-
CopyOnWriteArrayList
-
阻塞佇列
-
非阻塞隊列
-
ConcurrentSkipListMap
3.2.2 atomic包,6種原子類
-
分類
-
原子類與鎖
-
原子類與volatile
3.2.3 ThreadLocal
-
使用場景
-
原理
3.3.4 執行緒池
-
優點
-
引數
-
分類
-
執行任務流程
-
拒絕策略
-
正確關閉執行緒池
-
執行緒池復用原理
4. JVM虛擬機
-
記憶體區域
-
記憶體模型
-
記憶體分配回收策略
-
Java物件的創建、記憶體布局和訪問定位
-
GC: 參考計數及可達性分析,垃圾回收演算法,G1及ZGC
-
類加載機制
-
雙親委派模型
-
編譯器優化: 方法行內,逃逸分析
-
虛擬機相關: HotSpot及JIT,Dalvik,ART及AOT
-
JVM執行方法
-
JVM實作反射
-
JVM實作泛型
-
JVM實作例外
-
JVM實作注解
5. 資料結構與演算法
5.1 資料結構
-
堆疊
-
佇列
-
陣列
-
鏈表
-
Hash表
-
二叉樹
-
基礎排序演算法
-
字串操作
5.2 演算法
-
分治演算法
-
動態規劃
-
貪心演算法
-
分支限界法
5.3 刷題
-
CS-Notes劍指Offer題解
-
CS-NotesLeetCode題解
-
1307頁位元組跳動Android高頻面試題集
6. Android基礎
6.1 核心知識點
6.1.1 四大組件
-
Activity
-
Service
-
BroadcastReceiver
-
ContentProvider
6.1.2 布局和控制元件
-
RelativeLayout
-
FrameLayout
-
LinearLayout
-
ConstraintLayout
-
Button
-
TextView
-
RecyclerView
-
…
6.1.3 自定義View/ViewGroup
-
onMeasure
-
onLayout
-
onDraw
-
onTouchEvent
-
dispatchTouchEvent
-
自定義屬性
6.1.4 影片和手勢
-
View影片
-
屬性影片
-
layoutAnimation視圖影片
-
手勢檢測(GestureDetector)
-
縮放手勢檢測(ScaleGestureDecetor)
6.1.5 網路
-
請求網路
-
決議資料
6.1.6 圖片加載
-
本地圖片
-
網路圖片
-
壓縮圖片
-
多圖串列
-
DiskLruCache
6.1.7 Handler
-
Looper
-
Message
-
MessageQueue
-
記憶體泄漏
-
ThreadLocal
6.1.8 Android各版本新特性
-
Android5.0
-
Android6.0
-
Android7.0
-
Android8.0(O)
-
Android9.0§
-
Android10.0(Q)
-
Android11.0?
6.1.9 其他
-
adb常用命令
-
檔案和資料庫
-
異步執行緒池
-
Resources
6.2 開源庫使用
-
Retrofit/OKhttp
-
RxJava
-
Glide
-
注解框架
-
Jetpack
6.3 性能優化
6.3.1 快-流暢的體驗
-
布局優化
-
繪制優化
-
記憶體優化
-
啟動優化
-
其他
6.3.2 穩-穩定
-
避免記憶體泄露
-
避免崩潰
6.3.3 省-省電/流量
-
使用JobScheduler調度任務
-
使用懶惰法則
6.3.4 小-安裝包小
-
apk構成
-
包體優化
7. Android進階
7.1 核心知識點
7.1.1 多行程
-
Binder
-
AIDL
-
Messenger
7.1.2 Activity難點
-
onSaveInstanceState()和onRestoreInstanceState()
-
intent-filter匹配規則
-
生命周期
-
啟動模式
-
Activity啟動程序
-
App啟動程序
7.1.3 Service難點
-
startService流程
-
bindService流程
7.1.4 BroadcastReceiver難點
- 注冊/發送/接收作業原理
7.1.5 ContentProvider難點
- ContentProvider啟動程序
7.1.6
-
View繪制
-
事件分發
-
訊息佇列
-
AsyncTask原理
-
RemoteViews
-
Window和ViewRootImpl
7.2 開源庫原理
-
OkHttp
-
Retrofit
-
RxJava
-
Glide
-
LeakCanary
-
GreenDao
-
ARouter
7.3 Gradle
-
編譯
-
混淆
-
簽名
-
Groovy
-
Gradle構建流程
-
GradlePlugin
-
Gradle構建優化
-
App構建程序
-
差異化打包
7.4 初級架構
-
設計模式
-
MVC,MVP,MVVM
7.5 JNI
-
JNI基礎
-
NDK基礎
7.6 動態化
7.6.1 前置知識
-
Android打包流程
-
Java位元組碼
-
GradlePlugin
-
TransformAPI
-
ASM
7.6.2 熱修復:nuwa&Tinker
-
經典-64k問題
-
dex分包
-
MultiDex優化
-
findClass原理
-
QQ空間熱補丁方案
-
Nuwa應用層實作
-
NuwaGradle
7.6.3 插件化:VirtualAPK
-
加載類
-
資源訪問
-
生命周期管理
7.7 編譯插樁
-
AOP
-
ASM
7.8 Framework
7.8.1 系統服務
-
Zygote啟動
-
Android系統啟動
-
ServiceManager啟動及作業原理
7.8.2 應用行程
-
啟動流程
-
啟用Binder機制
-
Application初始化流程
-
Context
7.8.3 UI體系
-
顯示原理
-
UI執行緒啟動
-
螢屏重繪機制
-
surface
-
vsync
7.8.4 行程通信
-
Binder
-
IPC通信流程
-
Binder物件跨行程傳遞
-
OneWay機制
7.8.5 執行緒通信
-
訊息佇列
-
訊息傳遞機制
-
Handler訊息延遲實作
-
IdleHandler原理
-
訊息屏障
-
ThreadLocal原理
7.8.6 其他
-
跨行程傳遞大圖片
-
四大組件啟動原理
8. 領域專家
8.1 性能優化方向
-
穩定性優化
-
啟動速度優化
-
繪制優化
-
記憶體優化
-
包體積優化
-
網路優化
-
IO優化
-
存盤優化
-
耗電優化
8.2 基礎架構方向
-
Android工程實踐
-
Gradle自動化構建
-
編譯插樁技術
-
Android架構
-
Android熱修復
-
Android插件化
-
Android核心原始碼
8.3 NDK、音視頻
-
C
-
C++
-
JNI基礎
-
編譯原理與語法基礎
-
Linux基礎
-
熱修復
-
Gif圖實作
-
音視頻基礎
-
ffmpeg
-
WebRTC
-
opengl
-
vulkan
-
opencv
8.4 大前端
8.4.1 前端基礎
-
HTML
-
CSS
-
JavaScript
8.4.2 Flutter(??)
-
Dart入門
-
Flutter入門
-
開發
-
工程管理
-
線上運維
-
發布
-
測驗除錯
8.4.3 其他
-
ReactNative
-
小程式
-
性能優化
9. 其他Android相關
9.1 Koltin(??)
9.1.1 基礎部分
-
內置型別
-
型別初步
-
表達算式
-
函式進階
-
型別進階
9.1.2 高級部分
-
泛型
-
反射
-
注解
-
協程
本文在開源專案:https://github.com/Android-Alvin/Android-LearningNotes 中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/256407.html
標籤:其他


