1. 程式人生 > >關於Android的面試題(筆試題)---選擇(個人分析)

關於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百科

好啦~選擇題就是這樣!大笑

以上答案有論壇或百度文庫提供,答案解析純屬個人理解,如有錯誤歡迎更正!

            --------一隻正在找工作的大三實習黨