BAT大廠Android面試知識點,請客官拿好~~

前言

年年寒冬,年年也擋不住一個安卓程序員追求大廠的決心。想要進入大廠,咱們須要掌握哪些知識點呢?這裏,我爲你們梳理了一個總體的知識架構。總體包括Java、Android、算法、網絡等,而且我也在相應知識點下推薦了與該知識點相關的書籍與博客。但願你們閱讀以後,能幫助你們完善與整理本身的知識體系。祝你們早日進入本身理想的公司~~html

注意,整篇文章是知識點的歸納,不包含答案,須要你們多看源碼,知識只有本身去探索與發現,纔會彌足珍貴!java

Java基礎知識點

Jvm相關

  • Java內存結構及分區
  • Java對象的建立、存儲及訪問
  • Java判斷對象是否存活及垃圾回收算法(GC)
  • Jvm中的常見的垃圾回收器
  • Java類加載過程
  • Java類加載器(雙親委派模型)

推薦閱讀:android

  1. 《深刻理解Java虛擬機JVM高級特性及最佳實踐》 第二章 Java內存區域與內存溢出異常
  2. 《深刻理解Java虛擬機JVM高級特性及最佳實踐》 第三章 垃圾收集器與內存分配策略
  3. 《深刻理解Java虛擬機JVM高級特性及最佳實踐》 第六章 類文件結構
  4. 《深刻理解Java虛擬機JVM高級特性及最佳實踐》 第七章 虛擬機類加載機制
  5. 《Java虛擬機規範 JAVA SE 8版》

集合相關

  • ArrayList分析
  • LinkedList分析
  • HashMap分析
  • HashTable分析
  • LinkedHashMap分析
  • HashSet分析
  • LinkedHashSet分析
  • ArrayMap、SparseArray、與HashMap的對比
  • ConcurrentHashMap分析

推薦閱讀git

  1. 若是你們不嫌棄,能夠看看個人-->ArrayList分析
  2. 若是你們不嫌棄,能夠看看個人-->LinkedList分析
  3. 若是你們不嫌棄,能夠看看個人-->哈希表初識
  4. 徹頭徹尾理解 HashTable
  5. 美團技術團隊-Java8系列之從新認識HashMap
  6. Map 綜述(二):徹頭徹尾理解 LinkedHashMap
  7. 《Java併發編程的藝術》第六章6.1節CocurrrentHashMap(基於JDK 1.6,1.7分析的)實現原理及使用
  8. 深刻淺出ConcurrentHashMap1.8

併發相關

  • Java內存模型
  • volatile原理
  • Synchronized的原理
  • AQS原理
  • Condition原理
  • ReentrantLock 原理
  • 公平鎖與非公平鎖
  • ReentrantReadWriteLock原理

推薦閱讀:程序員

  1. 《Java併發編程的藝術》第二章 Java併發機制的底層實現原理
  2. 《Java併發編程的藝術》第三章 內存模型
  3. 《Java併發編程的藝術》第五章 Java中的鎖
  4. Java併發編程之Java內存模型
  5. Java併發編程之JavaCAS操做
  6. Java併發編程之Volatile
  7. Java併發編程之synchronized
  8. Java併發編程之鎖機制之引導篇
  9. Java併發編程之鎖機制之Lock接口
  10. Java併發編程之鎖機制之AQS(AbstractQueuedSynchronizer)
  11. Java併發編程之鎖機制之LockSupport工具
  12. Java併發編程之鎖機制之Condition接口
  13. Java併發編程之鎖機制之重入鎖
  14. Java併發編程之鎖機制之讀寫鎖

線程相關

  • 線程的啓動和終止
  • 線程間通訊
  • 等待/通知機制

推薦閱讀:github

《Java併發編程的藝術》第四章 Java併發編程基礎面試

線程池相關

  • 使用線程池的緣由
  • 線程池內部原理
  • 線程池中的幾種重要的參數及流程說明
  • 線程池中幾種常見的工做隊列
  • 幾種常見的線程池及使用場景。

推薦閱讀: 《Java併發編程的藝術》第九章 Java中的線程池算法

IO相關

  • IO相關面試問題-Socket
  • IO相關面試問題-BIO/NIO

推薦閱讀:sql

  1. NIO相關基礎篇一
  2. NIO相關基礎篇二
  3. NIO相關基礎篇三
  4. 《UNIX 網絡編程,卷1:套接字聯網API 第三版》第六章 I/O複用:select和poll
  5. 《深刻理解Java虛擬機JVM高級特性及最佳實踐》 第二章 Java內存區域與內存溢出異常 2.7節 直接內存介紹

Android基礎知識點

Activity相關

  • 典型情況下的生命週期
  • 異常狀況下的生命週期
  • 異常狀況下的數據保存
  • 各類狀況下跳轉到某個Activity時目標Activity及當前Activity的生命週期
  • Activity的啓動模式及應用場景
  • 進程和應用生命週期

推薦閱讀:數據庫

  1. 《Android開發藝術探索》 第一章 Activity的生命週期和啓動模式
  2. 《Android開發藝術探索》 第九章 9.2節Activity的工做過程
  3. Google-進程和應用生命週期
  4. Google-任務和返回棧

Service相關

  • Service的定義及做用
  • Service兩種啓動方式 startService、 bindService 區別及生命週期
  • Service綁定服務的三種實現方式,擴展Binder類、使用Messenger、使用AIDL
  • 關於啓動服務與綁定服務間的轉換問題 先綁定服務後啓動服務、先啓動服務後綁定服務
  • 服務Service與線程Thread的區別
  • Android 5.0以上的隱式啓動問題及其解決方案
  • 如何保證服務不被殺死
  • IntentService的使用及原理

推薦閱讀:

  1. 《Android開發藝術探索》 第九章 9.3節Service的工做過程
  2. 關於Android Service真正的徹底詳解,你須要知道的一切
  3. Android 多線程之IntentService 徹底詳解
  4. Android 多線程之HandlerThread 徹底詳解

BroadcastReceiver相關

  • BroadcastReceiver定義及做用、應用場景
  • BroadcastReceiver的註冊方式,靜態方式、動態方式
  • BroadcastReceiver註冊與取消的時機
  • BroadcastReceiver的不一樣類型,普通廣播,系統廣播、有序廣播、粘性廣播、應用類廣播

推薦閱讀:

  1. 《Android開發藝術探索》 第九章 9.4節BroadcastReceiver 的工做過程
  2. BroadcastReceiver史上最全面解析
  3. 廣播在7.0、8.0、9.0下的適配

Fragment相關

  • Fragment生命週期
  • Fragment的懶加載
  • Fragment之間的通訊
  • FragmentPagerAdapter與FragmentStatePagerAdapter的區別
  • 爲何不建議直接經過使用new Fragment的方式傳入數據

推薦閱讀:

  1. Fragment全解析系列(一):那些年踩過的坑
  2. Google-Fragment概覽
  3. Google-與其餘Fragment通訊

序列化相關

  • 序列化與反序列化的定義及區別
  • Serializable中serialVersionUID及transient關鍵字的做用
  • 序列化:Parcelable和Serializable差別

推薦閱讀:

  1. 序列化與反序列化之Parcelable和Serializable淺析
  2. 《Android開發藝術探索》 第二章 IPC基礎概念介紹

IPC相關

  • 在Android中什麼樣的狀況下會使用多進程模式,如何開啓多進程
  • Android爲何採用Binder作爲IPC機制
  • IPC經常使用方式 使用Bundle、使用文件共享、使用Messenger、使用AIDL、使用ContentProvider、使用Socket
  • AIDL的語義
  • AIDL如何建立
  • AIDL生成Java文件詳細分析

推薦閱讀:

  1. 《Android開發藝術探索》 第二章 IPC機制
  2. 《深如理解LINUX內核 第三版涵蓋2.6版》 第三章 進程 3.2節進程描述符
  3. 寫給 Android 應用工程師的 Binder 原理剖析
  4. 若是須要深刻了解,推薦GitYuan大大的 Binder 系列文章

View事件機制相關

  • View的座標體系
  • View滑動的幾種方式,使用ScrollTo/ScrollBy、使用動畫、改變佈局參數
  • 彈性滑動的原理及實現
  • View的事件分發機制,點擊事件的傳遞規則,事件分發的源碼解讀
  • 處理滑動衝突的場景及解決方法

推薦閱讀:

《Android開發藝術探索》 第三章 View的事件體系

View繪製相關

  • DecorView、Window、ViewRootImpl等概念
  • MeasureSpec概念
  • View的工做流程,measure過程、layout過程、draw過程
  • 自定義View須要注意的事項
  • Activity、Window、View三者之間的關係

推薦閱讀:

  1. 《Android開發藝術探索》第四章 View的工做原理
  2. 《Android開發藝術探索》第八章 理解Window和WindowManager
  3. Android自定義控件三部曲文章索引

View動畫相關

  • 經常使用動畫View動畫(補間動畫)、屬性動畫與幀動畫
  • 補間動畫與屬性動畫區別
  • 差值器和估值器理解
  • 屬性動畫的工做原理

推薦閱讀:

  1. Android自定義控件三部曲文章索引
  2. 《Android開發藝術探索》 第七章 Android動畫深刻分析

Handler相關

  • Handler機制之ThreadLocal
  • Handler機制之Looper、Handler、消息隊列如何理解
  • Handler機制之Message的發送與取出
  • Handler機制之Message及Message的回收機制
  • Handler機制之循環消息隊列的退出
  • Handler機制以內存泄漏
  • Handler機制之IdleHandle的理解及使用

推薦閱讀:

  1. 《Android開發藝術探索》第十章 10.2節 Android的消息機制
  2. IdleHandle的奇思妙想----->你知道android的MessageQueue.IdleHandler嗎?
  3. Handler面試常問題目----->你真的懂Handler嗎?Handler問答
  4. 若是你們不嫌棄,能夠看看個人Handler機制總結----->Anroid Handler機制總目錄

AsyncTask相關

  • AsyncTask的使用和注意事項
  • AsyncTask幾個重要的方法 doInBackgound、onProgressUpdate、onPostExecute等
  • AsyncTask的工做原理及源碼理解

推薦閱讀:

  1. 《Android開發藝術探索》第十一章 Android的線程和線程池
  2. 《Java併發編程的藝術》第九章 Java中的線程池,第十章 Executor框架

Bitmap壓縮回收相關

  • Bitmap所佔內存
  • 經常使用壓縮圖片方式
  • LruCache原理
  • DiskLruCache原理
  • LinkedHashMap原理

推薦閱讀:

  1. 圖片佔內存公式:分辨率 * 每一個像素大小,嚴謹嗎?
  2. 魯班圖片壓縮
  3. Map 綜述(二):徹頭徹尾理解 LinkedHashMap

ListView與RecyclerView相關

  • ListView的原理和複用機制
  • ListView和RecyclerView的區別

推薦閱讀:

  1. Android ListView工做原理徹底解析,帶你從源碼的角度完全理解
  2. 深刻理解Android中的緩存機制(二)RecyclerView跟ListView緩存機制對比

數據存儲相關

  • 經常使用數據庫框架GreenDao,官方Room
  • 數據庫數據遷移問題
  • GreenDao中一對一,一對多,多對多關係
  • SharedPreferences使用及源碼,commit與apply()方法的區別

推薦閱讀:

  1. 數據庫基礎1
  2. 數據庫基礎2
  3. 數據庫基礎3
  4. GreenDao官方幫助文檔
  5. 面試高頻題:一眼看穿 SharedPreferences
  6. GreenDao數據庫遷移幫助類 MigrationHelper

Android開源框架知識點

OkHttp相關

  • OkHttp的優勢
  • OkHttp執行請求的整個流程
  • OkHttp中的攔截器
  • OkHttp中的同步請求與異步請求的理解及其源碼
  • OkHttp中涉及到的設計模式
  • OkHttp底層網絡請求實現,socket仍是URLConnection

推薦閱讀:

拆輪子系列-拆OkHttp

Retrofit相關

  • Retrofit執行請求的整個流程
  • Retrofit中ConverterFactory、CallAdapterFactory的理解
  • Retrofit中CallAdapter的適配器模式

推薦閱讀:

拆輪子系列:拆Retrofit

RxJava相關

  • RxJava經常使用建立操做符 create、from、just、interval、range等
  • RxJava經常使用組合、合併操做符 combineLatest、join、merge、zip等
  • RxJava錯誤處理操做符 onErrorReturn、onErrorResumeNext、onExceptionResumeNext等
  • RxJava過濾操做符 filter、ofType、sample、take等
  • Rxjava背壓相關理解
  • RxJava實際開發中的使用:網絡請求輪詢、網絡請求嵌套回調、從磁盤 / 內存緩存中 獲取緩存數據等

推薦閱讀:

  1. Android Rxjava:這是一篇 清晰 & 易懂的Rxjava 入門教程
  2. 若是你們想直接寫Demo,這裏我已經寫好了一份--->RxJava操做符總結

Glide相關

  • Glide的執行流程
  • Glide的緩存機制
  • Glide圖片轉換
  • Glide帶進度的圖片加載功能
  • Glide內存、磁盤緩存,優先級使用

推薦閱讀:

  1. Android圖片加載框架最全解析(一),Glide的基本用法
  2. Android圖片加載框架最全解析(二),從源碼的角度理解Glide的執行流程
  3. Android圖片加載框架最全解析(三),深刻探究Glide的緩存機制
  4. Android圖片加載框架最全解析(四),玩轉Glide的回調與監聽
  5. Android圖片加載框架最全解析(五),Glide強大的圖片變換功能
  6. Android圖片加載框架最全解析(六),探究Glide的自定義模塊功能

ButterKnife相關

  • Java註解相關Annotation
  • Java註解相關之APT工具
  • ButterKnife註解框架原理

推薦閱讀:

  1. Android 註解系列之APT工具(三)
  2. Android 註解系列之Annotation(二)
  3. ButterKnife 原理解析

EventBus相關

  • EventBus原理,及索引類的使用

推薦閱讀:

  1. Android 註解系列之APT工具(三)
  2. Android 註解系列之Annotation(二)
  3. 騰訊Bugly乾貨-老司機教你「飆」EventBus3

Android性能優化

  • 性能優化:佈局優化、繪製優化、線程優化等
  • ANR異常:主線程執行了耗時操做,如BroadcastReceiver(前臺廣播10s,後臺廣播爲60s)、Service(前臺20s,後臺200s)沒有處理完相關任務等
  • OOM異常:內存溢出的緣由
  • 內存泄漏:內存泄露的幾種場景,如單例模式引出的泄露、靜態變量致使的泄露、屬性動畫致使的內存泄露等

推薦閱讀:

  1. 《Android開發藝術探索》第十五章 Android性能優化
  2. Memory Profiler的使用
  3. LeakCanary庫相關介紹

Android屏幕適配知識點

  • 今日頭條適配方式
  • 寬高限定符適配方式
  • smallestWidth適配

推薦閱讀:

  1. 拉丁吳老師的--Android 目前穩定高效的UI適配方案
  2. 今日頭條適配方式
  3. SmallestWidth 限定符適配方案

Android打包知識點

  • 安卓簽名的理解
  • Gradle多渠道打包

推薦閱讀: 《Android Gradle權威指南》

Android架構知識點

  • MVC架構設計模式面試問題講解
  • MVP架構設計模式面試問題講解
  • MVVM架構設計模式面試問題講解

推薦閱讀:

  1. mvp架構設計
  2. mvvm架構設計
  3. googlesamples/android-architecture

Android不一樣版本特性知識點

推薦閱讀:

  1. Android不一樣版本下的特性
  2. 廣播在7.0、8.0、9.0下的適配
  3. Android 6.0 權限下的適配
  4. Android 7.0 應用共享文件(FileProvider)
  5. Android 7.0 共享文件的使用方式

網絡知識點

  • 計算機網絡三種體系架構,OSI體系架構(7層)、TCP/IP體系架構(4層),五層體系架構
  • TCP的鏈接管理(三報文握手,四報文握手)
  • TCP與UDP的理解與區別
  • Http(HyberText Transfer Protocol)基本概念及報文結構
  • Http常見錯誤碼
  • Http1.0與Http1.1與Http2.0的區別
  • Http中get請求與post請求的區別
  • Http中cookie與session的區別
  • Http與Https的區別
  • Https加密算法相關面試問題,簽名證書,公鑰私鑰、數字摘要的理解

推薦閱讀:

  1. 體系架構--->《計算機網絡第七版 謝希仁》第一章 1.7.1節到1.7.5節
  2. TCP三報文握手與四報文握手--->《計算機網絡第七版 謝希仁》第五章 5.9節 TCP的運輸鏈接管理
  3. TCP與UDP理解--->《計算機網絡第七版 謝希仁》 第五章 運輸層
  4. 《計算機網絡第七版 謝希仁》 第六章 應用層 第七章 網絡安全
  5. HTTP1.0、HTTP1.1 和 HTTP2.0 的區別
  6. 清晰的計算機網絡基礎 學習指南

設計模式知識點

  • 單例模式
  • Builder模式
  • 裝飾模式
  • 策略模式
  • 模板方法
  • 觀察者模式
  • 等.....

推薦閱讀: 《Android源碼設計模式解析與實戰》

算法知識點

  • 常見的八大排序方式
  • 時間複雜度的計算
  • 鏈表相關算法,鏈表翻轉,鏈表合併等
  • 二叉樹相關算法前序、中序、後序遍歷(遞歸,迭代)
  • 紅黑樹與BL樹

推薦閱讀:

  1. 《Java 數據結構和算法 第二版》
  2. 時間複雜度學習(上)
  3. 時間複雜度學習(下)
  4. 刷題---->LeetCode
相關文章
相關標籤/搜索