Java基礎(chǔ)
Java Object類方法
HashMap原理,Hash沖突,并發(fā)集合,線程安全集合及實現(xiàn)原理
HashMap 和 HashTable 區(qū)別
HashCode 作用,如何重載hashCode方法
ArrayList與LinkList區(qū)別與聯(lián)系
GC機制
Java反射機制,Java代理模式
Java泛型
Synchronized原理
Volatile實現(xiàn)原理
方法鎖、對象鎖、類鎖的意義和區(qū)別
線程同步的方法:Synchronized、lock、reentrantLock分析
Java鎖的種類: 公平鎖、樂觀鎖、互斥鎖、分段鎖、偏向鎖、自旋鎖等
ThreadLocal的原理和用法
ThreadPool的用法和示例
wait()和sleep()的區(qū)別
Java高階
Java虛擬機,Java運行,Java GC機制(可達(dá)性分析法,引用計數(shù)法)
Java對象的完整生命周期
JVM內(nèi)存模型
進(jìn)程間通信,線程間通信
JVM類加載機制
Java引用類型
設(shè)計模式:除常用設(shè)計模式之外,特別的,反射機制,代理模式
HTTP協(xié)議和HTTPS協(xié)議
Socket協(xié)議,Socket實現(xiàn)長連接
TCP和UDP協(xié)議
HTTP協(xié)議中GET和POST的具體實現(xiàn)
序列化和反序列化
線程池的實現(xiàn)原理
數(shù)據(jù)庫基礎(chǔ)知識:多表查詢、索引、數(shù)據(jù)庫事務(wù)
數(shù)據(jù)結(jié)構(gòu)及算法
數(shù)據(jù)結(jié)構(gòu)
棧和隊列
數(shù)組和鏈表,自定義一個動態(tài)數(shù)組
Hash表,及Hash沖突的解決
二叉樹
B+ B-樹
基礎(chǔ)排序算法:重點 快排、歸并排序、堆排序(大根堆、小根堆)
快排的優(yōu)化
二分查找與變種二分查找
哈夫曼樹、紅黑樹
字符串操作,字符串查找,KMP算法
圖的BFS、DFS、prim、Dijkstra算法(高階技能)
經(jīng)典問題:海量數(shù)據(jù)的處理 (10億個數(shù)中找出最大的10000個數(shù) TOP K問題)
算法
分治算法
動態(tài)規(guī)劃
貪心算法
分支限界法
Android基礎(chǔ)
Application生命周期
Android Activity生命周期
Android Service、IntentService,Service和組件間通信
Activity的onNewIntent
Fragment的懶加載實現(xiàn),參數(shù)傳遞與保存
ContentProvider實例詳解
BroadcastReceiver使用總結(jié)
Android消息機制
Binder機制,共享內(nèi)存實現(xiàn)原理
Android 事件分發(fā)機制
Android 多線程的實現(xiàn):Thread、HandlerThread、AsyncTask、IntentService、RxJava
ActivityThread工作原理
嵌套滑動實現(xiàn)原理
RecyclerView與ListView(緩存原理,區(qū)別聯(lián)系,優(yōu)缺點)
View的繪制原理,自定義View,自定義ViewGroup
View、SurfaceView 與 TextureView
主線程Looper.loop為什么不會造成死循環(huán)
ViewPager的緩存實現(xiàn)
requestLayout,invalidate,postInvalidate區(qū)別與聯(lián)系
AndroidP新特性
Android兩種虛擬機
ADB常用命令
Asset目錄與res目錄的區(qū)別
Android SQLite的使用入門
Android開發(fā)高級
引子:Android高級工程師招聘要求:1. 熟悉Android SDK,熟悉Android UI,熟悉Android各種調(diào)試工具;2. 有豐富的Android應(yīng)用架構(gòu)能力,能夠獨立主導(dǎo)并架構(gòu)App;3. Mobile Web 開發(fā)經(jīng)驗;具備各種復(fù)合技能:熟悉iOS、H5、Python、.NET等多種開發(fā)語言的優(yōu)先考慮;4. 對Android性能優(yōu)化,安全,軟件加固,自動化測試有深刻認(rèn)識;5. 博客,開源項目
Android技術(shù)難點
AIDL、Binder、多進(jìn)程、View的繪制流程、事件分發(fā)、消息隊列等。這類知識對于定位自己為高級Android工程師的人來說是必須掌握的,同時他也是能鑒別高級和初中級工程師的一塊試金石,其中binder是Android系統(tǒng)進(jìn)程間通信最重要的手段之一,現(xiàn)階段app的發(fā)展離不開多進(jìn)程的運用,經(jīng)常會啟動例如定位、推送等需要在后臺開啟動的進(jìn)程來來保證主進(jìn)程的內(nèi)存運行;所以合理的使用多進(jìn)程也是十分必要的;view的繪制是我們自定義控件的理論基礎(chǔ),只有掌握了view是如何繪制的才能個性化的自定義控件;事件分發(fā)一直是Android開發(fā)的難點之一,也是必須掌握的;關(guān)于handler機制也是android的一塊難點,因為包括Asynctask、系統(tǒng)啟動、Intentservice等底層都是通過handler來實現(xiàn)的,所以掌握后handler機制不僅能提高你的實戰(zhàn)開發(fā)能力,更能讓你系統(tǒng)的了解整個android系統(tǒng)運作的情況。
Android框架層源碼掌握
Android框架層有很多東西,以下幾個是高級程序員必須要掌握的:
Android包管理機制,核心PackageManagerService
Window管理,核心WindowManagerService
Android Activity啟動和管理,核心ActivityManagerService
根Activity工作流程
Context關(guān)聯(lián)類