android筆試必考題.doc_第1頁
android筆試必考題.doc_第2頁
android筆試必考題.doc_第3頁
android筆試必考題.doc_第4頁
android筆試必考題.doc_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

以下題目都是android開發(fā),并都是自己筆試嘗嘗看到的題目,筆試必考的試題。希望對大家有幫助1. 下列哪些語句關(guān)于內(nèi)存回收的說明是正確的? (b ) A、 程序員必須創(chuàng)建一個線程來釋放內(nèi)存 B、 內(nèi)存回收程序負(fù)責(zé)釋放無用內(nèi)存 C、 內(nèi)存回收程序允許程序員直接釋放內(nèi)存 D、 內(nèi)存回收程序可以在指定的時間釋放內(nèi)存對象 下面異常是屬于Runtime Exception 的是(abcd)(多選) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12下列程序段的輸出結(jié)果是:(b) void complicatedexpression_r() int x=20, y=30; boolean b; b=x50&y60|x50&y-60|x60|x-50&y-60; System.out.println(b); A、true B、false C、1 D、011.activity對一些資源以及狀態(tài)的操作保存,最好是保存在生命周期的哪個函數(shù)中進(jìn)行(d) A、onPause() B、onCreate() C、 onResume() D、onStart()Intent傳遞數(shù)據(jù)時,下列的數(shù)據(jù)類型哪些可以被傳遞(abcd)(多選) A、Serializable B、charsequence C、Parcelable D、Bundleandroid 中下列屬于Intent的作用的是(c) A、實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)共享 B、是一段長的生命周期,沒有用戶界面的程序,可以保持應(yīng)用在后臺運(yùn)行,而不會因?yàn)榍袚Q頁面而消失 C、可以實(shí)現(xiàn)界面間的切換,可以包含動作和動作數(shù)據(jù),連接四大組件的紐帶 D、處理一個應(yīng)用程序整體性的工作下列屬于SAX解析xml文件的優(yōu)點(diǎn)的是(b) A、將整個文檔樹在內(nèi)存中,便于操作,支持刪除,修改,重新排列等多種功能 B、不用事先調(diào)入整個文檔,占用資源少 C、整個文檔調(diào)入內(nèi)存,浪費(fèi)時間和空間 D、不是長久駐留在內(nèi)存,數(shù)據(jù)不是持久的,事件過后,若沒有保存數(shù)據(jù),數(shù)據(jù)就會 消失 下面的對自定style的方式正確的是(a) A、 fill_parent B、 fill_parent C、 fill_parent D、 fill_parent 在android中使用Menu時可能需要重寫的方法有(ac)。(多選) A、onCreateOptionsMenu() B、onCreateMenu() C、onOptionsItemSelected() D、onItemSelected()在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數(shù)據(jù)庫,并可以對數(shù)據(jù)庫版本進(jìn)行管理的方法可以是(ab) A、getWriteableDatabase() B、getReadableDatabase() C、getDatabase() D、getAbleDatabase()android 關(guān)于service生命周期的onCreate()和onStart()說法正確的是(ad)(多選題) A、當(dāng)?shù)谝淮螁拥臅r候先后調(diào)用onCreate()和onStart()方法 B、當(dāng)?shù)谝淮螁拥臅r候只會調(diào)用onCreate()方法 C、如果service已經(jīng)啟動,將先后調(diào)用onCreate()和onStart()方法 D、如果service已經(jīng)啟動,只會執(zhí)行onStart()方法,不在執(zhí)行onCreate()方法下面是屬于GLSurFaceView特性的是(abc)(多選) A、管理一個surface,這個surface就是一塊特殊的內(nèi)存,能直接排版到android的視圖 view上。 B、管理一個EGL display,它能讓opengl把內(nèi)容渲染到上述的surface上。 C、讓渲染器在獨(dú)立的線程里運(yùn)作,和UI線程分離。 D、可以直接從內(nèi)存或者DMA等硬件接口取得圖像數(shù)據(jù)下面在AndroidManifest.xml文件中注冊BroadcastReceiver方式正確的(a) A、 B、 android:name=vider.action.NewBroad/ C、 D、 android:name=vider.action.NewBroad/ 關(guān)于ContenValues類說法正確的是(a) A、他和Hashtable比較類似,也是負(fù)責(zé)存儲一些名值對,但是他存儲的名值對當(dāng)中的 名是String類型,而值都是基本類型 B、他和Hashtable比較類似,也是負(fù)責(zé)存儲一些名值對,但是他存儲的名值對當(dāng)中的 名是任意類型,而值都是基本類型 C、他和Hashtable比較類似,也是負(fù)責(zé)存儲一些名值對,但是他存儲的名值對當(dāng)中的 名,可以為空,而值都是String類型 D、他和Hashtable比較類似,也是負(fù)責(zé)存儲一些名值對,但是他存儲的名值對當(dāng)中 的名是String類型,而值也是String類型我們都知道Hanlder是線程與Activity通信的橋梁,如果線程處理不當(dāng),你的機(jī)器就會變得越慢,那么線程銷毀的方法是(a) A、onDestroy() B、onClear() C、onFinish() D、onStop()下面退出Activity錯誤的方法是(c) A、finish() B、拋異常強(qiáng)制退出 C、System.exit() D、onStop()下面屬于android的動畫分類的有(ab)(多項(xiàng)) A、Tween B、Frame C、Draw D、Animation 下面關(guān)于Android dvm的進(jìn)程和Linux的進(jìn)程,應(yīng)用程序的進(jìn)程說法正確的是(d) A、DVM指dalivk的虛擬機(jī).每一個Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,不一定擁有一個獨(dú)立 的Dalvik虛擬機(jī)實(shí)例.而每一個DVM都是在Linux 中的一個進(jìn)程,所以說可以認(rèn)為是同一個概念. B、DVM指dalivk的虛擬機(jī).每一個Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,不一定擁有一個獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個DVM不一定都是在Linux 中的一個進(jìn)程,所以說不是一個概念. C、DVM指dalivk的虛擬機(jī).每一個Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個獨(dú)立的Dalvik虛擬機(jī)實(shí)例.而每一個DVM不一定都是在Linux 中的一個進(jìn)程,所以說不是一個概念. D、DVM指dalivk的虛擬機(jī).每一個Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個獨(dú)立的 Dalvik虛擬機(jī)實(shí)例.而每一個DVM都是在Linux 中的一個進(jìn)程,所以說可以認(rèn)為是同一個概念. Android項(xiàng)目工程下面的assets目錄的作用是什么bA、放置應(yīng)用到的圖片資源。B、主要放置多媒體等數(shù)據(jù)文件C、放置字符串,顏色,數(shù)組等常量數(shù)據(jù)D、放置一些與UI相應(yīng)的布局文件,都是xml文件 關(guān)于res/raw目錄說法正確的是(a)A、 這里的文件是原封不動的存儲到設(shè)備上不會轉(zhuǎn)換為二進(jìn)制的格式B、 這里的文件是原封不動的存儲到設(shè)備上會轉(zhuǎn)換為二進(jìn)制的格式C、 這里的文件最終以二進(jìn)制的格式存儲到指定的包中D、 這里的文件最終不會以二進(jìn)制的格式存儲到指定的包中 下列對android NDK的理解正確的是(abcd )A、 NDK是一系列工具的集合B、 NDK 提供了一份穩(wěn)定、功能有限的 API 頭文件聲明。C、 使 “Java+C” 的開發(fā)方式終于轉(zhuǎn)正,成為官方支持的開發(fā)方式D、 NDK 將是 Android 平臺支持 C 開發(fā)的開端android中常用的四個布局是framlayout,linenarlayout,relativelayout和tablelayout。 android 的四大組件是activiey,service,broadcast和contentprovide。 java.io包中的objectinputstream和objectoutputstream類主要用于對對象(Object)的讀寫。 android 中service的實(shí)現(xiàn)方法是:startservice和bindservice。 activity一般會重載7個方法用來維護(hù)其生命周期,除了onCreate(),onStart(),onDestory() 外還有onrestart,onresume,onpause,onstop。 android的數(shù)據(jù)存儲的方式sharedpreference,文件,SQlite,contentprovider,網(wǎng)絡(luò)。當(dāng)啟動一個Activity并且新的Activity執(zhí)行完后需要返回到啟動它的Activity來執(zhí)行 的回調(diào)函數(shù)是startActivityResult()。請使用命令行的方式創(chuàng)建一個名字為myAvd,sdk版本為2.2,sd卡是在d盤的根目錄下,名字為scard.img, 并指定屏幕大小HVGA._。 程序運(yùn)行的結(jié)果是:_good and gbc_。 public class Example String str=new String(good); charch=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; ch0=g; 簡述Android應(yīng)用程序結(jié)構(gòu)是哪些?(7分)Android應(yīng)用程序結(jié)構(gòu)是: Linux Kernel(Linux內(nèi)核)、Libraries(系統(tǒng)運(yùn)行庫或者是c/c+核心庫)、Application Framework(開發(fā)框架包)、Applications(核心應(yīng)用程序) 請描述下Activity的生命周期。 必調(diào)用的三個方法:onCreate() - onStart() - onResume(),用AAA表示(1)父Activity啟動子Activity,子Actvity退出,父Activity調(diào)用順序如下AAA - onFreeze() - onPause() - onStop() - onRestart() - onStart(),onResume() (2)用戶點(diǎn)擊Home,Actvity調(diào)用順序如下AAA - onFreeze() - onPause() - onStop() - Maybe - onDestroy() Maybe(3)調(diào)用finish(), Activity調(diào)用順序如下AAA - onPause() - onStop() - onDestroy()(4)在Activity上顯示dialog, Activity調(diào)用順序如下AAA(5)在父Activity上顯示透明的或非全屏的activity,Activity調(diào)用順序如下AAA - onFreeze() - onPause()(6)設(shè)備進(jìn)入睡眠狀態(tài),Activity調(diào)用順序如下AAA - onFreeze() - onPause()請介紹下Android中常用的五種布局。FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)請介紹下Android的數(shù)據(jù)存儲方式。一.SharedPreferences方式二.文件存儲方式三.SQLite數(shù)據(jù)庫方式四.內(nèi)容提供器(Content provider)方式五. 網(wǎng)絡(luò)存儲方式注冊廣播有幾種方式,這些方式有何優(yōu)缺點(diǎn)?請談?wù)凙ndroid引入廣播機(jī)制的用意。 Android廣播機(jī)制(兩種注冊方法) 在android下,要想接受廣播信息,那么這個廣播接收器就得我們自己來實(shí)現(xiàn)了,我們可以繼承BroadcastReceiver,就可以有一個廣播接受器了。有個接受器還不夠,我們還得重寫B(tài)roadcastReceiver里面的onReceiver方法,當(dāng)來廣播的時候我們要干什么,這就要我們自己來實(shí)現(xiàn),不過我們可以搞一個信息防火墻。具體的代碼:public class SmsBroadCastReceiver extends BroadcastReceiver Override public void onReceive(Context context, Intent intent) Bundle bundle = intent.getExtras(); Object object = (Object)bundle.get(pdus); SmsMessage sms=new SmsMessageobject.length; for(int i=0;iobject.length;i+) sms0 = SmsMessage.createFromPdu(byte)objecti); Toast.makeText(context, 來自+smsi.getDisplayOriginatingAddress()+ 的消息是:+smsi.getDisplayMessageBody(), Toast.LENGTH_SHORT).show(); /終止廣播,在這里我們可以稍微處理,根據(jù)用戶輸入的號碼可以實(shí)現(xiàn)短信防火墻。 abortBroadcast(); 當(dāng)實(shí)現(xiàn)了廣播接收器,還要設(shè)置廣播接收器接收廣播信息的類型,這里是信息:vider.Telephony.SMS_RECEIVED 我們就可以把廣播接收器注冊到系統(tǒng)里面,可以讓系統(tǒng)知道我們有個廣播接收器。這里有兩種,一種是代碼動態(tài)注冊:/生成廣播處理 smsBroadCastReceiver = new SmsBroadCastReceiver(); /實(shí)例化過濾器并設(shè)置要過濾的廣播 IntentFilter intentFilter = new IntentFilter(vider.Telephony.SMS_RECEIVED); /注冊廣播 BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); 一種是在AndroidManifest.xml中配置廣播 兩種注冊類型的區(qū)別是: 1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。 2)第二種是常駐型,也就是說當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播來,程序也會被系統(tǒng)調(diào)用自動運(yùn)行。請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關(guān)系。Handler簡介:一個Handler允許你發(fā)送和處理Message和Runable對象,這些對象和一個線程的MessageQueue相關(guān)聯(lián)。每一個線程實(shí)例和一個單獨(dú)的線程以及該線程的MessageQueue相關(guān)聯(lián)。當(dāng)你創(chuàng)建一個新的Handler時,它就和創(chuàng)建它的線程綁定在一起了。這里,線程我們也可以理解為線程的MessageQueue。從這一點(diǎn)上來看,Handler把Message和Runable對象傳遞給MessageQueue,而且在這些對象離開MessageQueue時,Handler負(fù)責(zé)執(zhí)行他們。Handler有兩個主要的用途:(1)確定在將來的某個時間點(diǎn)執(zhí)行一個或者一些Message和Runnable對象。(2)在其他線程(不是Handler綁定線程)中排入一些要執(zhí)行的動作。Scheduling Message,即(1),可以通過以下方法完成:post(Runnable):Runnable在handler綁定的線程上執(zhí)行,也就是說不創(chuàng)建新線程。postAtTime(Runnable,long):postDelayed(Runnable,long):sendEmptyMessage(int):sendMessage(Message):sendMessageAtTime(Message,long):sendMessageDelayed(Message,long):post這個動作讓你把Runnable對象排入MessageQueue,MessageQueue受到這些消息的時候執(zhí)行他們,當(dāng)然以一定的排序。sendMessage這個動作允許你把Message對象排成隊(duì)列,這些Message對象包含一些信息,Handler的hanlerMessage(Message)會處理這些Message.當(dāng)然,handlerMessage(Message)必須由Handler的子類來重寫。這是編程人員需要作的事。當(dāng)posting或者sending到一個Hanler時,你可以有三種行為:當(dāng)MessageQueue準(zhǔn)備好就處理,定義一個延遲時間,定義一個精確的時間去處理。后兩者允許你實(shí)現(xiàn)timeout,tick,和基于時間的行為。當(dāng)你的應(yīng)用創(chuàng)建一個新的進(jìn)程時,主線程(也就是UI線程)自帶一個MessageQueue,這個MessageQueue管理頂層的應(yīng)用對象(像activities,broadcast receivers等)和主線程創(chuàng)建的窗體。你可以創(chuàng)建自己的線程,并通過一個Handler和主線程進(jìn)行通信。這和之前一樣,通過post和sendmessage來完成,差別在于在哪一個線程中執(zhí)行這么方法。在恰當(dāng)?shù)臅r候,給定的Runnable和Message將在Handler的MessageQueue中被Scheduled。Message簡介:Message類就是定義了一個信息,這個信息中包含一個描述符和任意的數(shù)據(jù)對象,這個信息被用來傳遞給Handler.Message對象提供額外的兩個int域和一個Object域,這可以讓你在大多數(shù)情況下不用作分配的動作。盡管Message的構(gòu)造函數(shù)是public的,但是獲取Message實(shí)例的最好方法是調(diào)用Message.obtain(),或者Handler.obtainMessage()方法,這些方法會從回收對象池中獲取一個。MessageQueue簡介:這是一個包含message列表的底層類。Looper負(fù)責(zé)分發(fā)這些message。Messages并不是直接加到一個MessageQueue中,而是通過MessageQueue.IdleHandler關(guān)聯(lián)到Looper。你可以通過Looper.myQueue()從當(dāng)前線程中獲取MessageQueue。Looper簡介:Looper類被用來執(zhí)行一個線程中的message循環(huán)。默認(rèn)情況,沒有一個消息循環(huán)關(guān)聯(lián)到線程。在線程中調(diào)用prepare()創(chuàng)建一個Looper,然后用loop()來處理messages,直到循環(huán)終止。大多數(shù)和message loop的交互是通過Handler。下面是一個典型的帶有Looper的線程實(shí)現(xiàn)。 class LooperThread extends Thread public Handler mHandler; public void run() Looper.prepare(); mHandler = new Handler() public void handleMessage(Message msg) / process incoming messages here ; Looper.loop(); android中的動畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么? 兩種,一種是Tween動畫、還有一種是Frame動畫。Tween動畫,這種實(shí)現(xiàn)方式可以使視圖組件移動、放大、縮小以及產(chǎn)生透明度的變化;另一種Frame動畫,傳統(tǒng)的動畫方法,通過順序的播放排列好的圖片來實(shí)現(xiàn),類似電影。handler機(jī)制的原理 andriod提供了 Handler 和 Looper 來滿足線程間的通信。Handler 先進(jìn)先出原則。Looper類用來管理特定線程內(nèi)對象之間的消息交換(Message Exchange)。 1)Looper: 一個線程可以產(chǎn)生一個Looper對象,由它來管理此線程里的Message Queue(消息隊(duì)列)。 2)Handler: 你可以構(gòu)造Handler對象來與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來的消息。 3) Message Queue(消息隊(duì)列):用來存放線程放入的消息。 4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue。 你后臺的Activity被系統(tǒng) 回收怎么辦?如果后臺的Activity由于某原因被系統(tǒng)回收可了,如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)?除了在棧頂?shù)腶ctivity,其他的activity都有可能在內(nèi)存不足的時候被系統(tǒng)回收,一個activity越處于棧底,被回收的可能性越大.protected void onSaveInstanceState(Bundle outState) super.onSaveInstanceState(outState);outState.putLong(id, 1234567890);public void onCreate(Bundle savedInstanceState) /判斷 savedInstanceState是不是空./如果不為空就取出來 super.onCreate(savedInstanceState);10、排序都有哪幾種方法?請列舉。用JAVA實(shí)現(xiàn)一個快速排序。 本人只研究過冒泡排序、選擇排序和快速排序,下面是快速排序的代碼:public class QuickSort /* 快速排序* param strDate* param left* param right*/public void quickSort(String strDate,int left,int right)String middle,tempDate;int i,j;i=left;j=right;middle=strDate(i+j)/2;dowhile(strDpareTo(middle)0& i0& jleft)j-; /找出右邊比中間值小的數(shù)if(i=j) /將左邊大的數(shù)和右邊小的數(shù)進(jìn)行替換 tempDate=strDatei;strDatei=strDatej;strDatej=tempDate;i+;j-;while(i=j); /當(dāng)兩者交錯時停止if(ileft)quickSort(strDate,left,j);/* * param args */public static void main(String args)String strVoid=new String11,66,22,0,55,22,0,32;QuickSort sort=new QuickSort();sort.quickSort(strVoid,0,strVoid.length-1);for(int i=0;istrVoid.length;i+)System.out.println(strVoidi+ );6、short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯? 對于short s1 = 1; s1 = s1 + 1; 由于s1+1運(yùn)算時會自動提升表達(dá)式的類型,所以結(jié)果是int型,再賦值給short類型s1時,編譯器將報告需要強(qiáng)制轉(zhuǎn)換類型的錯誤。對于short s1 = 1; s1 += 1;由于 += 是java語言規(guī)定的運(yùn)算符,java編譯器會對它進(jìn)行特殊處理,因此可以正確編譯。 20、接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)(implements)接口? 抽象類是否可繼承具體類(concrete class)? 抽象類中是否可以有靜態(tài)的main方法?接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類是否可繼承具體類。抽象類中可以有靜態(tài)的main方法。備注:只要明白了接口和抽象類的本質(zhì)和作用,這些問題都很好回答,你想想,如果你是java語言的設(shè)計(jì)者,你是否會提供這樣的支持,如果不提供的話,有什么理由嗎?如果你沒有道理不提供,那答案就是肯定的了。 只有記住抽象類與普通類的唯一區(qū)別就是不能創(chuàng)建實(shí)例對象和允許有abstract方法。String是最基本的數(shù)據(jù)類型嗎? 基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。 java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節(jié)省空間,我們應(yīng)該用StringBuffer類 String s = new String(xyz);創(chuàng)建了幾個String Object? 二者之間有什么區(qū)別?兩個或一個,”xyz”對應(yīng)一個對象,這個對象放在字符串常量緩沖區(qū),常量”xyz”不管出現(xiàn)多少遍,都是緩沖區(qū)中的那一個。New String每寫一遍,就創(chuàng)建一個新的對象,它一句那個常量”xyz”對象的內(nèi)容來創(chuàng)建出一個新String對象。如果以前就用過xyz,這句代表就不會創(chuàng)建”xyz”自己了,直接從緩沖區(qū)拿。String 和StringBuffer的區(qū)別JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論