一些常見的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的例子, 協助理解,個人感覺很重要!
(上面幾個問題感覺都不錯,各位自己查漏補缺吧! 有些還沒有寫答案的, 各位有空可以回答一下~ 我會將你的答案填充上去)