做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的瞭解程度,多移動開發的認識。
===================================================================================
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應用支援
缺點: 一、安全和隱私
二,開發商自訂,不夠統一 四、同類機型使用者減少
=========================
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的例子, 協助理解,個人感覺很重要。
(上面幾個問題感覺都不錯,各位自己查漏補缺吧。 有些還沒有寫答案的, 各位有空可以回答一下~ 我會將你的答案填充上去)
-------------------------------------------------------------------
2011-07-05 補充
返回鍵與Home鍵區別。
back鍵預設行為是finish處於前台的Activity的即Activity的狀態為Destroy狀態為止,再次啟動該Activity是從onCreate開始的(不會調用onSaveInstanceState方法)。Home鍵預設是stop前台的Activity即狀態為onStop為止而不是Destroy,若再次啟動它,會調用onSaveInstanceState方法,保持上次Activity的狀態則是從OnRestart開始的---->onStart()--->onResume()。
【2011-10-12】百度Android工程師面試題(網友提供)(見附件)
【2011-11-21】思科面試題
1. Android中如何傳遞位元據。
2. ANR是什麼。哪些情況下會發生。開發時如何尋找ANR。
3. 解釋AIDL
4. SAX、DOM、PULL解析xml的原理,以及各自優缺點
4. DIP、DPI分別是什麼。
5.java線程的sleep(),wait(),notify(),yield()方法的區別。
1.sleep()使線程休眠一段時間,一段時間結束後,線程進入可執行狀態,但並不是立即執行,只是在被排程器調用的時候才執行。在休眠期間,並不釋放所持有的“鎖”;
2.wait()使線程休眠一段時間,若設定參數,時間到時,線程就自動進入可執行狀態。若沒有,則需要notify()方法去調用。注意:wait()方法和notify()方法都時針對this對象的,調用wait()方法後,會釋放加在對象上的“鎖”。
3.yield()使線程放棄執行的權利,進入可執行狀態,也就意味著線程在yield()方法後,有可能又執行。使用yield()方法,線程並不釋放自己鎖持有的“鎖”。