1. 程式人生 > >Android面試題目持續更新中

Android面試題目持續更新中

Java部分

基礎

  1. String buffer 與string builder 的區別?
  2. hashmap資料結構?
  3. arraylist 與 linkedlist 異同?
  4. object類的equal 和hashcode 方法重寫,為什麼?
  5. hashmap如何put資料(從hashmap原始碼角度講解)?

執行緒問題

  1. 執行緒死鎖的4個條件?
  2. Integer類是不是執行緒安全的,為什麼
  3. 不使用同步鎖如何實現執行緒安全
  4. 如何保證執行緒安全?
  5. 如何保證多執行緒讀寫檔案的安全?
  6. 執行緒和程序的區別?
  7. 為什麼要有執行緒,而不是僅僅用程序?
  8. 如何實現執行緒同步?

記憶體問題

  1. Java四種引用
  2. 強引用置為null,會不會被回收?

網路問題

  1. http 的session&cookie的區別
  2. 簡述tcp四次揮手?

原理

  1. 差值器&估值器
  2. 處理有序陣列為什麼比無序陣列更快
  3. volatile的原理
  4. synchronize的原理
  5. lock原理
  6. threadlocal原理

Android 基礎

  1. 事件分發流程
  2. View的渲染機制
  3. 動畫的原理,底層如何給上層訊號
  4. 編譯打包的過程
  5. Android有多個資原始檔夾,應用在不同解析度下是如何查詢對應資料夾下的資源的,描述整個過程
  6. ANR的原理(回答主執行緒5秒阻塞是不行的,要讀原始碼)
    ANR 如何產生?
    Jni 用過麼?
    多程序場景遇見過麼?
    關於handler,在任何地方new handler 都是什麼執行緒下
    bitmap recycler 相關
    簡述IPC?
    fragment之間傳遞資料的方式?
    簡述訊息機制相關
    程序間通訊方式?
    Binder相關?
    觸控事件的分發?
    廣播的分類?
    點選事件被攔截,但是相傳到下面的view,如何操作?
    自定義view重寫哪幾個方法?
    簡述工作執行緒更新UI的方法
    滑動卡頓如何解決(不同原因及對應處理方式)
    自定義view實戰

Actvity相關問題

Activity生命週期簡述
Actvity啟動模式簡述
簡述Activity啟動全部過程?

記憶體問題

  1. 記憶體洩漏的可能原因?
  2. 用IDE如何分析記憶體洩漏?
  3. OOM的可能原因?
  4. 記憶體洩漏的常見場景
    怎麼發現&分析記憶體洩漏
    常見記憶體洩漏情景及避免記憶體洩漏的措施
    應用最多佔多少記憶體
    記憶體洩露如何產生?
    Bitmap 使用時候注意什麼?
    Oom 是否可以try catch ?

資料庫問題

Sqlite 怎麼增加一個欄位
XX專案中是怎麼建立資料庫的
Sqlite 怎麼刪除一個欄位
sqlite升級,增加欄位的語句

設計模式

  1. 介面卡模式,裝飾者模式,外觀模式的異同?
  2. 簡繪觀察者設計模式UML圖

第三方庫

glide 使用什麼快取?
Glide 記憶體快取如何控制大小?
Glide原始碼?
okhttp原始碼?
RxJava簡介及其原始碼解讀?
為什麼用Retrofit(一個開源庫)
Retrofit與之前的網路庫有什麼優勢

演算法

演算法判斷單鏈表成環與否?
翻轉一個單項鍊表 1->2->3->4->5->null =====> 5->4->3->2->1->null
string to integer
合併多個單有序連結串列(假設都是遞增的)
演算法,求公共子序列(或者是子串,記不清了)

效能優化

效能優化如何分析systrace?

新技術

熱修復與外掛化相關