- 相關(guān)推薦
android面試題整理
android面試中,面試官會問哪些問題呢?你都準備好了嗎?了解面試題目很有必要,以下是陽光網(wǎng)小編幫你們整理的android面試題整理,一起來學習啦。
android面試題整理篇一
1. 請介紹下android的數(shù)據(jù)存儲方式。
SharedPreferences方式
用來存儲”key-value paires”格式的數(shù)據(jù),它是一個輕量級的鍵值存儲機制,只可以存儲基本數(shù)據(jù)類型,可以通過它保存一些上次用戶所做的修改操作
文件存儲方式
它通過FileInputStream和FileOutputStream對文件進行操作。但是在Android中,文件是一個應用程序私有的,一個應用程序無法讀寫其他應用程序的文件,如果要共享數(shù)據(jù)就用Content Providers
SQLite數(shù)據(jù)庫方式
Android提供的一個標準的數(shù)據(jù)庫,支持SQL語句
內(nèi)容提供器(Content provider)方式
是所有應用程序之間數(shù)據(jù)存儲和檢索的橋梁,它的作用是使得各個應用程序之間實現(xiàn)數(shù)據(jù)共享
網(wǎng)絡存儲方式
通過網(wǎng)絡來存儲和獲取數(shù)據(jù)
2.請介紹下ContentProvider是如何實現(xiàn)數(shù)據(jù)共享的。
Android提供了ContentProvider,一個程序可以通過實現(xiàn)一個ContentProvider的抽象接口將自己的數(shù)據(jù)完全暴露出去,而且ContentProviders是以類似數(shù)據(jù)庫中表的方式將數(shù)據(jù)暴露,也就是說ContentProvider就像一個“數(shù)據(jù)庫”。那么外界獲取其提供的數(shù)據(jù),也就應該與從數(shù)據(jù)庫中獲取數(shù)據(jù)的操作基本一樣,只不過是采用URI來表示外界需要訪問的“數(shù)據(jù)庫”。外部訪問通過ContentResolver去訪問并操作這些被暴露的數(shù)據(jù)。
3.如何啟用Service,如何停用Service。
Intent intent = new Intent();
intent.setClass(this,cba.class);
startService(intent);
stopService(intent);
4. 請解釋下在單線程模型中Message,Handler,Message Queue,Looper之間的關(guān)系。
Message
Message消息,理解為線程間交流的信息,處理數(shù)據(jù)后臺線程需要更新UI,則發(fā)送Message內(nèi)含一些數(shù)據(jù)給UI線程。
Handler
Handler處理者,是Message的主要處理者,負責Message的發(fā)送,Message內(nèi)容的執(zhí)行處理。后臺線程就是通過傳進來的 Handler對象引用來sendMessage(Message)。而使用Handler,需要implement 該類的 handleMessage(Message)方法,它是處理這些Message的操作內(nèi)容,例如Update UI。通常需要子類化Handler來實現(xiàn)handleMessage方法。
Message Queue
Message Queue消息隊列,用來存放通過Handler發(fā)布的消息,按照先進先出執(zhí)行。 每個message queue都會有一個對應的Handler。Handler會向message queue通過兩種方法發(fā)送消息:sendMessage或post。這兩種消息都會插在message queue隊尾并按先進先出執(zhí)行。但通過這兩種方法發(fā)送的消息執(zhí)行的方式略有不同:通過sendMessage發(fā)送的是一個message對象,會被 Handler的`handleMessage()函數(shù)處理;而通過post方法發(fā)送的是一個runnable對象,則會自己執(zhí)行。
Looper
Looper是每條線程里的Message Queue的管家。Android沒有Global的Message Queue,而Android會自動替主線程(UI線程)建立Message Queue,但在子線程里并沒有建立Message Queue。所以調(diào)用Looper.getMainLooper()得到的主線程的Looper不為NULL,但調(diào)用Looper.myLooper() 得到當前線程的Looper就有可能為NULL。
5.請解釋下Android程序運行時權(quán)限與文件系統(tǒng)權(quán)限的區(qū)別。
Android程序運行 是虛擬機Dalvik( android授權(quán))
文件系統(tǒng) 是 linux 內(nèi)核 授權(quán)
android面試題整理篇二
1、 有一個一維整型數(shù)組int[] data保存的是一張寬為width,高為height的圖片像素值信息。請寫一個算法,將該圖片所有的白色不透明(0xffffffff)像素點的透明度調(diào)整為50%。
答:像素數(shù)組int[]data里就是一個個像素的顏色值,你循環(huán)和0xffffffff比較,如果相等,那么就把這個值換成0x88ffffff就行了,這樣像素數(shù)組里所有的白色不透明(0xffffffff)都變成的半透明
2、 你如何評價Android系統(tǒng)?優(yōu)缺點。
優(yōu)點:開源特性,得到眾多廠商支持。
軟件發(fā)展很快。
界面UI,系統(tǒng)優(yōu)化不錯。
缺點:版本過多,升級過快。
用戶體驗不一致。
3、android中的動畫有哪幾類,他們的特點和區(qū)別是什么?
兩種,
一種是Tween動畫(補間動畫),
一種是Frame動畫(逐幀動畫)。
Tween動畫:使試圖組件移動,放大,縮小以及產(chǎn)生透明度的變化。
Frame動畫:傳統(tǒng)的動畫方法,通過順序的播放排列好的'圖片來實現(xiàn),類似電影。
4、橫豎屏切換時activity的生命周期
不設置Activity的android:configChanges時,切屏會重新調(diào)用各個生命周期,切橫屏時會執(zhí)行一次,切豎屏時會執(zhí)行兩次。
設置Activity的android:configChanges="orientation"時,切橫,豎屏時生命周期只會執(zhí)行一次。
設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調(diào)用聲明周期,只會執(zhí)行onConfigurationChanged方法。
進程與線程
當一個程序開始運行時,它就是一個進程,進程包含運行中的程序和程序所使用的內(nèi)存和系統(tǒng)資源。而一個進程又是由多個線程組成的。引入線程優(yōu)點是易于調(diào)度,提供開發(fā)效率,通過線程可以方便有效的實現(xiàn)并發(fā),進程可創(chuàng)建多個線程來執(zhí)行同一個程序的不同部分,開銷小,創(chuàng)建線程比創(chuàng)建進程要快,所需開銷很少。
android面試題整理篇三
1、 Android dvm的進程和Linux的進程, 應用程序的進程是否為同一個概念
DVM指dalivk的虛擬機。每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。而每一個DVM都是在Linux 中的一個進程,所以說可以認為是同一個概念。
2、sim卡的EF 文件有何作用
sim卡的文件系統(tǒng)有自己規(guī)范,主要是為了和手機通訊,sim本 身可以有自己的操作系統(tǒng),EF就是作存儲并和手機通訊用的
3、嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種, 各有何特性
頁式,段式,段頁,用到了MMU,虛擬空間等技術(shù)
4、 什么是嵌入式實時操作系統(tǒng), Android 操作系統(tǒng)屬于實時操作系統(tǒng)嗎?
嵌入式實時操作系統(tǒng)是指當外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應,并控制所有實時任務協(xié)調(diào)一致運行的嵌入式操作系統(tǒng)。主要用于工業(yè)控制、軍事設備、航空航天等領域?qū)ο到y(tǒng)的響應時間有苛刻的要求,這就需要使用實時系統(tǒng)。又可分為軟實時和硬實時兩種,而android是基于linux內(nèi)核的,因此屬于軟實時。
5、一條最長的短信息約占多少byte?
中文70(包括標點),英文160,160個字節(jié)。
6、 android中的動畫有哪幾類,它們的特點和區(qū)別是什么?
兩種,一種是Tween動畫、還有一種是Frame動畫。Tween動畫,這種實現(xiàn)方式可以使視圖組件移動、放大、縮小以及產(chǎn)生透明度的變化;另一種Frame動畫,傳統(tǒng)的動畫方法,通過順序的播放排列好的圖片來實現(xiàn),類似電影。
7、handler機制的原理
andriod提供了 Handler 和 Looper 來滿足線程間的通信。Handler 先進先出原則。Looper類用來管理特定線程內(nèi)對象之間的消息交換(Message Exchange)。
1)Looper: 一個線程可以產(chǎn)生一個Looper對象,由它來管理此線程里的Message Queue(消息隊列)。
2)Handler: 你可以構(gòu)造Handler對象來與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來的消息。
3) Message Queue(消息隊列):用來存放線程放入的消息。
4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue。
8、說說mvc模式的原理,它在android中的運用
android的官方建議應用程序的開發(fā)采用mvc模式。
何謂mvc?
mvc是model,view,controller的縮寫,mvc包含三個部分:
l模型(model)對象:是應用程序的主體部分,所有的業(yè)務邏輯都應該寫在該層。
l視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構(gòu)中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結(jié)果。
l控制器(control)對象:是根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示及更新model對象狀態(tài)的部分,控制器更重要的一種導航功能,想用用戶出發(fā)的相關(guān)事件,交給m哦得了處理。
android鼓勵弱耦合和組件的重用,在android中mvc的具體體現(xiàn)如下:
1)視圖層(view):一般采用xml文件進行界面的描述,使用的時候可以非常方便的引入,當然,如何你對android了解的'比較的多了話,就一定可以想到在android中也可以使用javascript+html等的方式作為view層,當然這里需要進行java和javascript之間的通信,幸運的是,android提供了它們之間非常方便的通信實現(xiàn)。
2)控制層(controller):android的控制層的重任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫代碼,要通過activity交割model業(yè)務邏輯層處理,這樣做的另外一個原因是android中的acitivity的響應時間是5s,如果耗時的操作放在這里,程序就很容易被回收掉。
3)模型層(model):對數(shù)據(jù)庫的操作、對網(wǎng)絡等的操作都應該在model里面處理,當然對業(yè)務計算等操作也是必須放在的該層的。
【android面試題整理】相關(guān)文章:
android面試題201704-04
android面試題及答案04-04
android面試題大全04-04
android面試題練習04-04
總結(jié)的android面試題12-09
android測試面試題11-25
android軟件測試面試題04-04
android面試題庫04-04
android常見面試題04-04