第一篇:android面試題
選擇題(包括多選)
1.下列哪些語(yǔ)句關(guān)于內(nèi)存回收的說(shuō)明是正確的?
A、程序員必須創(chuàng)建一個(gè)線(xiàn)程來(lái)釋放內(nèi)存
B、內(nèi)存回收程序負(fù)責(zé)釋放無(wú)用內(nèi)存
C、內(nèi)存回收程序允許程序員直接釋放內(nèi)存
D、內(nèi)存回收程序可以在指定的時(shí)間釋放內(nèi)存對(duì)象
2.下面異常是屬于Runtime Exception 的是
A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、BufferUnderflowException
3.Math.round(-11.5)等于多少
A、11 ,-11
B、11 ,-12
C、12 ,-11
D、12 ,-1
24.下列程序段的輸出結(jié)果是:
void complicatedexpression_r(){
int x=20, y=30;
boolean b;
b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;
System.out.println(b);
}
A、true
B、false
C、1
D、011.activity
5.對(duì)一些資源以及狀態(tài)的操作保存,最好是保存在生命周期的哪個(gè)函數(shù)中進(jìn)行
A、onPause()
B、onCreate()
C、onResume()
D、onStart()
6.Intent傳遞數(shù)據(jù)時(shí),下列的數(shù)據(jù)類(lèi)型哪些可以被傳遞
A、Serializable
B、charsequence
C、Parcelable
D、Bundle
7.android 中下列屬于Intent的作用的是
A、實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)共享
B、是一段長(zhǎng)的生命周期,沒(méi)有用戶(hù)界面的程序,可以保持應(yīng)用在后臺(tái)運(yùn)行,而不會(huì)因?yàn)榍袚Q頁(yè)面而消失
C、可以實(shí)現(xiàn)界面間的切換,可以包含動(dòng)作和動(dòng)作數(shù)據(jù),連接四大組件的紐帶
D、處理一個(gè)應(yīng)用程序整體性的工作
8.下列屬于SAX解析xml文件的優(yōu)點(diǎn)的是
A、將整個(gè)文檔樹(shù)在內(nèi)存中,便于操作,支持刪除,修改,重新排列等多種功能
B、不用事先調(diào)入整個(gè)文檔,占用資源少
C、整個(gè)文檔調(diào)入內(nèi)存,浪費(fèi)時(shí)間和空間
D、不是長(zhǎng)久駐留在內(nèi)存,數(shù)據(jù)不是持久的,事件過(guò)后,若沒(méi)有保存數(shù)據(jù),數(shù)據(jù)就會(huì)
消失
9.在android中使用SQLiteOpenHelper這個(gè)輔助類(lèi)時(shí),可以生成一個(gè)數(shù)據(jù)庫(kù),并可以對(duì)數(shù)據(jù)庫(kù)版本進(jìn)行管理的方法可以是()
A、getWriteableDatabase()
B、getReadableDatabase()
C、getDatabase()
D、getAbleDatabase()
10.android 關(guān)于service生命周期的onCreate()和onStart()說(shuō)法正確的是
A、當(dāng)?shù)谝淮螁?dòng)的時(shí)候先后調(diào)用onCreate()和onStart()方法
B、當(dāng)?shù)谝淮螁?dòng)的時(shí)候只會(huì)調(diào)用onCreate()方法
C、如果service已經(jīng)啟動(dòng),將先后調(diào)用onCreate()和onStart()方法
D、如果service已經(jīng)啟動(dòng),只會(huì)執(zhí)行onStart()方法,不在執(zhí)行onCreate()方法
11.下面是屬于GLSurFaceView特性的是
A、管理一個(gè)surface,這個(gè)surface就是一塊特殊的內(nèi)存,能直接排版到android的視圖view上。
B、管理一個(gè)EGL display,它能讓opengl把內(nèi)容渲染到上述的surface上。
C、讓渲染器在獨(dú)立的線(xiàn)程里運(yùn)作,和UI線(xiàn)程分離。
D、可以直接從內(nèi)存或者DMA等硬件接口取得圖像數(shù)據(jù)
12.下面在AndroidManifest.xml文件中注冊(cè)BroadcastReceiver方式正確的A、
android:name=“android.provider.action.NewBroad”/> B、 android:name=“android.provider.action.NewBroad”/> C、 android:name=“android.provider.action.NewBroad”/> D、 android:name=“android.provider.action.NewBroad”/> 13.關(guān)于ContenValues類(lèi)說(shuō)法正確的是 A、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名是String類(lèi)型,而值都是基本類(lèi)型 B、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名是任意類(lèi)型,而值都是基本類(lèi)型 C、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名,可以為空,而值都是String類(lèi)型 D、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名是String類(lèi)型,而值也是String類(lèi)型 14.我們都知道Hanlder是線(xiàn)程與Activity通信的橋梁,如果線(xiàn)程處理不當(dāng),你的機(jī)器就會(huì)變得越慢,那么線(xiàn)程銷(xiāo)毀的方法是 A、onDestroy() B、onClear() C、onFinish() D、onStop() 15.下面退出Activity錯(cuò)誤的方法是 A、finish() B、拋異常強(qiáng)制退出 C、System.exit() D、onStop() 16.下面屬于android的動(dòng)畫(huà)分類(lèi)的有 A、Tween B、Frame C、Draw D、Animation 17.下面關(guān)于Android dvm的進(jìn)程和Linux的進(jìn)程,應(yīng)用程序的進(jìn)程說(shuō)法正確的是 A、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,不一定擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM都是在Linux中的一個(gè)進(jìn)程,所以說(shuō)可以認(rèn)為是同一個(gè)概念.B、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,不一定擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM不一定都是在Linux中的一個(gè)進(jìn)程,所以說(shuō)不是一個(gè)概念.C、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM不一定都是在Linux中的一個(gè)進(jìn)程,所以說(shuō)不是一個(gè)概念.D、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的 Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM都是在Linux中的一個(gè)進(jìn)程,所以說(shuō)可以認(rèn)為是同一個(gè)概念.18.Android項(xiàng)目工程下面的assets目錄的作用是什么 A、放置應(yīng)用到的圖片資源。 B、主要放置多媒體等數(shù)據(jù)文件 C、放置字符串,顏色,數(shù)組等常量數(shù)據(jù) D、放置一些與UI相應(yīng)的布局文件,都是xml文件 19.關(guān)于res/raw目錄說(shuō)法正確的是 A、這里的文件是原封不動(dòng)的存儲(chǔ)到設(shè)備上不會(huì)轉(zhuǎn)換為二進(jìn)制的格式 B、這里的文件是原封不動(dòng)的存儲(chǔ)到設(shè)備上會(huì)轉(zhuǎn)換為二進(jìn)制的格式 C、這里的文件最終以二進(jìn)制的格式存儲(chǔ)到指定的包中 D、這里的文件最終不會(huì)以二進(jìn)制的格式存儲(chǔ)到指定的包中 20.下列對(duì)android NDK的理解正確的是 A、NDK是一系列工具的集合B、NDK 提供了一份穩(wěn)定、功能有限的 API 頭文件聲明。 C、使 “Java+C” 的開(kāi)發(fā)方式終于轉(zhuǎn)正,成為官方支持的開(kāi)發(fā)方式 D、NDK 將是 Android平臺(tái)支持 C 開(kāi)發(fā)的開(kāi)端 問(wèn)答題: 1.系統(tǒng)上安裝了多種瀏覽器,能否指定某瀏覽器訪(fǎng)問(wèn)指定頁(yè)面?請(qǐng)說(shuō)明原由。 2.Activity和Task的啟動(dòng)模式有哪些? 每種含義是什么? 3.SQLite支持事務(wù)嗎? 添加刪除如何提高性能? 4.對(duì)Intent、Activity、廣播、Service等的理解 5、handler機(jī)制的原理 Android 面試題(有詳細(xì)答案) 附帶答案,共100分 一、選擇題(30題,每題1.5分,共45分) 1.java.io包中定義了多個(gè)流類(lèi)型來(lái)實(shí)現(xiàn)輸入和輸出功能,可以從不同的角度對(duì)其進(jìn)行分類(lèi),按功能分為:(c),如果為讀取的內(nèi)容進(jìn)行處理后再輸出,需要使用下列哪種流?() A、輸入流和輸出流B、字節(jié)流和字符流C、節(jié)點(diǎn)流和處理流 D、File streamE、Pipe streamF、Random streamG、Filter stream 2.下列代碼的執(zhí)行結(jié)果是:() public class Test3{ public static void main(String args[]){ System.out.print(100%3); System.out.print(“,”); System.out.println(100%3.0); } } A、1,1 B、1,1.0 C、1.0,1 D、1.0,1.0 3.在繼承中,關(guān)于構(gòu)造方法的說(shuō)明,下列說(shuō)法錯(cuò)誤的是() A、子類(lèi)無(wú)條件的繼承父類(lèi)的無(wú)參構(gòu)造方法,B、子類(lèi)可以引用父類(lèi)中的有參構(gòu)造方法,使用super關(guān)鍵字,C、如果子類(lèi)沒(méi)有構(gòu)造方法,則父類(lèi)無(wú)參構(gòu)造方法作為自已的構(gòu)造方法,D、如果子類(lèi)有無(wú)參構(gòu)造方法,而父類(lèi)的無(wú)參構(gòu)造方法則被覆蓋。 4.以下程序的運(yùn)行結(jié)果為() public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) System.out.println(“Not equal”); else System.out.println(“Equal”); } } A、Not equalB、EqualC、無(wú)輸出D、編譯出錯(cuò) 5.Java語(yǔ)言中字符串“學(xué)Java”所占的內(nèi)存空間是() A.6個(gè)字節(jié) B.7個(gè)字節(jié) C.10個(gè)字節(jié) D.11個(gè)字節(jié) 6.關(guān)于下列程序段的輸出結(jié)果,說(shuō)法正確的是:() public class MyClass{ static int i; public static void main(String argv[]){ System.out.println(i); } } A、有錯(cuò)誤,變量i沒(méi)有初始化。 B、null C、1 D、0 7.下列哪些語(yǔ)句關(guān)于內(nèi)存回收的說(shuō)明是正確的?() A、程序員必須創(chuàng)建一個(gè)線(xiàn)程來(lái)釋放內(nèi)存 B、內(nèi)存回收程序負(fù)責(zé)釋放無(wú)用內(nèi)存 C、內(nèi)存回收程序允許程序員直接釋放內(nèi)存 D、內(nèi)存回收程序可以在指定的時(shí)間釋放內(nèi)存對(duì)象 8.下面異常是屬于Runtime Exception 的是()(多選) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException 9.Math.round(11.5)等于多少().Math.round(-11.5)等于多少().A、11 ,-11B、11 ,-12C、12 ,-11D、12 ,-12 10.下列程序段的輸出結(jié)果是:() void complicatedexpression_r(){ int x=20, y=30; boolean b; b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60; System.out.println(b); } A、trueB、falseC、1D、0 11.activity對(duì)一些資源以及狀態(tài)的操作保存,最好是保存在生命周期的哪個(gè)函數(shù)中進(jìn)行 () A、onPause()B、onCreate()C、onResume()D、onStart() 12.Intent傳遞數(shù)據(jù)時(shí),下列的數(shù)據(jù)類(lèi)型哪些可以被傳遞()(多選) A、SerializableB、charsequenceC、ParcelableD、Bundle 13.android 中下列屬于Intent的作用的是() A、實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)共享 B、是一段長(zhǎng)的生命周期,沒(méi)有用戶(hù)界面的程序,可以保持應(yīng)用在后臺(tái)運(yùn)行,而不會(huì) 因?yàn)榍袚Q頁(yè)面而消失 C、可以實(shí)現(xiàn)界面間的切換,可以包含動(dòng)作和動(dòng)作數(shù)據(jù),連接四大組件的紐帶 D、處理一個(gè)應(yīng)用程序整體性的工作 14.下列屬于SAX解析xml文件的優(yōu)點(diǎn)的是() A、將整個(gè)文檔樹(shù)在內(nèi)存中,便于操作,支持刪除,修改,重新排列等多種功能 B、不用事先調(diào)入整個(gè)文檔,占用資源少 C、整個(gè)文檔調(diào)入內(nèi)存,浪費(fèi)時(shí)間和空間 D、不是長(zhǎng)久駐留在內(nèi)存,數(shù)據(jù)不是持久的,事件過(guò)后,若沒(méi)有保存數(shù)據(jù),數(shù)據(jù)就會(huì) 消失 15.下面的對(duì)自定style的方式正確的是() A、 B、 C、 D、 16.在android中使用Menu時(shí)可能需要重寫(xiě)的方法有()。(多選) A、onCreateOptionsMenu() B、onCreateMenu() C、onOptionsItemSelected() D、onItemSelected() 17.在SQL Server Management Studio 中運(yùn)行下列T-SQL語(yǔ)句,其輸出值()。 SELECT @@IDENTITY A、可能為0.1 B、可能為3 C、不可能為-100 D、肯定為0 18.在SQL Server 2005中運(yùn)行如下T-SQL語(yǔ)句,假定SALES表中有多行數(shù)據(jù),執(zhí)行查詢(xún)之后的結(jié)果是()。 BEGIN TRANSACTION A Update SALES Set qty=30 WHERE qty<30 BEGIN TRANSACTION B Update SALES Set qty=40 WHERE qty<40 Update SALES Set qty=50 WHERE qty<50 Update SALES Set qty=60 WHERE qty<60 COMMIT TRANSACTION B COMMIT TRANSACTION A A、SALES表中qty列最小值大于等于30 B、SALES表中qty列最小值大于等于40 C、SALES表中qty列的數(shù)據(jù)全部為50 D、SALES表中qty列最小值大于等于60 19.在android中使用SQLiteOpenHelper這個(gè)輔助類(lèi)時(shí),可以生成一個(gè)數(shù)據(jù)庫(kù),并可以對(duì)數(shù) 據(jù)庫(kù)版本進(jìn)行管理的方法可以是() A、getWriteableDatabase() B、getReadableDatabase() C、getDatabase() D、getAbleDatabase() 20.android 關(guān)于service生命周期的onCreate()和onStart()說(shuō)法正確的是()(多選題) A、當(dāng)?shù)谝淮螁?dòng)的時(shí)候先后調(diào)用onCreate()和onStart()方法 B、當(dāng)?shù)谝淮螁?dòng)的時(shí)候只會(huì)調(diào)用onCreate()方法 C、如果service已經(jīng)啟動(dòng),將先后調(diào)用onCreate()和onStart()方法 D、如果service已經(jīng)啟動(dòng),只會(huì)執(zhí)行onStart()方法,不在執(zhí)行onCreate()方法 21.下面是屬于GLSurFaceView特性的是()(多選) A、管理一個(gè)surface,這個(gè)surface就是一塊特殊的內(nèi)存,能直接排版到android的視圖view上。 B、管理一個(gè)EGL display,它能讓opengl把內(nèi)容渲染到上述的surface上。 C、讓渲染器在獨(dú)立的線(xiàn)程里運(yùn)作,和UI線(xiàn)程分離。 D、可以直接從內(nèi)存或者DMA等硬件接口取得圖像數(shù)據(jù) 22.下面在AndroidManifest.xml文件中注冊(cè)BroadcastReceiver方式正確的是() A、 android:name=“android.provider.action.NewBroad”/> B、 android:name=“android.provider.action.NewBroad”/> C、 android:name=“android.provider.action.NewBroad”/> D、 android:name=“android.provider.action.NewBroad”/> 23.關(guān)于ContenValues類(lèi)說(shuō)法正確的是() A、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名是String類(lèi)型,而值都是基本類(lèi)型 B、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名是任意類(lèi)型,而值都是基本類(lèi)型 C、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名,可以為空,而值都是String類(lèi)型 D、他和Hashtable比較類(lèi)似,也是負(fù)責(zé)存儲(chǔ)一些名值對(duì),但是他存儲(chǔ)的名值對(duì)當(dāng)中的名是String類(lèi)型,而值也是String類(lèi)型 24.我們都知道Hanlder是線(xiàn)程與Activity通信的橋梁,如果線(xiàn)程處理不當(dāng),你的機(jī)器就會(huì)變得越慢,那么線(xiàn)程銷(xiāo)毀的方法是() A、onDestroy() B、onClear() C、onFinish() D、onStop() 25.下面退出Activity錯(cuò)誤的方法是() A、finish() B、拋異常強(qiáng)制退出 C、System.exit() D、onStop() 26.下面屬于android的動(dòng)畫(huà)分類(lèi)的有()(多項(xiàng)) A、TweenB、Frame C、Draw D、Animation 27.下面關(guān)于Android dvm的進(jìn)程和Linux的進(jìn)程,應(yīng)用程序的進(jìn)程說(shuō)法正確的是() A、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,不一定擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM都是在Linux 中的一個(gè)進(jìn)程,所以說(shuō)可以認(rèn)為是同一個(gè)概念.B、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,不一定擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM不一定都是在Linux 中的一個(gè)進(jìn)程,所以說(shuō)不是一個(gè)概念.C、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM不一定都是在Linux 中的一個(gè)進(jìn)程,所以說(shuō)不是一個(gè)概念.D、DVM指dalivk的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM都是在Linux 中的一個(gè)進(jìn)程,所以說(shuō)可以認(rèn)為是同一個(gè)概念.28.Android項(xiàng)目工程下面的assets目錄的作用是什么 A、放置應(yīng)用到的圖片資源。 B、主要放置多媒體等數(shù)據(jù)文件 C、放置字符串,顏色,數(shù)組等常量數(shù)據(jù) D、放置一些與UI相應(yīng)的布局文件,都是xml文件 29..關(guān)于res/raw目錄說(shuō)法正確的是() A、這里的文件是原封不動(dòng)的存儲(chǔ)到設(shè)備上不會(huì)轉(zhuǎn)換為二進(jìn)制的格式 B、這里的文件是原封不動(dòng)的存儲(chǔ)到設(shè)備上會(huì)轉(zhuǎn)換為二進(jìn)制的格式 C、這里的文件最終以二進(jìn)制的格式存儲(chǔ)到指定的包中 D、這里的文件最終不會(huì)以二進(jìn)制的格式存儲(chǔ)到指定的包中 30.下列對(duì)android NDK的理解正確的是() A、NDK是一系列工具的集合B、NDK 提供了一份穩(wěn)定、功能有限的 API 頭文件聲明。 C、使 “Java+C” 的開(kāi)發(fā)方式終于轉(zhuǎn)正,成為官方支持的開(kāi)發(fā)方式 D、NDK 將是 Android平臺(tái)支持 C 開(kāi)發(fā)的開(kāi)端 二.填空題(每題2分,共20分) 1.我們用___ ____來(lái)定義一個(gè)整數(shù),用___ ____來(lái)定義一個(gè)字符類(lèi)型,稱(chēng)為原始數(shù)據(jù)類(lèi)型。 2.android中常用的四個(gè)布局是?s 3.android 的四大組件是? 4.java.io包中的__________和______________類(lèi)主要用于對(duì)對(duì)象(Object)的讀寫(xiě)。 5.android 中service的實(shí)現(xiàn)方法是:_______-和___________-。 6.activity一般會(huì)重載7個(gè)方法用來(lái)維護(hù)其生命周期,除了onCreate(),onStart(),onDestory()外還有_______-,_________ ,_________ ,_____________。 7.android的數(shù)據(jù)存儲(chǔ)的方式____________,___________,________ ,_______-,________。 8.當(dāng)啟動(dòng)一個(gè)Activity并且新的Activity執(zhí)行完后需要返回到啟動(dòng)它的Activity來(lái)執(zhí)行的回調(diào)函數(shù)是_____________()。 9.請(qǐng)使用命令行的方式創(chuàng)建一個(gè)名字為myAvd,sdk版本為2.2,sd卡是在d盤(pán)的根目錄下,名字為scard.img,并指定屏幕大小HVGA.____________________________________。 10.程序運(yùn)行的結(jié)果是:_______________。 public class Example{ String str=new String(“good”); char[]ch={'a','b','c'}; public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+“ and ”); Sytem.out.print(ex.ch); } public void change(String str,char ch[]){ str=“test ok”; ch[0]='g'; } } 三 簡(jiǎn)答編程題(共35分) 1簡(jiǎn)述Android應(yīng)用程序結(jié)構(gòu)是哪些?(7分) Android應(yīng)用程序結(jié)構(gòu)是:請(qǐng)繼承SQLiteOpenHelper實(shí)現(xiàn):(10分) 1).創(chuàng)建一個(gè)版本為1的“diaryOpenHelper.db”的數(shù)據(jù)庫(kù),2).同時(shí)創(chuàng)建一個(gè) “diary” 表(包含一個(gè)_id主鍵并自增長(zhǎng),topic字符型100長(zhǎng)度,content字符型1000長(zhǎng)度) 3).在數(shù)據(jù)庫(kù)版本變化時(shí)請(qǐng)刪除diary表,并重新創(chuàng)建出diary表。 3.頁(yè)面上現(xiàn)有ProgressBar控件progressBar,請(qǐng)用書(shū)寫(xiě)線(xiàn)程以10秒的的時(shí)間完成其進(jìn)度顯示工作。(10分) Android面試題總結(jié) 1.簡(jiǎn)述Activity的生命周期? 1)Activity的生命周期通過(guò)7個(gè)生命周期方法onCreate(),onRestart(), onStart(), onResume(), onPause(),onStop(),onDestroy()來(lái)體現(xiàn)。2)其中6個(gè)生命周期方法是成對(duì)對(duì)應(yīng)起來(lái)的,哪里創(chuàng)建的對(duì)象,一般應(yīng)該在其對(duì)應(yīng)的方法中銷(xiāo)毀。 onCreate()--onDestroy()onStart()--onStop()onResume()--onPause()3)當(dāng)程序啟動(dòng)之后,第一個(gè)Activity經(jīng)過(guò)的生命周期方法是:onCreate()→onStart()→ onResume()方法,當(dāng)?shù)谝粋€(gè)Activity A啟動(dòng)第二個(gè)Activity B的時(shí)候(備注:第二個(gè)Activity完全遮蓋住第一個(gè)Activity,并且這個(gè)過(guò)程中沒(méi)有出現(xiàn)點(diǎn)擊Home鍵,或者第一個(gè)Activity被殺死等異常情況,并且兩個(gè)Activity的啟動(dòng)模式是標(biāo)準(zhǔn)模式),這兩個(gè)Activity經(jīng)歷的生命周期方法是: A onPause()→ B onCreate()→ B onStart()→ B onResume()→ A onStop()→(此時(shí)Activity A已經(jīng)在回退棧的最低端,Activity B已經(jīng)在Activity A的上面,在回退棧的最頂端)當(dāng)通過(guò)點(diǎn)擊后退鍵退出Activity B的時(shí)候: (此時(shí)Activity B 彈出回退棧)→ B onPause()→ A onRestart()→ A onStart()→ A onResume()→ B onStop()→ B onDestroy()此時(shí)B 被銷(xiāo)毀 2.簡(jiǎn)述Service的生命周期? 1).如果在Activity中通過(guò)調(diào)用startService()方法啟動(dòng)一個(gè)Service的話(huà),那么生命周期是: onCreate()→ onStartCommand()→ 運(yùn)行中 →(如果自己或者客戶(hù)端(如Activity)調(diào)用了stop Service的方法的話(huà))→ onDestroy()2).如果在Activity中通過(guò)調(diào)用bindService()方法啟動(dòng)一個(gè)Service的話(huà),那么生命周期是: onCreate()→ onBind()→ 運(yùn)行中 →(如果有客戶(hù)端(Activity)調(diào)用了unBindService()方法與Service解除綁定時(shí))→ onUnbind()→ onDestroy()3.有幾種控件布局的方式? 1)RelativeLayout:相對(duì)布局,可以根據(jù)相對(duì)位置來(lái)調(diào)整控件的位置。推薦使用相對(duì)布局,更利于屏幕的自適應(yīng)。2)LinearLayout:線(xiàn)性布局,控件之間的水平排列或者垂直排列。但是如果要想構(gòu)建復(fù)雜布局,要進(jìn)行多層的LinearLayout布局嵌套,但是這樣會(huì)運(yùn)行布局載入效率。 3)FrameLayout:幀布局,控件與控件之間處于上下疊加的狀態(tài)。 備注:還有兩個(gè)已經(jīng)不怎么用的布局:TableLayout:表格布局 AbsoluteLayout 絕對(duì)布局。 布局實(shí)現(xiàn)方式有兩種:xml文件靜態(tài)實(shí)現(xiàn),代碼動(dòng)態(tài)實(shí)現(xiàn)。 一般xml文件中可以實(shí)現(xiàn)布局控制的話(huà),就不建議放在代碼中實(shí)現(xiàn)布局控制,因?yàn)樵趚ml文件中實(shí)現(xiàn)布局控制,可以做到布局與代碼分離。4.有幾種數(shù)據(jù)存儲(chǔ)方式,分別是什么? 1)SQLite數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)。 2)文件存儲(chǔ):分為內(nèi)部存儲(chǔ)和外部存儲(chǔ)(SD卡)兩種存儲(chǔ)方式。3)SharedPreferences共享參數(shù),鍵值對(duì)形式存儲(chǔ)。4)網(wǎng)絡(luò)存儲(chǔ)。 5.IntentService與Service有什么區(qū)別? IntentService是Service的子類(lèi) 1)Service如果要處理異步請(qǐng)求(如耗時(shí)操作)的話(huà),需要自己?jiǎn)?dòng)一個(gè)worker thread,如果啟動(dòng)多個(gè)worker thread來(lái)處理相關(guān)事務(wù)的話(huà),各線(xiàn)程之間無(wú)法很好的控制。而IntentService可以將多個(gè)異步請(qǐng)求的Intent放入隊(duì)列中,封裝了一個(gè)開(kāi)啟worker thread的onHandleIntent()方法,來(lái)依次處理放入隊(duì)列中的Intent,只有一個(gè)worker thread在運(yùn)行,同一時(shí)刻只有一個(gè)Intent被處理,當(dāng)一個(gè)Intent處理完了之后才會(huì)處理另外一個(gè)Intent。 2)Service可以通過(guò)startService()或者bindService()方法來(lái)啟動(dòng),而IntentService則是通過(guò)startService()方法來(lái)啟動(dòng)。3)Service適合多線(xiàn)程處理異步請(qǐng)求。而IntentService則適合處理需要排隊(duì)的請(qǐng)求。 6.StartService與bindService之間的區(qū)別? 1)StartService啟動(dòng)了Service之后無(wú)法與Activity之間進(jìn)行通信,與現(xiàn)有的Activity分離,即使Activity被殺掉了之后,Service還可以運(yùn)行,同時(shí)通過(guò)設(shè)置Service的粘性,還可以讓Service被殺掉之后,可以自啟動(dòng)。而bindService啟動(dòng)Service之后,與綁定的Activity之間有關(guān)系,可以依據(jù)Server/Client模式來(lái)進(jìn)行通信(binder客戶(hù)端主動(dòng)請(qǐng)求模式,或者通過(guò)信使),但是無(wú)法設(shè)置Serrvice的粘性。2)StartService啟動(dòng)的Service,Activity中可以調(diào)用stopService()方法來(lái)結(jié)束一個(gè)Service,或者通過(guò)Service自己調(diào)用stopSelf()方法來(lái)結(jié)束Service。而bindService只能通過(guò)Activity()來(lái)調(diào)用unbindService()方法來(lái)結(jié)束Service,Service會(huì)調(diào)用onUnBind()方法,以及onDestroy()方法。 7.ArrayAdapter BaseAdapter CursorAdapter的區(qū)別? ArrayAdpter CursorAdapter都是BaseAdapter的子類(lèi)。都是用來(lái)填充那些含有item的控件。 1)主要區(qū)別是數(shù)據(jù)來(lái)源不同。ArrayAdapter數(shù)據(jù)來(lái)源是Object數(shù)組,CursorAdapter數(shù)據(jù)來(lái)源是數(shù)據(jù)庫(kù)的Cursor,而B(niǎo)aseAdapter適合創(chuàng)建復(fù)雜自定義的item內(nèi)容,通過(guò)繼承BaseAdapter類(lèi),重寫(xiě)相關(guān)方法來(lái)實(shí)現(xiàn)。 8.Handler與Looper之間的關(guān)系? 1)Handler和Looper的關(guān)系就好比,坐地鐵過(guò)安檢時(shí)候:每一個(gè)人可以理解為一個(gè)Handler,一個(gè)人的一個(gè)或者多個(gè)東西看做Message而循環(huán)滾動(dòng)的檢查臺(tái)裝置可以看做是Looper,而要檢查的東西排成隊(duì)列可以理解為MessageQueue消息隊(duì)列。 2)Looper是Handler和MessageQuene之間的橋梁,Looper將Handler發(fā)送過(guò)的消息放入MessageQueue,同時(shí)Looper也將MessageQueue中的Message發(fā)送給Handler來(lái)處理。 9.res文件夾與assets文件夾有什么區(qū)別? 1)res文件夾中的資源在會(huì)在R.java文件中生成ID,代碼中可以直接通過(guò)R.id的形式來(lái)訪(fǎng)問(wèn)。而assets文件夾中的資源不會(huì)在R.java文件中生成ID,需要通過(guò)AssetsManager通過(guò)IO流的方式來(lái)訪(fǎng)問(wèn)。 2)res文件夾中的文件會(huì)被壓縮,而assets文件中的文件不會(huì)被壓縮。 3)Res不能自定義目錄名,不支持多層目錄。而assets支持自定義目錄名,支持多層目錄。 10.廣播接收器有幾種注冊(cè)方式,分別是什么? 1)動(dòng)態(tài)注冊(cè):在代碼中注冊(cè),創(chuàng)建一個(gè)IntentFilter(意圖過(guò)濾器)對(duì)象,設(shè)置想要就收的廣播,在onCreate()方法中通過(guò)調(diào)用registerReceiver()方法來(lái)注冊(cè)廣播接收器,在onDestroy()方法中通過(guò)調(diào)用unregisterReceiver()方法來(lái)注銷(xiāo)廣播接收器。2)靜態(tài)注冊(cè):在AndroidManifest.xml文件中注冊(cè), 饞貓工作室 1.簡(jiǎn)要解釋一下Activity、Service、Broadcase、BroadcaseReceiver、ContentProvider、ContentResolver、Intent、Intent filter 2.說(shuō)一下項(xiàng)目中最擅長(zhǎng)的方向。例如:界面美化,網(wǎng)絡(luò)請(qǐng)求,數(shù)據(jù)存儲(chǔ),Camera 相關(guān),圖片處理,視頻方向。簡(jiǎn)述下你用過(guò)哪些技術(shù),或者是開(kāi)源包。 3.Handler機(jī)制和原理 4.寫(xiě)出幾種你認(rèn)為可以提高Android程序運(yùn)行效率的方法 5.AsyncTask 的異步機(jī)制和普通線(xiàn)程有什么區(qū)別,分別有哪些優(yōu)缺點(diǎn)。 6.多線(xiàn)程間通信和多進(jìn)程之間通信有什么不同,分別怎么實(shí)現(xiàn)? 7.請(qǐng)介紹下Android的數(shù)據(jù)存儲(chǔ)方式。請(qǐng)寫(xiě)出熟悉程度,并對(duì)應(yīng)舉例適合不同 存儲(chǔ)方式的數(shù)據(jù) 8.說(shuō)幾個(gè)你認(rèn)為非常好的軟件或者游戲,概括下優(yōu)缺點(diǎn)并且說(shuō)下如果讓你開(kāi)發(fā) 這個(gè)軟件,你如何構(gòu)架,可能用到哪些技術(shù)點(diǎn),對(duì)于你來(lái)說(shuō)有哪些技術(shù)難點(diǎn)。 9.簡(jiǎn)述三個(gè)你遇到印象最深刻的bug,你是如何解決的,是否完全解決問(wèn)題。 10.含有圖片的listview 如何進(jìn)行優(yōu)化其流暢度和圖片加載方向的內(nèi)存管理 11.如果讓你獨(dú)立完成一個(gè)項(xiàng)目(此項(xiàng)目11個(gè)界面,需要和網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交互,需要在本地采用多種方式進(jìn)行數(shù)據(jù)存儲(chǔ),有圖片等相關(guān)操作),請(qǐng)簡(jiǎn)述下你工作順序。 12.如果讓你分配給3個(gè)同事一個(gè)項(xiàng)目(此項(xiàng)目11個(gè)界面,需要和網(wǎng)絡(luò)進(jìn)行數(shù)據(jù) 交互,需要在本地采用多種方式進(jìn)行數(shù)據(jù)存儲(chǔ),有圖片等相關(guān)操作),請(qǐng)簡(jiǎn)述下你將如何分配。 13.ScrollView嵌套listview是否會(huì)出現(xiàn)bug,為什么會(huì)出現(xiàn)bug,如果解決 14.說(shuō)說(shuō)mvc模式的原理,它在android中怎樣運(yùn)用,你在具體工作中怎樣具體 運(yùn)用mvc模式的。 15.編程題: 用最有效率的方法算出2乘以128等於幾? 16.Android 中如何調(diào)用c++的方法。你是否可以熟練使用NDK編程 17.用Java語(yǔ)言實(shí)現(xiàn)的各種排序,包括插入排序、冒泡排序、選擇排序、Shell 排序、快速排序、歸并排序、堆排序等。18.寫(xiě)出怎么把前邊的表查詢(xún)成后邊結(jié)果的格式的Sqlite語(yǔ)句 yearmonth amount結(jié)果 199111.1year m1m2m3m4 199121.21991 1.1 1.2 1.3 1.4 199131.31992 2.1 2.2 2.3 2.4 199141.4 199212.1 199222.2 199232.3 199242.4 19.寫(xiě)一個(gè)最簡(jiǎn)單的外連接查詢(xún)(表名1:a 表名2:b)的sqlite語(yǔ)句 20.封裝正式版APK時(shí)候有那些注意事項(xiàng),上線(xiàn)到多個(gè)應(yīng)用商城需要注意那些。 注:請(qǐng)認(rèn)真選擇其中6到10題,用簡(jiǎn)練語(yǔ)言作答。 饞貓工作室 一.Java的問(wèn)題 1.回調(diào)函數(shù)是?有什么用?好處是?一般什么時(shí)候用?手寫(xiě)個(gè)例子代碼。 2.Java抽象類(lèi)是什么?你怎么理解抽象類(lèi)?為什么要有抽象類(lèi)?好處,壞處。3.Public,protected,private,默認(rèn) 這四個(gè)修飾符的區(qū)別和范圍。4.Java中泛型的概念,如何實(shí)現(xiàn)的? 5.Switch中支持的類(lèi)型(注意string和long)6.內(nèi)部類(lèi)有幾種?它們的區(qū)別。 7.設(shè)計(jì)模式(單例模式,工場(chǎng)方法模式等,它們的優(yōu)缺點(diǎn))8.GC機(jī)制,垃圾的清除算法 9.創(chuàng)建線(xiàn)程的幾種方式 10.多線(xiàn)程的同步問(wèn)題 11.寫(xiě)一下socket通信的大致代碼 12.單線(xiàn)程和多線(xiàn)程處理哪個(gè)好(分單cup和多cpu)13.虛擬內(nèi)存的概念,內(nèi)存置換算法 14.強(qiáng)連接,軟連接,弱連接,虛連接的概念和使用舉例 15.Android開(kāi)發(fā)如何進(jìn)行算法和界面的優(yōu)化 16.為什么內(nèi)部類(lèi)可以直接訪(fǎng)問(wèn)外邊類(lèi)的成員 17.外部類(lèi)可以直接訪(fǎng)問(wèn)內(nèi)部類(lèi)的成員嗎?(不能)為什么?那應(yīng)該怎樣實(shí)現(xiàn)訪(fǎng)問(wèn) 18.Hashmap內(nèi)部是怎么實(shí)現(xiàn)的,他的動(dòng)態(tài)內(nèi)存大小怎么變,和hashtable的區(qū)別與聯(lián)系? 19.Hashmap同步嗎?如何實(shí)現(xiàn)同步。20.線(xiàn)程之間如何實(shí)現(xiàn)通信 21.線(xiàn)程和進(jìn)程的區(qū)別,線(xiàn)程有自己的棧和存儲(chǔ)機(jī)制嗎? 22.Threadlocal知道嗎?作用 23.Jvm和dvm的區(qū)別與聯(lián)系 24.線(xiàn)程池,消息池,常量池的概念 25.棧和堆的區(qū)別 26.Hashmap的遍歷方式有幾種,各種的區(qū)別,手寫(xiě)下例子代碼 27.Java支持中文嗎? 28.Volatile的作用,是否可靠它實(shí)現(xiàn)同步安全? 29.如何實(shí)現(xiàn)同步 30.Android的動(dòng)畫(huà)實(shí)現(xiàn)有哪幾種方式,區(qū)別 31.Java中繼承有哪些特征 32.抽象類(lèi)和接口的區(qū)別 33.Exception的概念,運(yùn)行時(shí),非運(yùn)行時(shí)的區(qū)別 34.Java中一次跳出多個(gè)循環(huán)的方式 35.死鎖的概念和必要條件,解決方法 36.Tcp和udp的區(qū)別 37.Tap的3次握手過(guò)程,大概畫(huà)一畫(huà) 38.內(nèi)部碎片與外部碎片的概念和區(qū)別 39.反射機(jī)制 40.C++與java的區(qū)別 二.Android的問(wèn)題 41.android中內(nèi)存泄露是?產(chǎn)生原因?解決方法? 42.Android中內(nèi)存溢出是?產(chǎn)生原因?解決方法?它和內(nèi)存泄露有什么區(qū)別? 43.Activity的生命周期,三種狀態(tài) 44.Activity的4種啟動(dòng)模式 45.Android的四大組件 46.說(shuō)說(shuō)intent 47.Androidmanifest的作用 48.Android系統(tǒng)有幾層,了解application framework層嗎? 49.Service的啟動(dòng)方式和它們的區(qū)別 50.用過(guò)自定義控件沒(méi)?怎么實(shí)現(xiàn)自定義控件,手寫(xiě)下例子代碼。 51.知道Fragment嗎?哪個(gè)版本出的?它和activity的區(qū)別,它的生命周期?用它的好處?它和activity如何實(shí)現(xiàn)通信,相互調(diào)用。 52.Fragment怎么實(shí)習(xí)按back鍵進(jìn)行回退而不是一次性退出它所依附的activity? 53.Android如何實(shí)現(xiàn)定時(shí)器(timer,alarmManager)54.handler機(jī)制的概念,應(yīng)用 55.Handler如何實(shí)現(xiàn)定時(shí)器效果(3種)56.兩個(gè)activity之間如何通信(各種方式)57.用過(guò)eclipse的debug調(diào)試沒(méi)?怎么用的 58.知道多少eclipse的快捷鍵 59.結(jié)束一個(gè)進(jìn)程的幾種方式? 60.進(jìn)程間如何實(shí)現(xiàn)通信 61.Android如何實(shí)現(xiàn)信息存儲(chǔ) 62.知道volley等一些第三方庫(kù)嗎? 63.Android對(duì)view的更新方式 64.知道一些代碼優(yōu)化的方式嗎? 65.Handler和thread的區(qū)別 66.Android中http訪(fǎng)問(wèn)的兩種方式 67.Asynctask的概念,作用,與handler的區(qū)別 68.Android中如何實(shí)現(xiàn)畫(huà)圖,手寫(xiě)個(gè)簡(jiǎn)單的例子 69.一個(gè)子線(xiàn)程是否可用直接修改ui界面?為什么 70.Service和Intentservice的區(qū)別與聯(lián)系 71.Context是什么? 72.Boardcast的概念,作用,有序廣播和無(wú)序廣播的區(qū)別,粘性廣播的概念 73.Boardcast的靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)的區(qū)別 74.Aidl,如何實(shí)現(xiàn)進(jìn)程間通信 75.Contentprovider概念和作用 76.Json比xml的好處,他們的區(qū)別 77.Listview的概念,優(yōu)化,如何實(shí)現(xiàn)每項(xiàng)的布局不同 78.Touch事件的分發(fā)過(guò)程 79.Linearlayout的Weight屬性的作用 80.Android有哪幾種布局,它們的5種布局的區(qū)別 81.Finish和exit(0)的區(qū)別 82.Sqlite的事務(wù)處理 83.Android實(shí)現(xiàn)可滑動(dòng)tab的3種方式,它們的區(qū)別和各種的好處 84.Android中跨進(jìn)程通信的4種方式,(正好對(duì)應(yīng)四大組件)85.Handler的內(nèi)存泄露是? 86.Android系統(tǒng)提供的與用戶(hù)交互的兩種機(jī)制(回調(diào)函數(shù),監(jiān)聽(tīng)器)87.Ndk的理解,jni的理解 88.Toast的概念,它的時(shí)間設(shè)置的兩種方式 89.Activity的狀態(tài)保存的方式 90.Activity的5個(gè)進(jìn)程等級(jí) 91.Surface了解嗎? 92.程序閃退的原因有哪些,怎么解決 93.Get和post的區(qū)別 94.Android有哪三種菜單?區(qū)別 95.實(shí)現(xiàn)序列化的兩種方式,比較它們的優(yōu)缺點(diǎn) 96.Broadcast receiver的生命周期 97.Sharedpreference的作用,底層實(shí)現(xiàn) 98.如何實(shí)現(xiàn)一個(gè)前臺(tái)的service,簡(jiǎn)單寫(xiě)下代碼例子 99.按home鍵activity的生命周期變化 100.Activity由a跳到b,哪些生命周期會(huì)執(zhí)行 101.橫豎屏切換,activity的生命周期,configchange的應(yīng)用 102.如何設(shè)置activity為對(duì)話(huà)框風(fēng)格 103.Activity,window,view的聯(lián)系和區(qū)別 104.Style和theme的聯(lián)系和區(qū)別 105.知道android平臺(tái)主流的幾種消息推送方式嗎? 106.Viewstub的概念,作用,好處 107.Android數(shù)字簽名 108.Zygote的概念 109.Adb的概念,作用。Adb死掉了怎么辦? 110.Ddms和teaceview的區(qū)別,他們的作用 111.MVC模式概念 112.Android的事件傳遞機(jī)制 113.圖片的緩存機(jī)制 114.Android內(nèi)存優(yōu)化及管理 115.如何實(shí)現(xiàn)低版本可用高版本的新的東西 116.Gallery畫(huà)廊的使用 117.http如何實(shí)現(xiàn)長(zhǎng)連接 118.Android是不是linux?為什么? 119.三.算法和寫(xiě)代碼 74.寫(xiě)數(shù)的后序遍歷(非遞歸)75.實(shí)現(xiàn)一個(gè)字符串的全排列 76.快速排序,堆排序,歸并排序 77.如何在大量數(shù)據(jù)中快速找到中位數(shù)? 78.如何判斷一個(gè)數(shù)是不是2的n次方第二篇:Android面試題(十一)
第三篇:Android面試題總結(jié)
第四篇:華為Android面試題
第五篇:Android最全的面試題總結(jié)