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