Android筆試面試題一(常考選擇填空)
一、選擇題
1. 下列哪些語句關於記憶體回收的說明是正確的()
A、 程式設計師必須建立一個執行緒來釋放記憶體 B、 記憶體回收程式負責釋放無用記憶體
C、 記憶體回收程式允許程式設計師直接釋放記憶體 D、 記憶體回收程式可以在指定的時間釋放記憶體物件
解析:B
2. 下面異常是屬於RuntimeException 的是()(多選)
A、ArithmeticException B、IllegalArgumentException
C、NullPointerException D、BufferUnderflowException
解析:ABCD
A:當出現異常的運算條件時,丟擲此異常,例如一個整數除以0時
B:丟擲的異常表明向方法傳遞了一個不合法或不正確的引數
C:空指標
3. Math.round(11.5)等於多少(). Math.round(-11.5)等於多少().
A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12
解析:C
4. 對一些資源以及狀態的操作儲存,最好是儲存在生命週期的哪個函式中進行()
A、onPause() B、onCreate() C、 onResume D、onStart()
解析:D
6. Intent傳遞資料時,下列的資料型別哪些可以被傳遞()(多選)
A、Serializable B、charsequence C、Parcelable D、Bundle
解析:ABCD
7. android 中下列屬於Intent的作用的是()
A、實現應用程式間的資料共享
B、是一段長的生命週期,沒有使用者介面的程式,可以保持應用在後臺執行,而不會因為切換頁面而消失
C、可以實現介面間的切換,可以包含動作和動作資料,連線四大元件的紐帶
D、處理一個應用程式整體性的工作
解析:C
8. 下列屬於SAX解析xml檔案的優點的是()
A、將整個文件樹在記憶體中,便於操作,支援刪除,修改,重新排列等多種功能
B、不用事先調入整個文件,佔用資源少
C、整個文件調入記憶體,浪費時間和空間
D、不是長久駐留在記憶體,資料不是持久的,事件過後,若沒有儲存資料,資料就會消失
解析:B
SAX: 優點:B,缺點:D
DOM:優點:A,缺點:C
9. 下面的對自定style的方式正確的是()
A、<resources>
<stylename="myStyle">
<itemname="android:layout_width">fill_parent</item>
</style>
</resources>
B、<style name="myStyle">
<itemname="android:layout_width">fill_parent</item>
</style>
C、<resources>
<itemname="android:layout_width">fill_parent</item>
</resources>
D、<resources>
<stylename="android:layout_width">fill_parent</style>
</resources>
解析:A
10. 在android中使用Menu時可能需要重寫的方法有()(多選)
A、onCreateOptionsMenu() B、onCreateMenu()
C、onOptionsItemSelected() D、onItemSelected()
解析:AC
當點選Menu按鈕時,呼叫onCreateOptionsMenu()方法;當點選選單中某一個選項時,會呼叫 onOptionsItemSelected()方法
11. 在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數據庫,並可以對資料庫版本進行管理的方法可以是() (多選)
A、getWriteableDatabase() B、getReadableDatabase()
C、getDatabase() D、getAbleDatabase()
解析:AB
12. android 關於service生命週期的onCreate()和onStart()說法正確的是()(多選)
A、當第一次啟動的時候先後呼叫onCreate()和onStart()方法
B、當第一次啟動的時候只會呼叫onCreate()方法
C、如果service已經啟動,將先後呼叫onCreate()和onStart()方法
D、如果service已經啟動,只會執行onStart()方法,不在執行onCreate()方法
解析:AD
13. 下面是屬於GLSurFaceView特性的是()(多選)
A、管理一個surface,這個surface就是一塊特殊的記憶體,能直接排版到android的檢視
view上。
B、管理一個EGL display,它能讓opengl把內容渲染到上述的surface上。
C、讓渲染器在獨立的執行緒裡運作,和UI執行緒分離。
D、可以直接從記憶體或者DMA等硬體介面取得影象資料
解析:ABC
GLSurFaceView是一個檢視,繼承至SurFaceView,它內嵌的SurFace專門負責OpenGl渲染
GLSurFaceView提供了下列特性:
1)管理一個surface,這個surface就是一塊特殊的記憶體,能直接排版到android的檢視
view上;
2)管理一個EGL display,它能讓opengl把內容渲染到上述的surface上;
3)讓渲染器在獨立的執行緒裡運作,和UI執行緒分離;
4)使用者自定義渲染器(render);
5)支援按需渲染(on-demand)和連續渲染(continuous);
6)一些可選工具,如除錯;
14. 下面在AndroidManifest.xml檔案中註冊BroadcastReceiver方式正確的()
A、<receiver android:name="NewBroad">
<intent-filter>
<action
android:name="android.provider.action.NewBroad"/>
<action>
</intent-filter>
</receiver>
B、<receiver android:name="NewBroad">
<intent-filter>
android:name="android.provider.action.NewBroad"/>
</intent-filter>
</receiver>
C、<receiver android:name="NewBroad">
<action
android:name="android.provider.action.NewBroad"/>
</action>
</receiver>
D、<intent-filter>
<receiverandroid:name="NewBroad">
<action>
android:name="android.provider.action.NewBroad"/>
</action>
</receiver>
</intent-filter>
解析:A
15. 關於ContenValues類說法正確的是()
A、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中的
名是String型別,而值都是基本型別
B、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中的
名是任意型別,而值都是基本型別
C、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中的
名,可以為空,而值都是String型別
D、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中
的名是String型別,而值也是String型別
解析:A
16. 我們都知道Hanlder是執行緒與Activity通訊的橋樑,如果執行緒處理不當,你的機器就會變得越慢,那麼執行緒銷燬的方法是()
A、onDestroy() B、onClear()
C、onFinish() D、onStop()
解析:A
17. 下面退出Activity錯誤的方法是()
A、finish() B、拋異常強制退出
C、System.exit() D、onStop()
解析:C:應該為System.exit(0),0是正常退出,其他數字是表示不正常退出
18. 下面屬於android的動畫分類的有()(多選)
A、Tween B、Frame C、Draw D、Animation
解析:AB
19. 下面關於Android dvm的程序和Linux的程序,應用程式的程序說法正確的是()
A、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的程序中執行,不一定擁有一個獨立 的Dalvik虛擬 機例項.而每一個DVM都是在Linux中的一個程序,所以說可以認為是同一個概念.
B、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的程序中執行,不一定擁有一個獨立的Dalvik虛擬 機例項.而每一個DVM不一定都是在Linux 中的一個程序,所以說不是一個概念.
C、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的程序中執行,都擁有一個獨立的Dalvik虛擬機器實 例.而每一個DVM不一定都是在Linux 中的一個程序,所以說不是一個概念.
D、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的程序中執行,都擁有一個獨立的 Dalvik虛擬機器實 例.而每一個DVM都是在Linux 中的一個程序,所以說可以認為是同一個概念
解析:D
20. Android專案工程下面的assets目錄的作用是什麼()
A、放置應用到的圖片資源。 B、主要放置多媒體等資料檔案
C、放置字串,顏色,陣列等常量資料 D、放置一些與UI相應的佈局檔案,都是xml檔案
解析:B
21. 關於res/raw目錄說法正確的是()
A、 這裡的檔案是原封不動的儲存到裝置上不會轉換為二進位制的格式
B、這裡的檔案是原封不動的儲存到裝置上會轉換為二進位制的格式
C、 這裡的檔案最終以二進位制的格式儲存到指定的包中
D、這裡的檔案最終不會以二進位制的格式儲存到指定的包中
解析:A
22. 下列對android NDK的理解正確的是()(多選)
A、 NDK是一系列工具的集合
B、 NDK 提供了一份穩定、功能有限的 API 標頭檔案宣告。
C、 使 “Java+C” 的開發方式終於轉正,成為官方支援的開發方式
D、 NDK 將是 Android 平臺支援 C 開發的開端
解析:ABCD
23. java.io包中定義了多個流型別來實現輸入和輸出功能,可以從不同的角度對其進行分 類,按功能分為:(c),如果為讀取的內容進行處理後再輸出,需要使用下列哪種流?()
A、輸入流和輸出流 B、位元組流和字元流 C、節點流和處理流
D、Filestream E、Pipestream F、Random stream
G、Filter stream
解析:G
24. 在繼承中,關於構造方法的說明,下列說法錯誤的是()
A、子類無條件的繼承父類的無參構造方法,
B、子類可以引用父類中的有參構造方法,使用super關鍵字,
C、如果子類沒有構造方法,則父類無參構造方法作為自已的構造方法,
D、如果子類有無參構造方法,而父類的無參構造方法則被覆蓋
解析:D
25.下列關於資料持久化的描述正確的有()(多選)
A、在記憶體中快取多個Bitmap物件是一種資料持久化方法
B、SQLite資料庫檔案可以儲存在SD卡中
C、ContentProvider的主要目的是為了將Android應用的資料持久化
D、資料持久化就是將記憶體的資料儲存到外存
解析:BD andorid資料持久化的方法: 1.檔案IO(直接寫入SD卡檔案);2.SQLite資料庫;
3.使用Preferences。 Preferences其實也屬於檔案IO; 4.ContentProvider。作為android4大元件之一,其本身也是為了實現程序間資料共享。資料持久化就是將記憶體中的資料模型轉化為儲存模型。反觀,ContentProvider,會發現其中好多方法和SQLite資料庫操作方法有的一拼,但是 ContentProvider的主要目的還是為了資料共享。
26.Android dvm的程序和Linux的程序,以下說法是錯誤的是()
A、它們都是程序的一種
B、dvm是android的虛擬機器
C、linux的程序是程式的具體實現,是執行程式的過程
D、dvm中可以建立多個程序來處理應用間的同步問題
解析:D:每一個Android應用程式都在它自己的程序中執行,都擁有一個獨立的Dalvik虛擬機器例項,每一個DVM都是在Linux 中的一個程序
27.關於Intent 物件說法錯誤的是()
A、在 android 中,Intent物件是用來傳遞資訊的
B、Intent 物件可以把值傳遞給廣播或 Activity
C、利用 Intent 傳值時,可以傳遞一部分值型別
D、利用 Intent 傳值時,它的 key 值可以是物件
解析:D:Key值應該是一個隨便什麼樣的字串,value值可以是序列化之後的物件
28.以下關於Toast說法正確的是()(多選)
A、Toast能編輯
B、Toast沒有焦點
C、Toast可以獲得使用者輸入
D、Toast只能持續一段時間
解析:BD:Toast是Android中用來顯示顯示資訊的一種機制,和Dialog不一樣的是,Toast是沒有焦點的,而且Toast顯示的時間有限,過一定的時間就會自動消失。
A:Toast的自定義和可編輯是不同的
29.下面是屬於GLSurFaceView特性的是()(多選)
A、管理一個surface,這個surface就是一塊特殊的記憶體,能直接排版到android的檢視view上
B、管理一個EGL display,它能讓opengl把內容渲染到上述的surface上
C、讓渲染器在獨立的執行緒裡運作,和UI執行緒分離
D、可以直接從記憶體或者DMA等硬體介面取得影象資料
解析:ABC
GLSurfaceView提供了下列特性:
1> 管理一個surface,這個surface就是一塊特殊的記憶體,能直接排版到android的檢視view上。 2> 管理一個EGL display,它能讓opengl把內容渲染到上述的surface上。 3> 使用者自定義渲染器(render)。 4> 讓渲染器在獨立的執行緒裡運作,和UI執行緒分離。 5> 支援按需渲染(on-demand)和連續渲染(continuous)。 6> 一些可選工具,如除錯。30.在一個ListView中,顯示的行佈局有多種不同形式,例如某些行只有ImageView,而另外一些行只有TextView,需要重寫哪幾個方法()(多選)
A、getCount()
B、getItemId()
C、getItemViewType()
D、getViewTypeCount()
解析:ABCD
如果listview只是一種型別,那麼只需要重寫a,和getview()即可,但是這裡已經寫明瞭,有imageview和textview,所以需要b來得到當前的view id號,和c得到當前view的型別 至於最後一個也是需要的,這些方法都是非常有必要的
31.android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數據庫,並可以對資料庫進行管理的方法可以是()(多選)
A、getWriteableDatabase()
B、getReadableDatabase()
C、getDatabase()
D、getAbleDatabase()
解析:AB
Android使用 getWritableDatabase() 和getReadableDatabase()方法都可以獲取一個用於操作資料庫的SQLiteDatabase例項
1)getReadableDatabase()並不是以只讀方式開啟資料庫,而是先執行getWritableDatabase(),如果一旦資料庫的磁碟空間滿了,會開啟失敗,失敗的情況下才以只讀方式開啟資料庫,得到一個只讀的物件;
2)getWritableDatabase()方法以讀寫方式開啟資料庫,一旦資料庫的磁碟空間滿了,資料庫就只能讀而不能寫,getWritableDatabase()開啟資料庫就會出錯,會丟擲異常
32.下列哪些情況下,系統可能會彈出ANR對話方塊()(多選)
A、在Activity中,Main執行緒訊息佇列中的訊息在5秒內沒有得到響應
B、在Service中,onStartCommand()方法執行超過5秒
C、在BroadcastReceiver中,onReceive()方法執行時間超過10秒
D、在啟動的新執行緒中,run()方法執行時間超過5秒
解析:AC
三種常見型別:1:Activity在5s內無響應 --主要型別
2 :BroadcastReceiver在10s內無法處理完成
3: Service在20s內無法處理完成 -- 小概率型別
33.下面關於Android中定義style和theme的描述正確的是()(多選)
A、都可以減少重複屬性設定
B、style可以作用在Activity上
C、Theme類可以繼承
D、一個TextView的style中定義了textColor屬性,TextView本身也設定textColor屬性,那麼TextView本身定義的優先順序較高
解析:ABD
出題人所說能不能繼承指的是Theme這個類的不可繼承,強調的是類為final所以不能繼承。而在XML裡頭使用parent來指明父Theme這種不屬於類的繼承。 也算是有歧義的題目了,因為不知道“繼承”是指類的這種狹義的繼承還是後者那種廣義的繼承。
34.在android中使用Menu時可能需要重寫的方法有()(多選)
A、onCreateOptionsMenu()
B、onCreateMenu()
C、onOptionsItemSelected()
D、onItemSelected()
解析:AC
上下文選單(通過在某元素上長按,來撥出選單)
選項選單(通過按手機上的選單按鈕,來撥出選單)
重寫 onCreateContextMenu 用以建立上下文選單
重寫 onContextItemSelected 用以響應上下文選單
重寫 onCreateOptionsMenu 用以建立選項選單
重寫 onOptionsItemSelected 用以響應選項選單
當每次Menu顯示時,會呼叫方法onPrepareOptionsMenu,也可以在選單每次被呼叫時,對選單中的項重新生成,通過過載onPrepareOptionsMenu來實現,由於每次呼叫時都要重新生成,對於那些不經常變化的選單,效率就會比較低。
呼叫Menu.addSubMenu()方法,為某個選單項新增子選單
35.在多個應用中讀取共享儲存資料時,需要用到的query方法,是哪個物件的方法()
A、ContentResolver
B、ContentProvider
C、CursorD
D、SQLiteHelper
解析:A
AB:ContentResolver和 ContentProvider是一對。一個執行在提供資料端(provider),一個執行在呼叫端(resolver)。使用的時候利用resolver來呼叫provider的方法(query,insert,update等),然後provider再進行資料查詢C:Cursor是遊標,返回結果集的。provider的query可以返回這中型別的結果。 D:SQliteHelper這個應該是干擾項,我記得是SQLiteOpenHelper啊。管理資料庫的,一般繼承它,然後重寫onCreate、onUpGrade
36.下面哪條語句可以構造正確的對話方塊()(多選)
A、AlertDialog dialog = new AlertDialog(context)
B、AlertDialog.Builder builder = new AlertDialog.Builder(context)
C、ProgressDialog dialog = new ProgressDialog(context)
D、ProgressDialog.Builder builder = new ProgressDialog.Builder(context)
解析:BC
AB:AlertDialog的構造方法被宣告為protected,所以不能直接使用new關鍵字來建立AlertDialog類的物件例項。要想建立AlertDialog對話方塊,需要使用Builder類,該類是AlertDialog類中定義的一個內嵌類。因此必須建立AlertDialog.Builder類的物件例項,然後再呼叫show()來顯示對話方塊。
C:ProgressDialog是public的,所以能直接使用new關鍵字來建立物件例項
D:因為ProgressDialog是繼承於AlertDialog,所以D是可以實現的
只不過呼叫的是AlertDialog的Builder方法
37.下列關於IntentService與Service的關係描述錯誤的是()(多選)
A、IntentService是Service的子類
B、IntentService在執行時會啟動新的執行緒來執行任務
C、啟動方式不同
D、沒有區別
解析:CD
IntentService是繼承Service的,那麼它包含了Service的全部特性,當然也包含service的生命週期,那麼與service不同的是,IntentService在執行onCreate操作的時候,內部開了一個執行緒,去你執行你的耗時操作。
38.對於一個已經存在的SharedPreferences物件setting,想向其中存入一個字串"person",setting應該先呼叫什麼方法()
A、edit()
B、save()
C、commit()
D、putString()
解析:A
//例項化SharedPreferences物件(第一步)
1 2 |
SharedPreferences
mySharedPreferences= getSharedPreferences( "test" ,
Activity.MODE_PRIVATE);
|
1 |
SharedPreferences.Editor
editor = mySharedPreferences.edit();
|
1 2 |
editor.putString( "name" , "Karl" );
editor.putString(
|