Android基礎面試題

仇諾伊發表於2018-01-23

第一部分(Part1)Android基礎測試 共22題(全部單選,每題2分,總分44分 ) 1、關於在Activity生命週期中的各個方法在不同狀態下的呼叫順序的說法,錯誤的是( d) A 一個Activity從被建立到進入執行態,需要依次呼叫onCreate() -> onStart() -> onResume()。 B 點選Home按鈕後,系統回到桌面,然後我們再找到這個應用並開啟,它的執行過程為:onRestart() -> onStart() -> onResume()。 C 當Activity啟動後,點選"返回"按鈕,這時Activity會被終止而重新回到系統桌面,它的執行順序為:onPause() -> onStop() -> onDestroy()。 D 重新啟動一個應用,在它被啟動後,先點選"撥打電話"按鈕,之後再點選"返回"按鈕,這時Activity的執行順序是:onPause() -> onStop() -> onRestart() -> onResume()。

activity_lifecycle.png

2、以下退出Activity的方法中錯誤的是( c) A、finish() B、拋異常強制退出 C、System.exit() D、onStop()

3、我們都知道Handler是執行緒與Activity通訊的橋樑,如果執行緒處理不當,你的機器就會變得更慢,那麼執行緒銷燬的方法是( a) A、onDestroy() B、onClear() C、onFinish() D、onStop()

4、以下關於Handler機制原理的說法,錯誤的是(b ) A、Android提供了Handler和Looper來滿足執行緒間的通訊。 B、Handler機制是遵循先進後出的原則。 C、Looper類用來管理待定執行緒內物件之間的訊息交換(Message Exchange),而通過Handler物件可以與Looper進行溝通,以便push新訊息到Message Queue裡面,或者接收Looper從Meaages Queue取出的訊息。 D、UI Thread通常就是Main Thread,而Android啟動程式的時候就會替它建立一個Message Queue。

5、以下選項中是AbsoluteLayout中特有屬性的是(b ) A、android:layout_height B、android:layout_x C、android:layout_above D、android:layout_toRightOf

6、使用Toast提示時,關於提示時長,以下說法正確的是(b ) A、顯示時長只有2種設定 B、可以自定義顯示時長 C、傳入30,提示會顯示30秒鐘 D、當自定義顯示時長時,比如傳入30,程式會丟擲異常

7、關於AlertDialog的說法不正確的是(a ) A、要想使用對話方塊首先要使用new關鍵字建立AlertDialog的例項 B、對話方塊的顯示需要呼叫show方法 C、setPositiveButton方法是用來加確定按鈕的 D、setNegativeButton方法是用來加取消按鈕的

8、以下關於如何使用Notification的說法,錯誤的是(d ) A、Notification需要NotificatinManager來管理 B、使用NotificationManager的notify方法顯示Notification訊息C、在顯示Notification時可以設定通知時的預設發聲、震動等D、Notification中有方法可以清除訊息

9、在Activity中,獲取service物件的方法有(a ) A、通過直接例項化得到 B、通過繫結得到 C、通過startService()獲取 D、通過getService()獲取

10、以下關於Adapter的描述有誤的是(a ) A、Android系統提供了幾個預設的Adapter類,可供開發者使用,同時,開發者也可以繼承Adapter類來自定義Adapter 。B、Adapter物件在Adapter控制元件和資料來源之間扮演橋樑的角色,它提供了訪問資料來源的入口,並把從資料來源拿到的資料逐項載入到Adapter控制元件中。 C、Android有以下四種Adapter物件可供開發者使用,分別是ArrayAdapter、SimpleAdapter、SimpleCursorAdapter和自定義的Adapter。 D、Android使用了一個抽象類——BaseAdapter作為各個Adapter實體類的基類,並使用兩個介面——ListAdapter和SpinnerAdapter分別作為兩種型別的AdapterView——AbsListView(包含ListView和GridView)和AbsSpinner(包含Spinner和Gallery)的適配介面。

11、以下關於ListView的XML屬性的描述錯誤的是(b ) A、ListView與其他的UI控制元件相同,在XML佈局檔案中通過標籤將其放入介面佈局中。 B、直接讓Activity繼承自ListAdapter,可以將ListView填充滿整個Activity。 C、在XML佈局程式碼中將ListView的位置設為佔滿整個Activity,可以將ListView填充滿整個Activity。 D、把ListView放在佈局控制元件中,讓其只佔介面的某一部分。

12、 以下說法中錯誤的是( a) A. ListView通常顯示比較大的資料量,例如通訊錄應用程式中使用的ListView包含所有的聯絡人 B. ViewHolder這種設計模式省去了經常性findVIewById的呼叫,每次getView/BindView執行,需引用childView一次儲存的標籤(setTag)檢視和使用那些重新引用的getView/BindView的方法程式碼 C. itemView起到狀態快取的作用 D. ExpandableListView是可以擴充套件的ListView,作用就是將ListView進行分組。與ListView一樣,都需要一個Adapter作為橋樑來取得資料,並且需要過載相應的方法,例如getChildView方法就是取得給定分組中給定子檢視的ID,該組的ID必須在組中是唯一的。

13、以下關於Adapter的說法錯誤的是(a ) A. Adapter可以直接儲存資料 B. Android提供的三種Adapter主要有ArrayAdapter、SimplerAdapter、SimplerCursorAdapter C. 在Android的API中,List和Adapter都被放在android.widget包內 D. 在實際應用中,將資料加入到Adapter,以介面形式呈現的Adapter無法儲存資料

14、關於Handler的說法不正確的是(a ) A. 它實現不同程式間通訊的一種機制 B. 它避免了在新執行緒中重新整理UI的操作 C. 它採用佇列的方式來儲存Message D. 它實現不同執行緒間通訊的一種機制

15、關於選單Menu的說法錯誤的是(b ) A. 選單(Menu)是應用程式介面中重要的組成部分,Android系統同樣提供了功能強大的選單元件。 B. 選單雖然是一種資源,但是不可以通過程式碼動態生成,只能通過XML檔案宣告。 C. Android選單可以分為三種,分別是選項選單、上下文選單、子選單。 D. 選項選單是Activity範圍的物件,上下文選單是View元件範圍的選單,而子選單巢狀在它們之中。

16、 上下文選單需要過載onCreateContextMenu方法,該方法用於( a) A. 新增快捷選單所顯示的標題、圖示和選單子項等內容。 B. 處理選單選擇事件。 C. 將快捷選單註冊到介面控制元件上。 D. 動態地新增、刪除選單子項。

17、關於選單的說法錯誤的是(d ) A. 選單可以像介面佈局一樣在 XML 檔案中進行定義。 B. 使用 XML 檔案定義介面選單,將程式碼與介面設計分類,有助於簡化程式碼的複雜程度,並且更有利於介面的視覺化。 C. 選單是應用程式中非常重要的組成部分,能夠在不佔用介面空間的前提下,為應用程式提供統一的功能和設定介面,併為程式開發人員提供了易於使用的程式設計介面。 D. Android系統支援2種選單:選項選單( Option Menu)、子選單( Submenu)。

18、將資料庫儲存在SD上,需要在建立SQLiteDatabse的時候呼叫SQLiteDatabase的靜態方法( c) A. onCreate B. onOpen C. openOrCreateDatabase D. close

19、在執行長時間的資料庫操作的時候,需要資料庫的事務支援來確保資訊的完整性,下面關於事務的說法,不正確的是(d ) A. 使用SQLiteDatabese的beginTransaction()方法可以開啟一個事務 B. 當程式執行到endTransaction()方法的時候,會檢查事務的標誌是否為成功 C. 當應用需要提交事務,必須在程式執行到endTransaction()方法之前使用setTransactionSuccessful()方法設定事務的標誌為成功,如果不呼叫該方法,就會預設回滾事務 D. SQLite允許巢狀事務

20、下列屬於SAX解析xml的優點的是(b ) A. 將整個文件存於記憶體中,這樣便於操作 B. 不用事先將整個文件拷入記憶體 C. 整個文件放入內容,浪費時間和空間 D. 不是長久駐留記憶體,資料不是持久的,事件過後,若沒有儲存資料,資料就會消失

21、以下關於訪問其他應用程式的SharedPreferences的說法不正確的是( a) A、Preferences 能在不同包之間使用。 B、共享者需要將SharedPreferences的訪問模式設定為全域性讀或全域性寫。 C、訪問者需要知道共享者的包名稱和SharedPreferences的名稱,以通過Context獲得SharedPreferences物件。 D、訪問者需要確切知道每個資料的名稱和資料型別,用以正確讀取資料。

22、XmlPullParser的XML事件型別中END_TAG的說明為( c) A、讀取到標籤開始標誌 B、讀取文字內容 C、讀取到標籤結束標誌 D、文件末尾

第二部分(Part2)Android核心元件測試 共18題(全部單選,每題2分,總分36分 ) 23、以下Activity生命週期中的各個方法在不同狀態下的呼叫順序,錯誤的是(d ) A、一個Activity從被建立到進入執行態,需要依次呼叫onCreate() -> onStart() -> onResume()。 B、點選Home按鈕後,系統回到桌面,然後我們再找到這個應用並開啟,它的執行過程為:onRestart() -> onStart() -> onResume()。 C、當Activity啟動後,點選“返回”按鈕,這時Activity會被終止而重新回到系統桌面,它的執行順序為:onPause() -> onStop() -> onDestroy()。 D、重新啟動一個應用,在它被啟動後,先點選“撥打電話”按鈕,之後再點選“返回”按鈕,這時Activity的執行順序是:onPause() -> onStop() -> onRestart() -> onResume()。

24、當Activity被銷燬時,儲存它原來狀態的方法是(a ) A、實現Activity的onSaveInstanceState()方法 B、實現Activity的onSaveInstance()方法 C、實現Activity的onInstanceState()方法 D、實現Activity的onSaveState()方法

25、Intent傳遞資料時,以下不可以被傳遞的型別資料是( b) A、Serializable B、JSON物件 C、Bundle D、charsequence

26、以下關於使用Intent Filter描述有誤的一項是(b ) A、Intent Filter有兩種使用方式。 B、不可以在程式碼中使用IntentFilter物件。 C、允許在配置檔案AndroidManifest.xml中的相應元件標籤中加入<intent-filter>標籤並在其中進行設定。 D、Intent Filter的幾種方式都可以使用系統內建或自定義的屬性值,開發者可以使用Action、Category和Data三個屬性的設定和獲取方法完成匹配。 27、多個應用中讀取共享儲存資料時用到的query方法,是(a )物件的方法。 A、ContentResolver B、ContentProvider C、CursorD、SQLiteHelper

28、以下關於ContentProvider的說法不正確的是(a ) A、ContentProvider在Android中的作用是對外共享資料,也就是說可以通過ContentProvider把應用中的資料共享給其他應用訪問,但是缺點是其他應用不可以通過ContentProvider對本應用中的資料進行增刪改查。 B、通過指定檔案的操作模式為Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE也可以對外共享資料。C、如果採用檔案操作模式對外共享資料,資料的訪問方式會因資料儲存的方式而不同,導致資料的訪問方式無法統一。D、使用ContentProvider對外共享資料的好處是統一了資料的訪問方式。 29、以下關於ContentResolver的說法錯誤的是(b ) A、當外部應用需要對ContentProvider中的資料進行新增、刪除、修改和查詢操作時,可以使用ContentResolver 類來完成。 B、 ContentResolver 類提供了與ContentProvider類相同簽名的insert、delete、update方法,但是沒有提供query方法。C、通過ContentResolver對ContentProvider中的資料進行操作的時候,當需要將id為1時記錄的name欄位值更改為csg的時候,使用ContentValues的put方法,put("name", "csg")。 D、要獲取ContentResolver 物件,可以使用Activity提供的getContentResolver()方法。

30、以下關於執行緒非同步問題的說法不正確的是(d ) A、執行緒在應用程式開發過程中負責分擔程式的耗時計算工作。 B、一個程式中如果需要多個執行緒共同協作才能完成業務計算的話,往往會涉及到執行緒之間的資料通訊。 C、執行緒依靠CPU排程分配時間片獲得執行機會,當CPU時間片耗盡,執行緒將會停止執行等待CPU的再次分配。 D、由於執行緒的執行與停止是可控的,所以當多個執行緒之間需要同時對一塊程式中的"共享記憶體"程式操作的時候,就有可能發生執行緒非同步互動錯誤。

31、關於同步關鍵字的說法錯誤的是(a ) A、如果一個執行緒在執行同步方法時沒有執行完畢程式碼就耗盡了時間片,其他執行緒在獲得了執行權之後就可以執行了。 B、為防止時間片耗盡導致的程式碼沒有完全執行完畢的情況發生,可以考慮利用同步關鍵字。 C、利用同步關鍵保證只有當一個執行緒徹底執行完方法後,其他執行緒才能執行該方法。 D、等待失去時間片的執行緒執行完畢程式碼後,才能訪問該方法。

32、以下關於Service的說法錯誤的是(c ) A. Android中,Service有兩種不同的使用方式:一種是以啟動方式使用Service(Started Service),另一種是以繫結方式使用Service(Bound Service)。 B. 需要在AndroidManifest.xml檔案中註冊,否則,Service根本無法啟動。 C. 以繫結方式使用Service,能夠獲取到Service物件,不僅能夠正常啟動Service,而且能夠呼叫正在執行中的Service實現的私有方法和屬性。 D. 為了使Service支援繫結,需要在Service類中重寫onBind()方法,並在onBind()方法中返回Service物件。

33、以下關於Service繫結的說法有誤的是( d) A. 如果繫結成功,則會通過getService()獲取Service物件,這樣便可以呼叫Service中的方法和屬性。 B. 如果繫結意外失敗,會將Service物件設定為null,表示繫結意外失效,Service例項不再可用。 C. 繫結一個Service就可以開啟並使一個Service處於執行狀態。 D. 以繫結方式使用Service時,呼叫者需要宣告一個ServiceConnnection物件,但可以不用重寫它的onServiceConnected()和onServiceDisconnected()方法。

34、以下關於Service的兩種選擇描述錯誤的是(c ) A. 以繫結方式使用Service時,使用bindService()方法的目的是回撥onBind()方法,它的作用是在Service和呼叫者之間建立一個橋樑。 B. 當呼叫者結束時,Service也會結束,而不負責更多的工作,例如連線伺服器的操作。 C. 一般會把在應用程式被關閉後仍然需要執行的操作實現為一個繫結式的Service,而將一些執行特定功能、執行週期短或在應用程式關閉後將要停止的操作實現為啟動式的Service。 D. 在實際開發中,常會將這兩種方式的Service混用,一般的做法是在一個長期執行的、啟動式的Service中多次繫結並解綁多個繫結式的Service,在每個繫結式的Service中都會執行短期的、特定的工作。

35、以下關於啟動式Service的描述錯誤的是(a ) A. 通過服務連結(Connection)或直接獲取Service中狀態和資料資訊。 B. 如果僅以啟動方式使用Service,這個Service需要具備自管理的能力,且不需要通過函式呼叫向外部元件提供資料或功能。 C. 通過呼叫Context.startService()啟動Service,通過呼叫Context.stopService()或Service.stopSefl()停止Service。 D. Service是由其他的元件啟動的,但停止過程可以通過其他元件或自身完成。

36、以下關於繫結式Service的描述不正確的是(b ) A. 服務連結能夠獲取到Service物件,因此繫結Service的元件可以呼叫在Service中實現的函式。 B. 使用Service的元件通過Context.bindService()建立服務連結,通過Context.stopService()或Service.stopSefl()停止服務連結。 C. 如果在繫結過程中Service沒有啟動,Context.bindService()會自動啟動Service。 D. 同一個Service可以繫結多個服務連結,這樣可以同時為多個不同的元件提供服務。

37、以下關於Service的描述不正確的是(b ) A. 啟動式的Service和繫結式的Service並不是完全獨立的,在某些情況下可以混合使用。 B. 以繫結方式使用Service,能夠獲取到Service物件,不僅能夠正常啟動Service,而且能夠呼叫正在執行中的Service實現的私有方法和屬性。 C. 需要在AndroidManifest.xml檔案中註冊,否則,Service根本無法啟動。 D. Android中,Service有兩種不同的使用方式:一種是以啟動方式使用Service(Started Service),另一種是以繫結方式使用Service(Bound Service)。

38、以下關於Android中的廣播機制的描述有誤的是(a ) A. 在Android中使用廣播這種非同步機制來處理元件之間的訊息傳遞,所以元件會接收所有的廣播。 B. 所謂非同步,就是廣播的傳送方和接收方不需要互相等待,對廣播的收發並不會影響本身正常的工作。 C. 使用非同步廣播的好處之一是可以避免元件之間因為互相等待而造成的衝突、資源浪費和死鎖等情況。 D. 使用非同步廣播的好處之一是可以大大簡化應用層的程式設計難度。

39、以下關於Android中的廣播機制的說法不正確的是(c ) A. 在應用層,傳送方元件通常需要定義一個Intent物件,用於封裝要傳送的訊息,並指定其Action屬性用於匹配(參見第二章中的Intent屬性部分),然後在元件中使用Context物件(上下文環境)所在的sendBroadcast()方法,將這個Intent傳送出去。 B. 接收方想要接收到某一個廣播時,需要在該廣播被髮送之前,註冊一個BroadcastReceiver(廣播接收者),將其Action屬性設定為與要接受廣播的Action屬性相同的值。 C. 一般不需要在元件的onDestroy()方法中呼叫unRegisterReceiver()方法,以取消已註冊的BroadcastReceiver物件,清理資源。 D. 如果在Activity的onResume()方法中註冊了BroadcastReceiver,則應該在onPause()方法中取消註冊。

40、在設定應用之間信任並實現資料共享時,需要增加( c)屬性,並保證兩個應用一致。 A. android:gravity B. android:hint C. android:sharedUserId D. android:typeface

第三部分(Part3)Android多媒體測試共10題(全部單選,每題2分,總分20分) 41、關於AppWidgetProvider類中,每接收一次廣播訊息就呼叫一次的方法是(a ) A、onReceive() B、onUpdate() C、onDeleted() D、onEnabled()

42、關於AppWidgetProvider類的onEnabled方法,描述正確的是(c ) A、每次更新都呼叫一次該方法,使用頻繁。 B、每刪除一個就呼叫一次。 C、當該Widget第一次新增到桌面時呼叫該方法,可新增多次但只有第一次呼叫。 D、當最後一個該Widget刪除時,呼叫該方法。

43、以下關於開發自定義的Widget元件的說法錯誤的是(c ) A、當Widget被使用者拖拽入桌面中,Launcher會向Widget傳送廣播。 B、當Widget被使用者從桌面上移除,Launcher會向Widget傳送廣播 C、Widget不需要配置Launcher的廣播接收器。

44、以下關於使用MediaRecorder的說法有誤的是(c ) A、Android多媒體框架中包含錄音功能,並能編碼成多種音訊格式,我們可以使用MediaRecorder類的API實現錄音功能。B、想要使用錄音功能,需要在AndroidManifest.xml中宣告這個許可權:<uses-permission android:name="android.permission.RECORD_AUDIO"。> C、我們通過MediaRecorder只能完成avi格式視訊的錄製。D、想要使用視訊錄製功能,需要在AndroidManifest.xml中加入<uses-permission android:name="android.permission.RECORD_VIDEO"/>許可權。

45、以下關於MediaPlayer的生命週期描述有誤的是( a) A、要開始播放MeidaPlayer物件,就必須成功呼叫prepare ()方法。 B、MeidaPlayer通過isPlaying()方法來檢測當前是否正在播放。 C、MeidaPlayer通過setLooping(boolean)方法來設定是否迴圈播放。 D、MeidaPlayer通過pause()方法來實現暫停播放,通過stop()方法來實現停止播放。

46、以下關於SurfaceView播放視訊的說法,不正確的是( b) A、SurfaceView繼承自View,其中內嵌了一個專門用於繪製的Surface。 B、開發者可以控制Surface的格式和尺寸,但不能讓SurfaceView控制這個Surface的繪製位置。 C、Surface對應一塊螢幕緩衝區,每個Window對應一個Surface,任何View都是畫在Surface上的,包括之前講過的控制元件和佈局控制元件。 D、一般的View都共享一塊螢幕緩衝區,所有的繪製必須在UI執行緒中進行。

47、以下關於拍照功能的描述有誤的是(c ) A、Android中,可以使用Camera類中的API實現拍照功能。B、Android提供了藉助Intent和MediaStroe呼叫系統自帶的拍照應用程式來實現拍照功能。 C、Android提供了使用MediaStroe類中的API自行編寫拍照程式。 D、儲存所拍照片的檔案路徑,必須確保資料夾路徑存在,否則拍照後無法完成回撥。

48、以下關於Canvas的描述有誤的是(b ) A、通常Canvas(畫布)、Paint(畫筆)、Bitmap(點陣圖)、ViewFlipper(動畫)和使用OpenGL去設計的2D、3D圖形或動畫是用來開發Android遊戲的類庫。 B、Canvas就像手機中的畫布,我們只能在Canvas上繪製圖片。 C、View類的onDraw()方法會傳入一個Canvas物件,用來繪製元件介面的畫布。 D、Android提供了多種處理圖形影象的工具類,加上自定義View技術,幾乎可以完成任何的圖形影象處理

49、以下是SD卡讀取許可權的是(a ) A、android.permission.READ_EXTERNAL_STORAGE B、android.permission.WRITE_EXTERNAL_STORAGE C、android.permission.WRITE_CALENDAR D、android.permission.READ_PHONE_STAT

50、負責管理所有Android感測器框架支援的感測器元件是(c ) A、android.hardware.Sensor B、android.hardware.SensorEventListener C、android.hardware.SensorManager D、android.hardware.SensorManager

相關文章