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