Android 面試題(有詳細答案)

Android 面試題(有詳細答案)

附帶答案,共100分

一、選擇題(30題,每題1.5分,共45分)

1.java.io包中定義了多個流類型來實現輸入和輸出功能,可以從不同的角度對其進行分   類,按功能分爲:(c),如果爲讀取的內容進行處理後再輸出,需要使用下列哪種流?(g)

     A、輸入流和輸出流  B、字節流和字符流  C、節點流和處理流 

     D、File stream  E、Pipe stream  F、Random stream  G、Filter stream

    2.下列代碼的執行結果是:(b)
        public class Test3{
        public static void main(String args[]){
        System.out.print(100%3);
        System.out.print(",");
        System.out.println(100%3.0);
        }
        }
        A、1,1
        B、1,1.0
         C、1.0,1
        D、1.0,1.0

   3.在繼承中,關於構造方法的說明,下列說法錯誤的是(d)

   A、子類無條件的繼承父類的無參構造方法,

   B、子類可以引用父類中的有參構造方法,使用super關鍵字,

   C、如果子類沒有構造方法,則父類無參構造方法作爲自已的構造方法,

   D、如果子類有無參構造方法,而父類的無參構造方法則被覆蓋。

   4.以下程序的運行結果爲(  b)

 public class IfTest{

 public static void main(String args[]){

 int x=3;

 int y=1;

 if(x==y)

 System.out.println("Not equal");

 else

 System.out.println("Equal");

 }

 }

     A、Not equal     B、Equal    C、無輸出    D、編譯出錯

   5.Java語言中字符串Java所佔的內存空間是(a)
        A. 6個字節
      B. 7個字節
      C. 10個字節
      D. 11個字節

6.關於下列程序段的輸出結果,說法正確的是:(d )
     public class MyClass{

 static int i;
     public static void main(Stringargv[]){
     System.out.println(i);
     }
     }
     A、有錯誤,變量i沒有初始化。
     B、null
        C、1
     D、0

7.下列哪些語句關於內存回收的說明是正確的? (b )

  A、 程序員必須創建一個線程來釋放內存

  B、 內存回收程序負責釋放無用內存

  C、 內存回收程序允許程序員直接釋放內存

  D、 內存回收程序可以在指定的時間釋放內存對象

8.下面異常是屬於Runtime Exception 的是(abcd)(多選)

     A、ArithmeticException

     B、IllegalArgumentException

     C、NullPointerException

     D、BufferUnderflowException

9. Math.round(11.5)等於多少(). Math.round(-11.5)等於多少(c). c

     A、11 ,-11   B、11 ,-12   C、12 ,-11   D、12 ,-12

10.下列程序段的輸出結果是:(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、0

11.activity對一些資源以及狀態的操作保存,最好是保存在生命週期的哪個函數中進行(d)

   A、onPause()  B、onCreate()   C、 onResume()   D、onStart()

12.Intent傳遞數據時,下列的數據類型哪些可以被傳遞(abcd)(多選)

      A、Serializable  B、charsequence  C、Parcelable  D、Bundle

13.android 中下列屬於Intent的作用的是(c)

  A、實現應用程序間的數據共享

  B、是一段長的生命週期,沒有用戶界面的程序,可以保持應用在後臺運行,而不會因爲切換頁面而消失

  C、可以實現界面間的切換,可以包含動作和動作數據,連接四大組件的紐帶

  D、處理一個應用程序整體性的工作

14.下列屬於SAX解析xml文件的優點的是(b)

      A、將整個文檔樹在內存中,便於操作,支持刪除,修改,重新排列等多種功能

      B、不用事先調入整個文檔,佔用資源少

      C、整個文檔調入內存,浪費時間和空間

      D、不是長久駐留在內存,數據不是持久的,事件過後,若沒有保存數據,數據就會

  消失

 15.下面的對自定style的方式正確的是(a)

    A、 <resources>

       <style name="myStyle">

                            <itemname="android:layout_width">fill_parent</item>

                     </style>

 </resources>

     B、 <stylename="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>

   16.在android中使用Menu時可能需要重寫的方法有(ac)。(多選)

      A、onCreateOptionsMenu()

  B、onCreateMenu()

  C、onOptionsItemSelected()

  D、onItemSelected()

   17.在SQL Server Management Studio 中運行下列T-SQL語句,其輸出值(c)。

 SELECT @@IDENTITY 

     A、      可能爲0.1

     B、       可能爲3

 C、       不可能爲-100

     D、      肯定爲0

   18.在SQL Server 2005中運行如下T-SQL語句,假定SALES表中有多行數據,執行查詢之    後的結果是(d)。

 BEGIN TRANSACTION A

       Update SALES Set qty=30WHERE qty<30

        BEGIN TRANSACTION B

              Update SALES Setqty=40 WHERE qty<40

              Update SALES Setqty=50 WHERE qty<50

              Update SALES Setqty=60 WHERE qty<60

        COMMIT TRANSACTION B

        COMMIT TRANSACTION A

 A、SALES表中qty列最小值大於等於30

 B、SALES表中qty列最小值大於等於40

 C、SALES表中qty列的數據全部爲50

 D、SALES表中qty列最小值大於等於60

   19.在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數據庫,並可以對數      據庫版本進行管理的方法可以是(ab)

     A、getWriteableDatabase()

 B、getReadableDatabase()

 C、getDatabase()

 D、getAbleDatabase()

   20. android 關於service生命週期的onCreate()和onStart()說法正確的是(ad)(多選題)

     A、當第一次啓動的時候先後調用onCreate()和onStart()方法

     B、當第一次啓動的時候只會調用onCreate()方法

     C、如果service已經啓動,將先後調用onCreate()和onStart()方法

 D、如果service已經啓動,只會執行onStart()方法,不在執行onCreate()方法

   21.下面是屬於GLSurFaceView特性的是(abc)(多選)

 A、管理一個surface,這個surface就是一塊特殊的內存,能直接排版到android的視圖

    view上。

 B、管理一個EGLdisplay,它能讓opengl把內容渲染到上述的surface上。

 C、讓渲染器在獨立的線程裏運作,和UI線程分離。

 D可以直接從內存或者DMA等硬件接口取得圖像數據

   22.下面在AndroidManifest.xml文件中註冊BroadcastReceiver方式正確的是(a)

       A、<receiverandroid: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>

    23.關於ContenValues類說法正確的是(a)

      A、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中的

         名是String類型,而值都是基本類型

      B、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中的

         名是任意類型,而值都是基本類型

      C、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中的

         名,可以爲空,而值都是String類型     

      D、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中

         的名是String類型,而值也是String類型

24.我們都知道Hanlder是線程與Activity通信的橋樑,如果線程處理不當,你的機器

    就會變得越慢,那麼線程銷燬的方法是(a)

       A、onDestroy()

       B、onClear()

       C、onFinish()

       D、onStop()

    25.下面退出Activity錯誤的方法是(c)

       A、finish()

  B、拋異常強制退出

       C、System.exit()

       D、onStop()

     26.下面屬於android的動畫分類的有(ab)(多項)

       A、Tween  B、FrameC、Draw D、Animation

     27.下面關於Androiddvm的進程和Linux的進程,應用程序的進程說法正確的是(d)

        ADVMdalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,不一定擁有一個獨立

  Dalvik虛擬機實例.而每一個DVM都是在Linux 中的一個進程,所以說可以認爲是同一個概念.

        BDVMdalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,不一定擁有一個獨立

                   Dalvik虛擬機實例.而每一個DVM不一定都是在Linux 中的一個進程,所以說不是一個概念.

        CDVMdalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的      

           Dalvik虛擬機實例.而每一個DVM不一定都是在Linux 中的一個進程,所以說不是一個概念.

        DDVMdalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的      

           Dalvik虛擬機實例.而每一個DVM都是在Linux 中的一個進程,所以說可以認爲是同一個概念.

      28.Android項目工程下面的assets目錄的作用是什麼b

     A、放置應用到的圖片資源。

         B、主要放置多媒體等數據文件

         C、放置字符串,顏色,數組等常量數據

         D、放置一些與UI相應的佈局文件,都是xml文件

      29..關於res/raw目錄說法正確的是(a

A、 這裏的文件是原封不動的存儲到設備上不會轉換爲二進制的格式

B、 這裏的文件是原封不動的存儲到設備上會轉換爲二進制的格式

C、 這裏的文件最終以二進制的格式存儲到指定的包中

D、 這裏的文件最終不會以二進制的格式存儲到指定的包中

      30.下列對android NDK的理解正確的是(abcd )

A、 NDK是一系列工具的集合

B、 NDK 提供了一份穩定、功能有限的 API 頭文件聲明。

C、 使“Java+C” 的開發方式終於轉正,成爲官方支持的開發方式

D、 NDK 將是 Android 平臺支持 C 開發的開端

 

二.填空題(每題2分,共20分)

   1.我們用___int____來定義一個整數,用___char____來定義一個字符類型,稱爲原始數據類型。

   2.android中常用的四個佈局是framlayout,linenarlayout,relativelayout和tablelayout。

   3.android 的四大組件是activiey,service,broadcast和contentprovide。

   4.java.io包中的objectinputstream和objectoutputstream類主要用於對對象(Object)的讀寫。

   5.android 中service的實現方法是:startservice和bindservice。

   6.activity一般會重載7個方法用來維護其生命週期,除了onCreate(),onStart(),onDestory()     外還有onrestart,onresume,onpause,onstop。

   7.android的數據存儲的方式sharedpreference,文件,SQlite,contentprovider,網絡。

8.當啓動一個Activity並且新的Activity執行完後需要返回到啓動它的Activity來執行

 的回調函數是startActivityResult()。

   9.請使用命令行的方式創建一個名字爲myAvd,sdk版本爲2.2,sd卡是在d盤的根目錄下,

  名字爲scard.img, 並指定屏幕大小HVGA.____________________________________

    10.程序運行的結果是:_____good and gbc__________

    public classExample{

  Stringstr=new String("good");

  char[]ch={'a','b','c'};

  publicstatic void main(String args[]){

    Exampleex=new Example();

    ex.change(ex.str,ex.ch);

    System.out.print(ex.str+"and ");

    Sytem.out.print(ex.ch);

  }

  public voidchange(String str,char ch[]){

    str="testok";

    ch[0]='g';

  }

}

 

 三 簡答編程題(共35分)

    1.在android中,請簡述jni的調用過程。(8分)

1)安裝和下載Cygwin,下載 Android NDK

  2)在ndk項目中JNI接口的設計

  3)使用C/C++實現本地方法

 4)JNI生成動態鏈接庫.so文件

  5)將動態鏈接庫複製到java工程,在java工程中調用,運行java工程即可

 

2.簡述Android應用程序結構是哪些?(7分)

Android應用程序結構是:

 Linux Kernel(Linux內核)、Libraries(系統運行庫或者是c/c++核心庫)、Application 

 Framework(開發框架包)、Applications  (核心應用程序)

 

3. 請繼承SQLiteOpenHelper實現:(10分)

   1).創建一個版本爲1的“diaryOpenHelper.db”的數據庫,

  2).同時創建一個 “diary” 表(包含一個_id主鍵並自增長,topic字符型100

      長度, content字符型1000長度)

    3).在數據庫版本變化時請刪除diary表,並重新創建出diary表。

 

public class DBHelper  extends SQLiteOpenHelper {

 

       publicfinal static String DATABASENAME = "diaryOpenHelper.db";

       publicfinal static int DATABASEVERSION = 1;

 

       //創建數據庫

       publicDBHelper(Context context,String name,CursorFactory factory,int version)

       {

              super(context,name, factory, version);

       }

       //創建表等機構性文件

       publicvoid onCreate(SQLiteDatabase db)

       {

              Stringsql ="create table diary"+

                                   "("+

                                   "_idinteger primary key autoincrement,"+

                                   "topicvarchar(100),"+

                                   "contentvarchar(1000)"+

                                   ")";

              db.execSQL(sql);

       }

       //若數據庫版本有更新,則調用此方法

       publicvoid onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)

       {

             

              Stringsql = "drop table if exists diary";

              db.execSQL(sql);

              this.onCreate(db);

       }

}

 

   4.頁面上現有ProgressBar控件progressBar,請用書寫線程以10秒的的時間完成其進度

    顯示工作。(10分)

答案

public class ProgressBarStu extendsActivity {

 

       privateProgressBar progressBar = null;

       protectedvoid onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              setContentView(R.layout.progressbar);

              //從這到下是關鍵

              progressBar= (ProgressBar)findViewById(R.id.progressBar);

             

              Threadthread = new Thread(new Runnable() {

                    

                     @Override

                     publicvoid run() {

                            intprogressBarMax = progressBar.getMax();

                            try{

                                   while(progressBarMax!=progressBar.getProgress())

                                   {

                                         

                                          intstepProgress = progressBarMax/10;

                                          intcurrentprogress = progressBar.getProgress();

                                          progressBar.setProgress(currentprogress+stepProgress);

                                          Thread.sleep(1000);

                                   }

                                  

                            }catch (InterruptedException e) {

                                   //TODO Auto-generated catch block

                                   e.printStackTrace();

                            }

                           

                     }

              });

             

              thread.start();

 

              //關鍵結束

       }

      

}

 

一、選擇題

   

1

2

3

4

5

6

7

8

9

10

CG

B

D

B

A

D

B

ABCD

C

B

11

12

13

14

15

16

17

18

19

20

D

ABCD

C

B

A

AC

C

D

AB

AD

21

22

23

24

25

26

27

28

29

30

ABC

A

A

A

C

AB

D

B

A

ABCD

 

二、填空題

 1.int char

 2.FrameLayout,LilnearLayout,RelativeLayout,TableLayout

 3.Activity,Broadcast,Service,ContentProvide

 4.ObjectInputStream ObjectOutputSteam

 5.startService ,bindService

 6.onRestart(),onResume(),onPause(),onStop()

 7.SharedPreferences存儲,文件存儲,SQLite存儲,ContentProvider,網絡存儲

 8.startActivityResult()

 9.adnroid create acd -n myAvd -t 8 -s HVDA - Cd:\card.img

 10.good and gbc

發佈了0 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章