記錄自己面試中所遇到的所有知識點,加強基礎才是王道!!!
一、 Java
1. Java集合
- List
- ArrayList
- LinkedList
- Map
- HashMap
- HashTable
- LinkedHashMap
- Set
- HashSet
- TreeSet
- Queue
- PriorityQueue
- ArrayDeque
2. JVM&內存管理
3. 多線程&并發包
-
并發基礎知識
- 線程的狀態轉換
- CPU & 磁盤IO 的調度方式
- 新建線程的幾種方式
- 死鎖的產生條件和解決方法
-
- 并發容器
- ConcurrentMap
- BlockingQueue
- 鎖(Lock 接口)
- ReentrantLock
- ReadLock & WriteLock
- Volatile作用
- 線程池
- Runnable & Callable
- Future & FutureTask
- Executor & ExecutorServices 接口
- Executors
- JUC深入研究系列(可裝逼)
- 并發容器
線程和進程的區別
線程 & 進程同步的幾種方式
線程中斷方法及適用場景
Synchronizer & Lock的使用和區別
生產者和消費者問題(隊列)
4. 網絡編程
- Tcp 協議
- Socket 編程
- Http協議組成及狀態碼
- Https & Http 2.0
- 網絡協議的區別及應用(概述)
二、Android
1. UI
- View
- 屬性動畫 & 動畫插值器
- RecycleView & ListView
- Scroller 完全解析
2. 常用類源碼分析
- Android 事件傳遞機制
- AsyncTask源碼分析 (缺點)
- Handler 機制分析
- Binder
- AIDL原理 & 生成的java 都做了些什么
- Android打包過程
-
Android 顯示原理
- Vsync信號量 & 視圖緩沖顯示機制
- Choreographer 源碼分析
- 如何準確評測Android應用的流暢度?
3. 常用技能
- 性能優化
- 內存泄露優化
- 界面卡頓優化
- 網絡請求優化(接口合并等需要后臺支持)
- 電量 & 流量消耗優化
- 打點統計 & 崩潰檢測
- 友盟統計
- 自己后臺(怎么上報)
- Bugly & Fabric (怎么還原錯誤棧)
- Bitmap 占用內存計算 & 優化
- 滑動嵌套解決方案
4. 項目架構 & 解決方案
- MVP & MVVM 的優缺點(怎么解決P層的生命周期問題)
- 組件化(解決相互依賴)
- 新建項目怎么選擇輪子(技術棧)
- ANR 問題怎么分析
5. 高級技術(了解)
- 插件化
- 熱更新
- 加固 & 反編譯
- NDK
三、設計模式
四、啊哈、算法
五、輪子原理
- OKHttp源碼分析(基于Okhttp 3.6)
- Butterknife原理分析
- EventBus 源碼分析
- Retrofit源碼分析
- Gilde圖片加載框架源碼分析
- RxJava& RxAndroid全家桶
六、場景設計
- 設計一個高可用的線程池(包含對阻塞態線程的處理)
- 設計一個圖片加載框架(Lru緩存)
- 怎么統計App網絡請求狀況 & 流量使用情況
七、大神博客
八、工具使用
- Charles
- Git使用
- Markdown語法
- Gradle高級用法(如: 差異化構建)
- 手機開發者選項
- TraceView 方法性能分析
- MAT & LeakCanary 內存泄漏分析
- 反編譯ApkTools