View相關面試題
1、講下 View 的繪制流程?
2、MotionEvent 是什么?包含幾種事件?什么條件下會產生?
3、描述一下 View 事件傳遞分發機制?
4、如何解決 View 的事件沖突 ? 舉個開發中遇到的例子 ?
5、scrollTo()和 scollBy()的區別?
參考回答:
- scollBy 內部呼叫了 scrollTo,它是基于當前位置的相對滑動;而 scrollTo 是絕對滑動,因此如果使用相同輸入引數多次呼叫 scrollTo 方法,由于 View 的初始位置是不變的,所以只會出現一次 View 滾動的效果,
- 兩者都只能對 View 內容的滑動,而非使 View 本身滑動,可以使用 Scroller 有過度滑動的效果,
6、Scroller 是怎么實作 View 的彈性滑動?
7、 invalidate()和 postInvalidate()的區別 ?
8、SurfaceView 和 View 的區別?
9、自定義 View 如何考慮機型適配 ?
Fragment相關面試題
1、談一談 Fragment 的生命周期?
2、談談 Activity 和 Fragment 的區別?
3、Fragment 中 add 與 replace 的區別(Fragment 重疊)
4、getFragmentManager、getSupportFragmentManager 、getChildFragmentManager 之間的區別?
5、FragmentPagerAdapter 與 FragmentStatePagerAdapter 的區別與使用場景?
Activity相關面試題
1、說下 Activity 生命周期 ?
2、Activity A 啟動另一個 Activity B 會呼叫哪些方法?如果 B 是透明主題的又或則是個 DialogActivity 呢 ?
3、說下 onSaveInstanceState()方法的作用 ? 何時會被呼叫?
4、說下 Activity 的四種啟動模式、應用場景 ?
5、了解哪些 Activity 常用的標記位 Flags?
6、說下 Activity 跟 window,view 之間的關系?
參考回答:
Activity 創建時通過 attach()初始化了一個 Window 也就是PhoneWindow,一個 PhoneWindow 持有一個 DecorView 的實體,DecorView 本身是一個 FrameLayout,繼承于 View,Activty 通過setContentView 將 xml 布局控制元件不斷 addView()添加到 View 中,最終顯示到 Window 于我們互動;
7、橫豎屏切換的 Activity 生命周期變化?
8、如何啟動其他應用的 Activity?
參考回答:
在保證有權限訪問的情況下,通過隱式 Intent 進行目標Activity 的 IntentFilter 匹配,原則是:
- 一個 intent 只有同時匹配某個 Activity 的 intentfilter 中的 action、category、data 才算完全匹配,才能啟動該 Activity;
- 一個 Activity 可以有多個 intent-filter,一個 intent只要成功匹配任意一組 intent-filter,就可以啟動該Activity;
9、Activity 的啟動程序?(重點)
JNI相關問題
1、對 JNI 是否了解?
2、如何加載 NDK 庫 ?如何在 JNI 中注冊 Native 函式,有幾種注冊方法 ?
Bitmap相關面試題
1、Bitmap 使用需要注意哪些問題 ?
2、Bitmap.recycle()會立即回收么?什么時候會回收?如果沒有地方使用這個 Bitmap,為什么垃圾回收不會直接回收?
參考答案
- 通過原始碼可以了解到,加載 Bitmap 到記憶體里以后,是包含兩部分記憶體區域的,簡單的說,一部分是 Java 部分的,一部分是 C部分的,這個 Bitmap 物件是由 Java 部分分配的,不用的時候系統就會自動回收了
- 但是那個對應的 C 可用的記憶體區域,虛擬機是不能直接回收的,這個只能呼叫底層的功能釋放,所以需要呼叫 recycle()方法來釋放 C 部分的記憶體
- bitmap.recycle()方法用于回收該 Bitmap 所占用的記憶體,接著將 bitmap 置空,最后使用 System.gc()呼叫一下系統的垃圾回收器進行回收,呼叫 System.gc()并不能保證立即開始進行回收程序,而只是為了加快回收的到來,
3、一張 Bitmap 所占記憶體以及記憶體占用的計算
4、Android 中快取更新策略 ?
參考答案
- Android 的快取更新策略沒有統一的標準,一般來說,快取策略主要包含快取的添加、獲取和洗掉這三類操作,但不管是記憶體快取還是存盤設備快取,它們的快取容量是有限制的,因此洗掉一些舊快取并添加新快取,如何定義快取的新舊這就是一種策略,不同的策略就對應著不同的快取演算法
- 比如可以簡單地根據檔案的最后修改時間來定義快取的新舊,當快取滿時就將最后修改時間較早的快取移除,這就是一種快取演算法,但不算很完美
5、LRU 的原理 ?
參考回答:
- 為減少流量消耗,可采用快取策略,常用的快取演算法是LRU(Least Recently Used):當快取滿時, 會優先淘汰那些近期最少使用的快取物件,主要是兩種方式:
- LruCache(記憶體快取):LruCache 類是一個執行緒安全的泛型類:內部采用一個 LinkedHashMap 以強參考的方式存盤外界的快取物件,并提供 get 和 put 方法來完成快取的獲取和添加操作,當快取滿時會移除較早使用的快取物件,再添加新的快取物件,
- DiskLruCache(磁盤快取): 通過將快取物件寫入檔案系統從而實作快取效果
Service 相關面試題
1、談一談 Service 的生命周期?
2、Service 的兩種啟動方式?區別在哪?
3、如何保證 Service 不被殺死 ?
4、能否在 Service 開啟耗時操作 ? 怎么做 ?
5、用過哪些系統 Service ?
6、了解 ActivityManagerService 嗎?發揮什么作用
更多參考答案:

由于平臺發文長度有限,小編不能在這一一列舉出這些面試高頻題,也考慮到大家不能想要一份比較全面的面試題,所以小編整理比較全面性的面試題檔案,大家可以觀看下圖完整的檔案,如有想要獲取這份檔案可以私信我回復【666】或者點擊查看詳情~


轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/375938.html
標籤:其他
