關於Android的面試題(筆試題)---選擇(個人分析)
近日,由於想找個實習單位,所以開始看一些晚上的Android面試或者筆試題,並在此做出總結。
廢話不多說,先從選擇題開始吧~就像讀書考試時的每一道題一樣搞起來吧~
1. 下列哪些語句關於記憶體回收的說明是正確的? (B)
A、 程式設計師必須建立一個執行緒來釋放記憶體
B、 記憶體回收程式負責釋放無用記憶體
C、 記憶體回收程式允許程式設計師直接釋放記憶體
D、 記憶體回收程式可以在指定的時間釋放記憶體物件
個人理解:Android在回收記憶體的時候,當系統記憶體不足時,系統將啟用記憶體回收過程。為了不因記憶體回收影響使用者體驗(如殺死當前的活動程序)
2. 下面異常是屬於Runtime Exception 的是(ABCD)(多選)
A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、BufferUnderflowException
個人理解:ArithmeticException算術異常;IllegalArgumentException字面意思(非法爭議異常);
NullPointerException最常見的 空指標異常了;BufferUnderflowException未經檢查的異常時,
丟擲一個相對get操作達到源緩衝區的限制。
3. Math.round(11.5)等於多少(). Math.round(-11.5)等於多少(C)
A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12
個人理解:簡單來記:round()是Math中的一個四捨五入的方法
4. 下列程式段的輸出結果是:(B)
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
個人理解:&&串聯效果,只要第一個不對就返回false。
與&的區別,&會一直判斷到最後,返回相對應的結果。
5. 對一些資源以及狀態的操作儲存,最好是儲存在生命週期的哪個函式中進行(A)
A、onPause() B、onCreate() C、 onResume() D、onStart()
個人理解:這個題上網上也看了,爭議比較大,很多地方都選D但是,我個人更偏向於A,因為Onpause()方法是在當前Activity失去焦點的時候呼叫的,如果在onStart中儲存,有可能會丟失狀態,比如說:開了一個activity後彈出一個對話方塊,然後又關閉這個對話方塊。這時候activity的生命週期是:onPause->onResume,根本沒有執行onStart,如果onStart中儲存,狀態就丟失了,但是無論怎樣onPause都會執行,所以是onPause。
6. Intent傳遞資料時,下列的資料型別哪些可以被傳遞(ABCD)(多選)
A、Serializable B、charsequence C、Parcelable D、Bundle
個人理解: (1). 8種基本資料型別及其陣列
(2). String(String實現了 Serializable )/CharSequence例項型別的資料及其陣列
(3) . 實現了Parcelable的物件及其陣列
(4). 實現了 Serializable 的物件及其陣列
7. android 中下列屬於Intent的作用的是(C)
A、實現應用程式間的資料共享
B、是一段長的生命週期,沒有使用者介面的程式,可以保持應用在後臺執行,而不會因為切換頁面而消失
C、可以實現介面間的切換,可以包含動作和動作資料,連線四大元件的紐帶
D、處理一個應用程式整體性的工作
個人理解:定義 意圖
8. 下列屬於SAX解析xml檔案的優點的是(b)
A、將整個文件樹在記憶體中,便於操作,支援刪除,修改,重新排列等多種功能
B、不用事先調入整個文件,佔用資源少
C、整個文件調入記憶體,浪費時間和空間
D、不是長久駐留在記憶體,資料不是持久的,事件過後,若沒有儲存資料,資料就會消失
個人理解:
SAX解析器在某些方面優於DOM風格解析器。SAX解析器的記憶體使用量一般遠低於DOM解析器使用量。DOM解析器在任何處理開始之前
因為SAX事件驅動的本質,處理檔案通常會比DOM風格的解析器快。記憶體存取耗時,所以DOM較大的記憶體使用也是一個效能議題。
因為SAX的本質,從磁碟串流讀取是可行的。無法放入記憶體的XML檔案只可能使用SAX解析器(或另外的串流XML解析器)來處理。
9. 下面的對自定style的方式正確的是(A)
A、 <resources>
<style name="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>
個人理解:資源裡面包風格,風格里麵包條目屬性
10. 在android中使用Menu時可能需要重寫的方法有(AC)。(多選)
A、onCreateOptionsMenu()
B、onCreateMenu()
C、onOptionsItemSelected()
D、onItemSelected()
個人理解: 上下文選單(通過在某元素上長按,來撥出選單)
選項選單(通過按手機上的選單按鈕,來撥出選單)
重寫 onCreateContextMenu 用以建立上下文選單
重寫 onContextItemSelected 用以響應上下文選單
重寫 onCreateOptionsMenu 用以建立選項選單
重寫 onOptionsItemSelected 用以響應選項選單
當每次Menu顯示時,會呼叫方法onPrepareOptionsMenu,也可以在選單每次被呼叫時,對選單中的項重新生成,通過過載onPrepareOptionsMenu來實現,由於每次呼叫時都要重新生成,對於那些不經常變化的選單,效率就會比較低。
呼叫Menu.addSubMenu()方法,為某個選單項新增子選單
11. 在SQL Server Management Studio 中執行下列T-SQL語句,其輸出值(C)。 SELECT @@IDENTITY
A、 可能為0.1
B、 可能為3
C、 不可能為-100
D、 肯定為0
個人理解:@@identity是表示的是最近一次向具有identity屬性(即自增列)的表插入資料時對應的自增列的值,是系統定義的全域性變數。一般系統定義的全域性變數都是以@@開頭,使用者自定義變數以@開頭。比如有個表A,它的自增列是id,當向A表插入一行資料後,如果插入資料後自增列的值自動增加至101,則通過select @@identity得到的值就是101。使用@@identity的前提是在進行insert操作後,執行select @@identity的時候連線沒有關閉,否則得到的將是NULL值。
自增自然不能為-
12. 在SQL Server 2005中執行如下T-SQL語句,假定SALES表中有多行資料,執行查詢之 後的結果是(D)。
BEGIN TRANSACTION A
Update SALES Set qty=30 WHERE qty<30
BEGIN TRANSACTION B
Update SALES Set qty=40 WHEREqty<40
Update SALES Set qty=50 WHEREqty<50
Update SALES Set qty=60 WHEREqty<60
COMMIT TRANSACTION B
COMMIT TRANSACTION A
A、SALES表中qty列最小值大於等於30
B、SALES表中qty列最小值大於等於40
C、SALES表中qty列的資料全部為50
D、SALES表中qty列最小值大於等於60
個人理解:按順序執行程式碼
Update SALES Set qty=30 WHERE qty<30 表中qty<30的資料都等於30
Update SALES Set qty=40 WHEREqty<40 表中qty<40的資料等於40
Update SALES Set qty=50 WHEREqty<50 表中qty<50的資料等於50
Update SALES Set qty=60 WHEREqty<60 表中qty<60的資料等於60
所以最後剩下的qty的最小值為60,大於60的值沒有被改變
13. 在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數據庫,並可以對資料庫版本進行管理的方法可以是(AB)
A、getWriteableDatabase()
B、getReadableDatabase()
C、getDatabase()
D、getAbleDatabase()
個人分析:A:獲取可寫資料庫
B:獲取可讀資料庫
C:沒有此方法,只有獲取資料庫名稱的方法
D:沒有此方法
14. android 關於service生命週期的onCreate()和onStart()說法正確的是(AD)(多選題)
A、當第一次啟動的時候先後呼叫onCreate()和onStart()方法
B、當第一次啟動的時候只會呼叫onCreate()方法
C、如果service已經啟動,將先後呼叫onCreate()和onStart()方法
D、如果service已經啟動,只會執行onStart()方法,不在執行onCreate()方法
個人理解:服務不會多次建立(create),一旦建立就在後臺執行,直到當前程式被銷燬。
15. 下面是屬於GLSurFaceView特性的是(ABC)(多選)
A、管理一個surface,這個surface就是一塊特殊的記憶體,能直接排版到android的檢視view上。
B、管理一個EGL display,它能讓opengl把內容渲染到上述的surface上。
C、讓渲染器在獨立的執行緒裡運作,和UI執行緒分離。
D、可以直接從記憶體或者DMA等硬體介面取得影象資料
個人理解:定義問題
16. 下面在AndroidManifest.xml檔案中註冊BroadcastReceiver方式正確的(A)
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>
<receiver android:name="NewBroad">
<action>
android:name="android.provider.action.NewBroad"/>
<action>
</receiver>
</intent-filter> 個人理解:receiver-->intent-filter-->action-->android:name
17. 關於ContentValues類說法正確的是(A)
A、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中的
名是String型別,而值都是基本型別
B、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中的
名是任意型別,而值都是基本型別
C、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中的
名,可以為空,而值都是String型別
D、他和Hashtable比較類似,也是負責儲存一些名值對,但是他儲存的名值對當中
的名是String型別,而值也是String型別
個人理解: 鍵值對儲存。
18. 我們都知道Hanlder是執行緒與Activity通訊的橋樑,如果執行緒處理不當,你的機器就會變得越慢,那麼執行緒銷燬的方法是(A)
A、onDestroy()
B、onClear()
C、onFinish()
D、onStop()
個人理解:Activity中只存在onDestroy()方法!
19. 下面退出Activity錯誤的方法是(C)
A、finish()
B、拋異常強制退出
C、System.exit()
D、onStop()
個人理解:System.exit() 是退出JVM虛擬機器
順便說一下System.exit(0)是正常退出程式,而System.exit(1)或者說非0表示非正常退出程式。
20. 下面屬於android的動畫分類的有(AB)(多項)
A、Tween B、Frame C、Draw D、Animation
個人理解:Animation是動畫的總稱,在Android中Animation分為兩種分別為:補間動畫 Tween Animation、另一種叫逐幀動畫 Frame Animation(也稱Drawable Animation ),Android3.0以後增加了屬性動畫 Property Animation。
21. 下面關於Android dvm的程序和Linux的程序,應用程式的程序說法正確的是(D)
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中的一個程序,所以說可以認為是同一個概念.
個人理解:定義 問題
22. Android專案工程下面的assets目錄的作用是什麼(B)
A、放置應用到的圖片資源。
B、主要放置多媒體等資料檔案
C、放置字串,顏色,陣列等常量資料
D、放置一些與UI相應的佈局檔案,都是xml檔案
個人理解:res檔案下的drawable用來存放應用的圖片資源,但一些序列幀所需要的圖片應該存放到assets目錄下,本題沒說明單選或者多選,故選B更為妥當。
字串,顏色資料應存放到res下的values下的colors.xml或者strings.xml檔案中
放置一些與UI相應的佈局檔案,都是xml檔案存放在res目錄下的layout佈局檔案當中23. 關於res/raw目錄說法正確的是(A)
A、 這裡的檔案是原封不動的儲存到裝置上不會轉換為二進位制的格式
B、這裡的檔案是原封不動的儲存到裝置上會轉換為二進位制的格式
C、 這裡的檔案最終以二進位制的格式儲存到指定的包中
D、這裡的檔案最終不會以二進位制的格式儲存到指定的包中
個人理解:res/raw目錄下的檔案會在R檔案當中自動生成所對應的ID,在程式中使用R.xx.xx呼叫即可,不必轉換為二進位制的格式呼叫。
24. 下列對android NDK的理解正確的是(ABCD)
A、 NDK是一系列工具的集合
B、 NDK 提供了一份穩定、功能有限的 API 標頭檔案宣告。
C、 使 “Java+C” 的開發方式終於轉正,成為官方支援的開發方式
D、 NDK 將是 Android 平臺支援 C 開發的開端
個人理解:NDK全稱:Native Development Kit,其提供了一份穩定、功能有限的API標頭檔案宣告。
* NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一起打包成apk。這些工具對開發者的幫助是巨大的。
* NDK集成了交叉編譯器,並提供了相應的mk檔案隔離平臺、CPU、API等差異,開發人員只需要簡單修改mk檔案(指出“哪些檔案需要編譯”、“編譯特性要求”等),就可以創建出so。
* NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。來自360百科
好啦~選擇題就是這樣!
以上答案有論壇或百度文庫提供,答案解析純屬個人理解,如有錯誤歡迎更正!
--------一隻正在找工作的大三實習黨