天天看點

android 技術點 整理

前言

學習一直是東一榔頭,西一棒槌。看了人家的面試總結問題,就整理一下。試着總結學習,

一個月給個學習成果,一共86個點

事件分發流

View的渲染機制

觸摸事件的分發?

點選事件被攔截,但是相傳到下面的view,如何操作?

動畫的原理,底層如何給上層信号

編譯打包的過程

Android有多個資源檔案夾,應用在不同分辨率下是如何查找對應檔案夾下的資源的,描述整個過程

系統

ANR的原理(回答主線程5秒阻塞是不行的,要讀源碼)

Oom 是否可以try catch ?

記憶體洩露如何産生?

ANR 如何産生?

如何保證線程安全?

OOM的可能原因?

設計模式

擴充卡模式,裝飾者模式,外觀模式的異同?

簡繪觀察者設計模式UML圖

Bitmap 使用時候注意什麼?

比較/差別

String buffer 與string builder 的差別?

類别

java四種引用,強引用置為null,會不會被回收?

多程序場景遇見過麼?

arraylist 與 linkedlist 異同?

進階

bitmap recycler 相關

Jni 用過麼?

volatile的原理

synchronize的原理

lock原理

Binder相關?

簡述IPC?

資料庫方面

Sqlite 怎麼增加一個字段

XX項目中是怎麼建立資料庫的

Sqlite 怎麼删除一個字段

sqlite更新,增加字段的語句

線程方面

線程和程序的差別?

如何保證多線程讀寫檔案的安全?

如何實作線程同步?

為什麼要有線程,而不是僅僅用程序?

關于handler,在任何地方new handler 都是什麼線程下

線程死鎖的4個條件?

不使用同步鎖如何實作線程安全

多線程,多程序 相關

程序間通信方式?

XX項目中你們自己定義的線程池來管理任務,不使用架構,那麼,後來新的項目怎麼設計的

Integer類是不是線程安全的,為什麼

你認為Rxjava的線程池與你們自己實作任務管理架構有什麼差別?

簡述工作線程更新UI的方法

第三方庫

Glide源碼?

glide 使用什麼緩存?

Glide 記憶體緩存如何控制大小?

okhttp源碼?

為什麼用Retrofit(一個開源庫)

Retrofit與之前的網絡庫有什麼優勢

RxJava簡介及其源碼解讀?

熱修複與插件化相關

算法方面

從上到下從左到右輸出二叉樹

算法,求公共子序列(或者是子串,記不清了)

算法判斷單連結清單成環與否?

hashmap資料結構?

object類的equal 和hashcode 方法重寫,為什麼?

hashmap如何put資料(從hashmap源碼角度講解)?

fragment之間傳遞資料的方式?

網絡方面

簡述tcp四次揮手?

http 的session&cookie的差別

自由發揮

XX項目你負責什麼

有什麼你覺得自己做得好的地方

存儲方面

threadlocal原理

記憶體管理

記憶體洩漏的可能原因?

用IDE如何分析記憶體洩漏?

應用最多占多少記憶體

常見記憶體洩漏情景及避免記憶體洩漏的措施

記憶體洩漏的常見場景

怎麼發現&分析記憶體洩漏

性能優化

其他

內插補點器&估值器

簡述消息機制相關

簡述Activity啟動全部過程?

性能優化如何分析systrace?

廣播的分類?

ActicityThread相關?

Activity生命周期簡述

Actvity啟動模式簡述

自定義view重寫哪幾個方法?

滑動卡頓如何解決(不同原因及對應處理方式)