鏈接
1.知道Service嗎,它有幾種啟動方式?
Service的onCreate回調函數可以做耗時的操作嗎?
如果需要做耗時的操作,你會怎么做?
是否知道IntentService,在什么場景下使用IntentService?
場景:如果一個應用要從網絡上下載MP3文件,并在Activity上展示進度條,這個Activity要求是可以轉屏的。那么在轉屏時Actvitiy會重啟,如何保證下載的進度條能正確展示進度呢?
2.用廣播來更新UI界面好嗎?
Normal broadcasts無序廣播 和 Ordered broadcasts有序廣播
除了上面的兩種廣播外,還有其他類型的廣播嗎?
有時候基于數據安全考慮,我們想發送廣播只有自己(本進程)能接收到,那么該如何去做呢?
BroadcastReceiver的生命周期
3.怎么理解Activity的生命周期?
如果一個Activity在用戶可見時才處理某個廣播,不可見時注銷掉,那么應該在哪兩個生命周期的回調方法去注冊和注銷BroadcastReceiver呢?
如果有一些數據在Activity跳轉時(或者離開時)要保存到數據庫,那么你認為是在onPause好還是在onStop執行這個操作好呢?
簡單說一下Activity A啟動Activity B時,兩個Activity生命周期的變化。
4.如何判斷Activity是否在運行?
從Activity A 啟動一個線程去進行網絡上傳操作,在A中設立一個回調函數,當上傳操作完成以后,在A的這個回調函數中會彈出一個對話框,用來顯示回調信息。可是當上傳的過程還在進行的時候,我按下back鍵,A的activity 被銷毀了,可是那個上傳的線程還在進行,當那個線程結束后,本來應該在A中彈出一個對話框,可是由于A已經不存在了,系統就會報錯提示,“將對話框顯示在不存在的頁面上”,然后程序就掛掉了。
5.自定義View的狀態是如何保存的?
Activity的狀態如何保存的:如果系統調用onSaveInstanceState,那么它是在onStop還是在onPause之前執行呢?
6.通過new創建的View實例它的onSaveStateInstance會被調用嗎?
我們再展開一下,如果我們定義了一個自義的Layout,在同一個界面中引用了兩次這個自定義的Layout(如下圖的myLayout1 & myLayout2),那么它的狀態會發生什么情況呢?
7.Java的值傳遞和引用傳遞問題
8.能講講Android的Handler機制嗎?
注意:Handler可能會引起的內存泄露
9.兩個Activity之間如何傳遞參數?
Parcelable和Parcle這兩者之間的關系。
現在我們知道了如何傳遞自定義的對象,那么在兩個Activity之前傳遞對象還要注意什么呢?
10.如何理解Android中的Context,它有什么用?
Application(或者Service)和Activity都可以調用Context的startActivity方法,那么在這兩個地方調用startActivity有區別嗎?
Context的實例是什么時候創建的?一個應用里面會有幾個Context的實例?
11.如何優化ListView的性能?
在一次顯示ListView的界面時,getView會被執行幾次?
每次getView執行時間應該控制在多少毫秒之內?
getView中設置listener要注意什么?
12.如何實現應用內多語言切換?
13.在項目中使用AsyncTask會有什么問題嗎?
線程池可以同時執行多少個TASK?
多個AsyncTask任務是串行還是并行?
AsyncTask容易引發的Activity內存泄露
14.修改SharedPreferences后兩種提交方式有什么區別?
多進程操作和讀取SharedPreferences的問題
15.有使用過ContentProvider碼?能說說Android為什么要設計ContentProvider這個組件嗎?
既然是對外提供數據共享,那么如何限制對方的使用呢?
ContentProvider接口方法運行在哪個線程中呢?
ContentProvider是如何在不同應用程序之間傳輸數據的?
16.如何處理線程同步的問題?
Object的wait和notify/notifyAll如何實現線程同步?
wait和yield(或sleep)的區別?
吹牛篇
說一下你認為自己比其他程序員出色(厲害)的地方?
為什么我們要選擇你呢,你和其他程序員比有什么優勢?
17.做一個完整的項目,提交到github
如何準備自我介紹
對于面試官來說,自我介紹的好處
18.如何對SQLite數據庫中進行大量的數據插入?
線程問題
使用ORM的問題
19.Activity的啟動模式(launchMode)有哪些,有什么區別?
很多人在使用startActivityForResult啟動一個Activity時,會發現還沒有開始界面跳轉本身的onActivityResult馬上就被執行了,這是為什么呢?
如何與HR談薪資
20. Activity的啟動模式有哪些,有什么區別?
當前應用有兩個Activity A和B,B的android:launchMode設置了singleTask模式,A是默認的standard,那么A startActivity啟動B,B會新啟一個Task嗎?如果不會,那么startActivity的Intent加上FLAG_ACTIVITY_NEW_TASK這個參數會不會呢?
在項目中常遇到一個需求就是在通知欄中使用PendingIntent跳轉到相關的Activity。但這個Activity往往是根據通知的內容的具體的Activity,通知來的時候有可能應用已經被KILL掉了,這時跳轉這個具體內容的DetailActivity后,我們希望按Back鍵能回退到應用的主界面(MailActivity),你會怎么做呢?
21.Android資源目錄的讀取順序?
圖片放錯目錄會產生的問題嗎?
mipmap
res/raw和assets的區別
和美工的關系
22.有沒有遇到Bitmap OOM的問題?如何優化圖片占用的內存空間?
Android系統上的圖片指的是什么?
Bitmap和Drawable
要加載很大的圖片怎么辦?
23.Android中Java和JavaScript如何交互?
Java調用WebView加載的網頁上的JavaScript
JavaScript調用本地的Java對像方法
混合開發(Hybrid App)的問題
React Native
24.兩個Fragment之間如何進行通信?
Fragment的生命周期
引申:我為什么主張反對使用Android Fragment
25.如何理解Android應用的進程?
26.如何解決ScrollView嵌套中一個ListView的滑動沖突?
27.知道什么是ART嗎?它和Dalvik有什么區別?
28.如何檢測內存泄露,如何進行內存優化?
我們為什么需要內存?
29.如何檢測內存泄露,如何進行內存優化?
MAT內存分析工具
開發中如何避免內存泄漏
30.如何實現自定義View?
invalidate和postInvalidate方法的區別?
自定義View的繪制流程?
View的Touch事件分發流程?
如何準備和Boss(或經理)的面試
31.你在Android開發中遇到的技術難題是什么,你是怎么解決的?
32.談談你使用過的Android開源庫,是否有遇到過什么問題?
如果沒有問題呢?
33.談談MVP和MVVM模式,你有在自己的項目中使用過嗎?
如何在自己的項目中使用MVP
MVP的好處與問題
MVVM模式
老司機教你如何快速突擊Android面試
Android面試的技術題準備
Android面試的項目題準備
個人問題的準備
34.介紹一下你經常瀏覽的Android技術網站
35.Binder是什么?它是如何實現跨進程通信的?
為什么要使用Binder?
Binder對應用開發者的用處
36.AIDL是什么?你有使用過它嗎,它支持哪些數據類型?