android面試題目
android面試題目你有提前了解了嗎?對于面試者來說,提前對面試題目很有必要,以下是小編幫你們整理的android面試題目,一起來學(xué)習(xí)啦。
android面試題目篇一
1、View如何進(jìn)行刷新?
參考答案:
在一個開啟的線程中調(diào)用handler對象的sendMessage方法發(fā)送信息,在UI線程中調(diào)用handler對象的回調(diào)方法handleMessage進(jìn)行處理,在回調(diào)方法中執(zhí)行invalidate或者postInvalidate.
2、ANR是什么?哪些情況下會發(fā)生?開發(fā)時如何避免ANR?
參考答案:
ANR(Application Not Responding):應(yīng)用程序無應(yīng)答。默認(rèn)情況下,在android中Activity的最長阻塞時間是5秒,BroadcastReceiver的最長執(zhí)行時間則是10秒。為了避免出現(xiàn)ANR,可以在做比較耗時操作時,盡量使用子線程或Service。
3、請描述SAX、DOM、PULL解析xml的原理,以及各自優(yōu)缺點。
參考答案:
這里首先明白什么是SAX是一個用于處理XML事件驅(qū)動的“推”模型,優(yōu)點是一種解析速度快并且占用內(nèi)存少的xml解析器,它需要哪些數(shù)據(jù)再加載和解析哪些內(nèi)容。缺點是它不會記錄標(biāo)簽的關(guān)系,而要讓你的應(yīng)用程序自己處理,這樣就增加了你程序的負(fù)擔(dān)。
DOM是一種文檔對象模型,DOM可以以一種獨立于平臺和語言的方式訪問和修改一個文檔的內(nèi)容和結(jié)構(gòu)。Dom技術(shù)使得用戶頁面可以動態(tài)地變化,如 可以動態(tài)地顯示或隱藏一個元素,改變它們的屬性,增加一個元素等,Dom技術(shù)使得頁面的交互性大大地增強(qiáng)。缺點是DOM解析XML文件時,會將XML文件 的所有內(nèi)容以文檔樹方式存放在內(nèi)存中。
Pull解析和Sax解析很相似,Pull解析和Sax解析不一樣的地方是pull讀取xml文件后觸發(fā)相應(yīng)的事件調(diào)用方法返回的是數(shù)字還有pull可以在程序中控制想解析到哪里就可以停止解析
4、請解釋什么是AIDL?
參考答案: AIDL:Android Interface Definition Language,即Android接口描述語言。 Android系統(tǒng)中的進(jìn)程之間不能共享內(nèi)存,因此,需要提供一些機(jī)制在不同進(jìn)程之間進(jìn)行數(shù)據(jù)通信。
為了使其他的應(yīng)用程序也可以訪問本應(yīng)用程序提供的服務(wù),Android系統(tǒng)采用了遠(yuǎn)程過程調(diào)用(Remote Procedure Call,RPC)方式來實現(xiàn)。與很多其他的基于RPC的解決方案一樣,Android使用一種接口定義語言(Interface Definition Language,IDL)來公開服務(wù)的接口。我們知道4個Android應(yīng)用程序組件中的3個(Activity、Broadcast和Content Provider)都可以進(jìn)行跨進(jìn)程訪問,另外一個Android應(yīng)用程序組件Service同樣可以。因此,可以將這種可以跨進(jìn)程訪問的服務(wù)稱為AIDL(Android Interface Definition Language)服務(wù)。
5、DIP、DPI分別是什么?
參考答案:
dip(device independent pixels)設(shè)備獨立像素, 與設(shè)備屏幕有關(guān)。dpi:屏幕像素密度。 android最早是沒有考慮到這么多屏幕分辨率的。最早的機(jī)器是g1,他的分辨率是480*320。但是,由于android是開放的平臺,各種各樣分辨率的設(shè)備都可以運(yùn)行。為了兼容這些平臺,android從1.6開始,加入了設(shè)備獨立像素,dip或者dp。標(biāo)準(zhǔn)屏幕480*320上,px與dip是1比1的。分辨率高的,比如800*480,就要按比例兌換成480*320。
開發(fā)者在開發(fā)的時候,ui設(shè)計時最好用dp,系統(tǒng)會自動按比例計算為px,從而適配視圖。 dpi是屏幕像素密度。就是1英寸上像素點的個數(shù)。對于屏幕來說,dpi越大,屏幕的精細(xì)度越高,屏幕看起來就越清楚。比如iphone4的視網(wǎng)膜級的屏幕肯定比iphone 3gs的屏幕像素密度高的多。 對于開發(fā)者來說,這個不是很重要。
android面試題目篇二
1、請介紹下Android中常用的五種布局。
參考答案:
答:在Android中,共有五種布局方式,分別是:FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)。
(1)FrameLayout 框架布局,放入其中的所有元素都被放置在最左上的區(qū)域,而且無法為這些元素指定一個確切的位置,下一個子元素會重疊覆蓋上一個子元素,適合瀏覽單張圖片。
(2)LinearLayout 線性布局,是應(yīng)用程序中最常用的布局方式,主要提供控件水平或者垂直排列的模型,每個子組件都是以垂直或水平的方式來定位(默認(rèn)是垂直)。
(3)AbsoluteLayout 絕對定位布局,采用坐標(biāo)軸的方式定位組件,左上角是(0,0)點,往右x軸遞增,往下Y軸遞增,組件定位屬性為android:layout_x 和 android:layout_y來確定坐標(biāo)。
(4)RelativeLayout 相對布局,根據(jù)另外一個組件或是頂層父組件來確定下一個組件的位置。和CSS里面的類似。
(5)TableLayout 表格布局,類似Html里的Table.使用TableRow來布局,其中TableRow代表一行,TableRow的每一個視圖組件代表一個單元格。
2、請介紹下Android的數(shù)據(jù)存儲方式。
參考答案:
答:Android提供了5種方式存儲數(shù)據(jù):
(1)使用SharedPreferences存儲數(shù)據(jù);它是Android提供的用來存儲一些簡單配置信息的一種機(jī)制,采用了XML格式將數(shù)據(jù)存儲到設(shè)備中。只能在同一個包內(nèi)使用,不能在不同的包之間使用。
(2)文件存儲數(shù)據(jù);文件存儲方式是一種較常用的方法,在Android中讀取/寫入文件的方法,與Java中實現(xiàn)I/O的程序是完全一樣的,提供了openFileInput()和openFileOutput()方法來讀取設(shè)備上的文件。
(3)SQLite數(shù)據(jù)庫存儲數(shù)據(jù);SQLite是Android所帶的一個標(biāo)準(zhǔn)的數(shù)據(jù)庫,它支持SQL語句,它是一個輕量級的嵌入式數(shù)據(jù)庫。
(4)使用ContentProvider存儲數(shù)據(jù);主要用于應(yīng)用程序之間進(jìn)行數(shù)據(jù)交換,從而能夠讓其他的應(yīng)用保存或讀取此Content Provider的各種數(shù)據(jù)類型。
(5)網(wǎng)絡(luò)存儲數(shù)據(jù);通過網(wǎng)絡(luò)上提供給我們的存儲空間來上傳(存儲)和下載(獲取)我們存儲在網(wǎng)絡(luò)空間中的數(shù)據(jù)信息。!
3、請說明隱式、顯式Intent的區(qū)別?
參考答案:
顯式Intent直接用組件的名稱定義目標(biāo)組件,這種方式很直接。但是由于開發(fā)人員往往并不清楚別的應(yīng)用程序的組件名稱,因此,顯式Intent更多用于在應(yīng)用程序內(nèi)部傳遞消息。比如在某應(yīng)用程序內(nèi),一個Activity啟動一個Service。
隱式Intent恰恰相反,它不會用組件名稱定義需要激活的目標(biāo)組件,它更廣泛地用于在不同應(yīng)用程序之間傳遞消息。
在顯式Intent消息中,決定目標(biāo)組件的唯一要素就是組件名稱,因此,如果你的Intent中已經(jīng)明確定義了目標(biāo)組件的名稱,那么你就完全不用再定義其他Intent內(nèi)容。
而對于隱式Intent則不同,由于沒有明確的目標(biāo)組件名稱,所以必須由Android系統(tǒng)幫助應(yīng)用程序?qū)ふ遗cIntent請求意圖最匹配的組件。
android面試題目篇三
1、請說明getWritableDatabase()和getReadableDatabase()的區(qū)別?
參考答案:
getReadableDatabase()并不是以只讀方式打開數(shù)據(jù)庫,而是先執(zhí)getWritableDatabase(),失敗的情況下才調(diào)用。getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用于操作數(shù)據(jù)庫的SQLiteDatabase實例。但getWritableDatabase() 方法以讀寫方式打開數(shù)據(jù)庫,一旦數(shù)據(jù)庫的磁盤空間滿了,數(shù)據(jù)庫就只能讀而不能寫,倘若使用getWritableDatabase()打開數(shù)據(jù)庫就會出錯。getReadableDatabase()方法先以讀寫方式打開數(shù)據(jù)庫,如果數(shù)據(jù)庫的磁盤空間滿了,就會打開失敗,當(dāng)打開失敗后會繼續(xù)嘗試以只讀方式打開數(shù)據(jù)庫。
2、請描述下Activity的生命周期。
參考答案:
activity的生命周期方法有:onCreate()、onStart()、onReStart()、onResume()、onPause()、onStop()、onDestory()。
activity主要生命周期的方法說明:
onCreate(Bundle savedInstanceState):創(chuàng)建activity時調(diào)用。設(shè)置在該方法中,還以Bundle的形式提供對以前儲存的任何狀態(tài)的訪問!
onStart():activity變?yōu)樵谄聊簧蠈τ脩艨梢姇r調(diào)用。
onResume():activity開始與用戶交互時調(diào)用(無論是啟動還是重新啟動一個活動,該方法總是被調(diào)用的)。
onPause():activity被暫停或收回cpu和其他資源時調(diào)用,該方法用于保存活動狀態(tài)的,也是保護(hù)現(xiàn)場,壓棧吧!
onStop():activity被停止并轉(zhuǎn)為不可見階段及后續(xù)的生命周期事件時調(diào)用。
onRestart():重新啟動activity時調(diào)用。該活動仍在棧中,而不是啟動新的活動。
onDestroy():activity被完全從系統(tǒng)內(nèi)存中移除時調(diào)用,該方法被調(diào)用
3、如何將一個Activity設(shè)置成窗口的樣式。
參考答案:
只需要設(shè)置 一下Activity的主題就可以了,在AndroidManifest.xml 中定義 Activity的地方加上android :theme="@android:style/Theme.Dialog"這就使你的應(yīng)用程序變成對話框的形式彈出來了?;蛘遖ndroid:theme="@android:style/Theme.Translucent"。就變成半透明的。
4、Android中Activity, Intent, Content Provider, Service各有什么區(qū)別?
參考答案:
答:Activity:活動,是最基本的android應(yīng)用程序組件。一個活動就是一個單獨的屏幕,每一個活動都被實現(xiàn)為一個獨立的類,并且從活動基類繼承而來。
Intent:意圖,描述應(yīng)用想干什么。最重要的部分是動作和動作對應(yīng)的數(shù)據(jù)。
Content Provider:內(nèi)容提供器,android應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQLite數(shù)據(jù)庫中,甚至是任何有效的設(shè)備中。當(dāng)你想將你的應(yīng)用數(shù)據(jù)和其他應(yīng)用共享時,內(nèi)容提供器就可以發(fā)揮作用了。
Service:服務(wù),具有一段較長生命周期且沒有用戶界面的程序。
5、你如何評價Android系統(tǒng)優(yōu)缺點?
參考答案:
優(yōu)勢:
一、開放性
二、豐富的硬件選擇
三、無縫結(jié)合的Google應(yīng)用支持
缺點:
一、安全和隱私
二,開發(fā)商自定義,不夠統(tǒng)一
三、同類機(jī)型用戶減少
看了“android面試題目”的人還看過:
1.
2.
3.
4.
5.