android面試題庫
android工程師的面試前的準備很重要,那么你知道有哪些關于安卓的面試題嗎?以下是小編幫你們整理的android面試題庫,一起來學習啦。
android面試題篇一
1.android 中線程與線程,進程與進程之間如何通信
1)、一個 Android 程序開始運行時,會單獨啟動一個 Process 。
默認情況下,所有這個程序中的 Activity 或者 Service 都會跑在這個 Process 。
默認情況下,一個 Android 程序也只有一個 Process ,但一個 Process 下卻可以有許多個 Thread。
2 )、一個 Android 程序開始運行時,就有一個主線程 Main Thread 被創建。該線程主要負責 UI 界面的顯示、更新和控件交互,所以又叫 UI Thread 。
一個 Android 程序創建之初,一個 Process 呈現的是單線程模型 — 即 Main Thread ,所有的任務都在一個線程中運行。所以, Main Thread 所調用的每一個函數,其耗時應該越短越好。而對于比較費時的工作,應該設法交給子線程去做,以避免阻塞主線程(主線程被阻塞,會導致程序假死現象)。
3 )、 Android 單線程模型: Android UI 操作并不是線程安全的并且這些操作必須在 UI 線程中執行。如果在子線程中直接修改 UI ,會導致異常。
2.Android dvm 的進程和 Linux 的進程 , 應用程序的進程是否為同一個概念
DVM 指 dalivk 的虛擬機。每一個 Android 應用程序都在它自己的進程中運行,都擁有一個獨立的 Dalvik 虛擬機實例。而每一個 DVM 都是在 Linux 中的一個進程,所以說可以認為是同一個概念。
3.sim 卡的 EF 文件有何作用
sim 卡的文件系統有自己規范,主要是為了和手機通訊, sim 本身可以有自己的操作系統,EF 就是作存儲并和手機通訊用的
4.android 中的動畫有哪幾類,它們的特點和區別是什么 ?
兩種,一種是 Tween 動畫、還有一種是 Frame 動畫。 Tween 動畫,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化 ; 另一種 Frame 動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。
5.描述handler 機制的原理
andriod提供了 Handler 和 Looper 來滿足線程間的通信。
Handler 先進先出原則。Looper類用來管理特定線程內對象之間的消息交換(Message Exchange)。
1)Looper: 一個線程可以產生一個Looper對象,由它來管理此線程里的Message Queue(消息隊列)。
2)Handler: 你可以構造Handler對象來與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來的消息。
3)Message Queue(消息隊列):用來存放線程放入的消息。
4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue。
android面試題篇二
1. 如何將 SQLite 數據庫 (dictionary.db 文件 ) 與 apk 文件一起發布 ?
解答:可以將 dictionary.db 文件復制到 Eclipse Android 工程中的 res aw 目錄中。所有在 res aw 目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。可以將 dictionary.db 文件復制到 res aw 目錄中
2. 如何將打開 res aw 目錄中的數據庫文件 ?
解答:在 Android 中不能直接打開 res aw 目錄中的數據庫文件,而需要在程序第一次啟動時將該文件復制到手機內存或 SD 卡的某個目錄中,然后再打開該數據庫文件。復制的基本方法是使用getResources().openRawResource 方法獲得 res aw 目錄中資源的 InputStream 對象,然后將該InputStream 對象中的數據寫入其他的目錄中相應文件中。在 Android SDK 中可以使用SQLiteDatabase.openOrCreateDatabase 方法來打開任意目錄中的 SQLite 數據庫文件。
3. 在 android 中 mvc 的具體體現
MVC 是 Model,View,Controller 的縮寫,從上圖可以看出 MVC 包含三個部分:
.. 模型( Model )對象:是應用程序的主體部分,所有的業務邏輯都應該寫在該層。
.. 視圖( View )對象:是應用程序中負責生成用戶界面的部分。也是在整個MVC 架構中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結果。
.. 控制器( Control )對象:是根據用戶的輸入,控制用戶界面數據顯示及更新 Model 對象狀態的部分,控制器更重要的一種導航功能,想用用戶出發的相關事件,交給 M 哦得了處理。
Android 鼓勵弱耦合和組件的重用,在 Android 中 MVC 的具體體現如下
1) 視圖層( view ):一般采用 xml 文件進行界面的描述,使用的時候可以非常方便的引入,當然,如何你對 android 了解的比較的多了話,就一定可以想到在 android 中也可以使用JavaScript+html 等的方式作為 view 層,當然這里需要進行 Java 和 JavaScript 之間的通信,幸運的是, android 提供了它們之間非常方便的通信實現。
2) 控制層( controller ): android 的控制層的重任通常落在了眾多的 acitvity 的肩上,這句話也就暗含了不要在 acitivity 中寫代碼,要通過 activity 交割 model 業務邏輯層處理,這樣做的另外一個原因是 android 中的 acitivity 的響應時間是 5s ,如果耗時的操作放在這里,程序就很容易被回收掉。
3) 模型層( model ):對數據庫的操作、對網絡等的操作都應該在 model 里面處理,當然對業務計算等操作也是必須放在的該層的。
android面試題篇三
1、Android中五種數據存儲方式分別是什么?他們的特點?
Android提供了五種存取數據的方式
1)SharedPreference,存放較少的五種類型的數據,只能在同一個包內使用,生成XML的格式存放在設備中;
2)SQLite數據庫,存放各種數據,是一個輕量級的嵌入式數據庫;
3)File文件,通過讀取寫入方式生成文件存放數據;
4)ContentProvider,主要用于讓其他應用程序使用保存的數據;
5)通過網絡獲取數據和寫入數據到網絡存儲空間。
2、說說 android 中 mvc 的具體體現
mvc是model,view,controller的縮寫,mvc包含三個部分:
模型(model)對象:是應用程序的主體部分,所有的業務邏輯都應該寫在該層。 視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結果。
控制器(control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,響應用戶出發的相關事件,交給m層處理。
android鼓勵弱耦合和組件的重用,在android中mvc的具體體現如下:
1)視圖(view):一般采用xml文件進行界面的描述,使用的時候可以非常方便的引入。
2)控制層(controller):android的控制層的重任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在activity中寫過多的代碼,要通過activity交割model業務邏輯層處理,這樣做的另外一個原因是android中的activity的響應時間是5s,如果耗時的操作放在這里,程序就很容易被回收掉。
3)模型層(model):對數據庫的操作、對網絡等的操作都應該在model里面處理,當然對業務計算等操作也是必須放在的該層的。
3、簡述SharedPreferences存儲方式以及SharedPreferences與SQLite數據庫的區別。
SharedPreferences也是一種輕型的數據存儲方式,它的本質是基于XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。
SharedPreferences對象本身只能讀取數據而不支持寫入數據,存儲修改是通過Editor對象實現。
SharedPreferences對象與SQLite數據庫相比,免去了創建數據庫,創建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。
但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數據類型,比如其無法進行條件查詢等。
所以不論SharedPreferences的數據存儲操作是如何簡單,它也只能是存儲方式的一種補充,而無法完全替代如SQLite數據庫這樣的其他數據存儲方式。
看了“android面試題庫”的人還看過:
1.
2.
3.
4.
5.