【Android面試】Android面試題集錦 (陸續更新)
?
一些常見的Android面試基礎題做下總結,看看你能做出多少道?
?
??1. Intent的幾種有關Activity啟動的方式有哪些,你了解每個含義嗎?
?
?
?? ?這里Android123提示大家,Intent的一些標記有FLAG_ACTIVITY_BROUGHT_TO_FRONT 、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK 等。每種含義大家看SDK文檔和具體跑下這樣你的記憶會更深刻些。
?
?
??2. Activity和Task的啟動模式有哪些? 每種含義是什么?
?
?
?? 有關在AndroidManifest.xml中的android:launchMode定義,主要有standard、singleTop、singleTask和singleInstance,同時對于android:taskAffinity這些問題大家也要了解,Android開發網在以前的文章中講過,不過很多開發者仍然不是很清楚,這些基礎問題我們以后仍然會再次總結。
?
?? 關于Activity的啟動模式,參考:?http://blog.csdn.net/feng88724/archive/2011/05/11/6412638.aspx
?
??3. 通過Intent傳遞一些二進制數據的方法有哪些?
?
?
?? 1). 使用Serializable接口實現序列化,這是Java常用的方法。
?? 2). 實現Parcelable接口,這里Android的部分類比如Bitmap類就已經實現了,同時Parcelable在Android AIDL中交換數據也很常見的。
?
?
??4. 能說下Android應用的入口點嗎?
?
?
??真正的Android入口點是application的main,你可以看下androidmanifest.xml的包含關系就清楚了。 可以沒有Activity但是必須有Application
?
?
?
??5. Android都有哪些XML解析器,都熟練掌握嗎?
?
?
??這里XmlPull、SAX和DOM相信做過Web開發的都已經滾瓜爛熟了。
?
?
?
??6. SQLite支持事務嗎? 添加刪除如何提高性能?
?
?
??SQLite作為輕量級的數據庫,比MySQL還小,但支持SQL語句查詢,提高性能可以考慮通過原始經過優化的SQL查詢語句方式處理。
?
?
?
??7. Android Service和Binder、AIDL你都熟練嗎?
?
?
??作為Android重要的后臺服務,這些每個Android開發者都應該掌握,這也算是和Java SE最大的不同了,具體的實例大家可以查看Android音樂播放器的源代碼Music.git中的,這里不再贅述。
?
?
??8. 你用過哪款Android手機,有哪些優點和不足,相對于iPhone或Symbian又有哪些優缺點?
?
?
?? 把這個作為面試題也是考察下,可以大概了解到它對Android的了解程度,多移動開發的認識。
?
?
【2011-5-12 補充】
?
1.????請描述下Activity的生命周期。
???創建?oncreate -??啟動onstart –?恢復?onResume –?暫停?onPause –?結束?onEnd –?銷毀onDestroy
?
2.????如果后臺的Activity由于某原因被系統回收了,如何在被系統回收之前保存當前狀態?
?? ?在”暫停?onPause”?狀態將數據保存。
?
3.????如何將一個Activity設置成窗口的樣式。
???設置Theme。
?
?
4.????如何退出Activity?如何安全退出已調用多個Activity的Application?
?? ?
5.????請介紹下Android中常用的五種布局。
?? ?線性布局LinearLayout, 相對布局?RelativeLayout
????表單布局?TableLayout,??絕對布局AbsLayout(已淘汰)
????幀布局FrameLayout
?
6.????請介紹下Android的數據存儲方式。
?? ?Preference,文件,數據庫SQlite,網絡存儲
?
?
7.????請介紹下ContentProvider是如何實現數據共享的。
??
8.????如何啟用Service,如何停用Service。
?? ??啟動:?Context.startService()
?and?Context.bindService()
.
?? ? ?關閉:?Context.stopService()
.
?? ? ? ? ? Service.stopSelf()
?or?Service.stopSelfResult()
?
9.????注冊廣播有幾種方式,這些方式有何優缺點?請談談Android引入廣播機制的用意。
?
10.????請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關系。
???
11.??? AIDL的全稱是什么?如何工作?能處理哪些類型的數據?
???
12.????請解釋下Android程序運行時權限與文件系統權限的區別。(Edited by Sodino)
???
13.????系統上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由。
???
14.????有一個一維整型數組int[]data保存的是一張寬為width,高為height的圖片像素值信息。請寫一個算法,將該圖片所有的白色不透明(0xffffffff)像素點的透明度調整為50%。
???
15.????你如何評價Android系統?優缺點。 (這一題重復了)
?? ? ? ?優勢:??一、開放性 三、豐富的硬件選擇 五、無縫結合的Google應用支持
?
?? ? ? ?缺點: ?一、安全和隱私??二,開發商自定義,不夠統一 四、同類機型用戶減少
?
?
?
?
【2011-5-12 補充】
?
1、什么是ANR?如何避免它?
?
?http://blog.csdn.net/Zengyangtech/archive/2010/11/21/6025671.aspx
?
2、什么情況會導致Force Close??如何避免?能否捕獲導致其的異常?
?
?
3、Android本身的api并未聲明會拋出異常,則其在運行時有無可能拋出runtime異常,你遇到過嗎?諾有的話會導致什么問題?如何解決?
?
???????會有運行時異常, 運行時異常無需捕捉
?
?
4、簡要解釋一下activity、?intent?、intent filter、service、Broadcast、BroadcaseReceiver
?
?? ? ? 這個問題問的很普遍,自己多看看吧。在此不多說了!
?
5、IntentService有何優點?
?? ? ?
?
【2011-5-12 補充】
1.?android:paddingLeft與android:layout_marginLeft的區別
當按鈕分別設置以上兩個屬性時,得到的效果是不一樣的。
android:paddingLeft="30px"
按鈕上設置的內容(例如圖片)離按鈕左邊邊界30個像素
android:layout_marginLeft="30px"
整個按鈕離左邊設置的內容30個像素
?
2. Android?動畫有哪幾種??描述一下
???????兩種。?Tween動畫和Frame動畫。?Tween動畫主要是透明度、尺寸伸縮、旋轉、位移等效果。
Frame動畫可以理解成gif, 一幀一幀的顯示圖片。比較常用的有滾動條效果。
?
3.?對Intent、Activity、廣播、Service等的理解。
?
4.?哪些情況下會發生ANR ??怎么對應 ? (這個問題也重復了)
?????? Application Not Response。
??????
5.?隱式、顯式Intent的區別
·???顯式意圖??通過名字指明目標組件(這個組件名字字段component name field,?前面提到過,?有一個數值集)。既然組件名稱通常不為其他應用程序的開發者所了解,顯式意圖典型的被用作應用程序的內部消息-例如一個活動啟動一個附屬服務或姊妹活動。
?? 隱式意圖??不命名目標組件(組件名稱字段為空)。隱式意圖經常用來激活其他應用程序的組件。?
?? ?這一塊參考Intent說明,可以同時看一下Notepad的例子, 幫助理解,個人感覺很重要!
?
(上面幾個問題感覺都不錯,各位自己查漏補缺吧! 有些還沒有寫答案的, 各位有空可以回答一下~ 我會將你的答案填充上去)
?