當前位置:編程學習大全網 - 源碼下載 - android面試題及答案

android面試題及答案

android面試題及答案

 本文是我精心整理的android面試題及答案,歡迎大家參考。

 1. 下列哪些語句關於內存回收的說明是正確的? (b ) A、 程序員必須創建壹個線程來釋放內存

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

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

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

 2. 下面異常是屬於Runtime Exception 的是(abcd)(多選) A、ArithmeticException

 B、IllegalArgumentException

 C、NullPointerException

 D、BufferUnderflowException

 3. Math.round(11.5)等於多少(). Math.round(-11.5)等於多少(c). c A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12

 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

 5. 對壹些資源以及狀態的操作保存,最好是保存在生命周期的哪個函數中進行(d) A、onPause() B、onCreate() C、 onResume() D、onStart()

 6. Intent傳遞數據時,下列的數據類型哪些可以被傳遞(abcd)(多選) A、Serializable B、charsequence C、Parcelable D、Bundle

 7. android 中下列屬於Intent的作用的是(c) A、實現應用程序間的數據***享

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

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

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

 8. 下列屬於SAX解析xml文件的優點的是(b) A、將整個文檔樹在內存中,便於操作,支持刪除,修改,重新排列等多種功能

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

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

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

 消失

 9. 下面的對自定style的方式正確的是

 A、

 B、

 C、

 fill_parent

 D、

 fill_parent

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

 B、onCreateMenu()

 C、onOptionsItemSelected()

 D、onItemSelected()

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

 A、 可能為0.1

 B、 可能為3

 C、 不可能為-100

 D、 肯定為0

 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

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

 B、getReadableDatabase()

 C、getDatabase()

 D、getAbleDatabase()

 14. android 關於service生命周期的onCreate()和onStart()說法正確的是(ad)(多選題) A、當第壹次啟動的時候先後調用onCreate()和onStart()方法

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

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

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

 15. 下面是屬於GLSurFaceView特性的是(abc)(多選) A、管理壹個surface,這個surface就是壹塊特殊的內存,能直接排版到android的視圖

 view上。

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

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

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

 16. 下面在AndroidManifest.xml文件中註冊BroadcastReceiver方式正確的

 A、

 android:name="android.provider.action.NewBroad"/>

 B、

 android:name="android.provider.action.NewBroad"/>

 C、

 android:name="android.provider.action.NewBroad"/>

 D、

 android:name="android.provider.action.NewBroad"/>

 17. 關於ContenValues類說法正確的是(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()

 19. 下面退出Activity錯誤的方法是(c) A、finish()

 B、拋異常強制退出

 C、System.exit()

 D、onStop()

 20. 下面屬於android的動畫分類的有(ab)(多項) A、Tween B、Frame C、Draw D、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目錄的作用是什麽bA、放置應用到的圖片資源。

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

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

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

 23. 關於res/raw目錄說法正確的是(a)A、 這裏的文件是原封不動的存儲到設備上不會轉換為二進制的格式

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

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

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

 24. 下列對android NDK的理解正確的是(abcd )A、 NDK是壹系列工具的集合

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

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

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

 二.文件存儲方式

 三.SQLite數據庫方式

 四.內容提供器(Content provider)方式

 二、Android面試填空題

 25. android中常用的四個布局是framlayout,linenarlayout,relativelayout和tablelayout。26. android 的四大組件是activiey,service,broadcast和contentprovide。27. java.io包中的objectinputstream和objectoutputstream類主要用於對對象(Object)的讀寫。28. android 中service的實現方法是:startservice和bindservice。29. activity壹般會重載7個方法用來維護其生命周期,除了onCreate(),onStart(),onDestory() 外還有onrestart,onresume,onpause,onstop。30. android的數據存儲的方式sharedpreference,文件,SQlite,contentprovider,網絡。31. 當啟動壹個Activity並且新的Activity執行完後需要返回到啟動它的Activity來執行 的回調函數是startActivityResult()。32. 請使用命令行的方式創建壹個名字為myAvd,sdk版本為2.2,sd卡是在d盤的根目錄下,名字為scard.img, 並指定屏幕大小HVGA.____________________________________。33. 程序運行的結果是:_____good and gbc__________。 public classExample{

 String str=new String("good");

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

 public static void main(String args[]){

 Example ex=new Example();

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

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

 Sytem.out.print(ex.ch);

 }

 public void change(String str,char ch[]){

 str="test ok";

 ch[0]='g';

 }

 }

 34. 在android中,請簡述jni的調用過程。(8分)1)安裝和下載Cygwin,下載 Android NDK

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

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

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

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

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

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

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

 36. 請繼承SQLiteOpenHelper實現:(10分) 1).創建壹個版本為1的“diaryOpenHelper.db”的數據庫,

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

 長度, content字符型1000長度)

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

 publicclass DBHelper extends SQLiteOpenHelper{

 public final static String DATABASENAME ="diaryOpenHelper.db";

 public final static int DATABASEVERSION =1;

 //創建數據庫

 public DBHelper(Context context,Stringname,CursorFactory factory,int version)

 {

 super(context, name, factory,version);

 }

 //創建表等機構性文件

 public void onCreate(SQLiteDatabase db)

 {

 String sql ="create tablediary"+

 "("+

 "_idinteger primary key autoincrement,"+

 "topicvar100),"+

 "contentvar1000)"+

 ")";

 db.execSQL(sql);

 }

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

 public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)

 {

 String sql = " ifexists diary";

 db.execSQL(sql);

 this.onCreate(db);

 }

 }

 37. 頁面上現有ProgressBar控件progressBar,請用書寫線程以10秒的的時間完成其進度顯示工作。(10分)答案

 publicclass ProgressBarStu extends Activity {

 private ProgressBar progressBar = null;

 protected void onCreate(BundlesavedInstanceState) {

 super.onCreate(savedInstanceState);

 setContentView(R.layout.progressbar);

 //從這到下是關鍵

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

 Thread thread = new Thread(newRunnable() {

 @Override

 public void run() {

 int progressBarMax =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-generatedcatch block

 e.printStackTrace();

 }

 }

 });

 thread.start();

 //關鍵結束

 }

 }

 38. 請描述下Activity的生命周期。 必調用的三個方法:onCreate() --> onStart() --> onResume(),用AAA表示

 (1)父Activity啟動子Activity,子Actvity退出,父Activity調用順序如下

 AAA --> onFreeze() --> onPause() --> onStop() --> onRestart()--> onStart(),onResume() …

 (2)用戶點擊Home,Actvity調用順序如下

 AAA --> onFreeze() --> onPause() --> onStop() -- Maybe -->onDestroy() – Maybe

 (3)調用finish(), Activity調用順序如下

 AAA --> onPause() --> onStop() --> onDestroy()

 (4)在Activity上顯示dialog,Activity調用順序如下

 AAA

 (5)在父Activity上顯示透明的或非全屏的activity,Activity調用順序如下

 AAA --> onFreeze() --> onPause()

 (6)設備進入睡眠狀態,Activity調用順序如下

 AAA --> onFreeze() --> onPause()

 39. 如果後臺的Activity由於某原因被系統回收了,如何在被系統回收之前保存當前狀態? onSaveInstanceState()

 當妳的程序中某壹個Activity A在運行時,主動或被動地運行另壹個新的Activity B,這個時候A會執行onSaveInstanceState()。B完成以後又會來找A,這個時候就有兩種情況:壹是A被回收,二是A沒有被回收,被回收的A就要重新調用onCreate()方法,不同於直接啟動的是這回onCreate()裏是帶上了參數savedInstanceState;而沒被收回的就直接執行onResume(),跳過onCreate()了。

 40. 如何將壹個Activity設置成窗口的樣式。 在AndroidManifest.xml 中定義Activity的地方壹句話android:theme="@android:style/Theme.Dialog"或android:theme="@android:style/Theme.Translucent"就變成半透明的

 41. 如何退出Activity?如何安全退出已調用多個Activity的Application?對於單壹Activity的應用來說,退出很簡單,直接finish()即可。

 當然,也可以用killProcess()和System.exit()這樣的方法。

 但是,對於多Activity的應用來說,在打開多個Activity後,如果想在最後打開的Activity直接退出,上邊的方法都是沒有用的,因為上邊的方法都是結束壹個Activity而已。

 當然,網上也有人說可以。

 就好像有人問,在應用裏如何捕獲Home鍵,有人就會說用keyCode比較KEYCODE_HOME即可,而事實上如果不修改framework,根本不可能做到這壹點壹樣。

 所以,最好還是自己親自試壹下。

 那麽,有沒有辦法直接退出整個應用呢?

 在2.1之前,可以使用ActivityManager的restartPackage方法。

 它可以直接結束整個應用。在使用時需要權限android.permission.RESTART_PACKAGES。

 註意不要被它的名字迷惑。

 可是,在2.2,這個方法失效了。

 在2.2添加了壹個新的方法,killBackgroundProcesses(),需要權限android.permission.KILL_BACKGROUND_PROCESSES。

 可惜的是,它和2.2的restartPackage壹樣,根本起不到應有的效果。

 另外還有壹個方法,就是系統自帶的應用程序管理裏,強制結束程序的方法,forceStopPackage()。

 它需要權限android.permission.FORCE_STOP_PACKAGES。

 並且需要添加android:sharedUserId="android.uid.system"屬性

 同樣可惜的是,該方法是非公開的,他只能運行在系統進程,第三方程序無法調用。

 因為需要在Android.mk中添加LOCAL_CERTIFICATE := platform。

 而Android.mk是用於在Android源碼下編譯程序用的。

 從以上可以看出,在2.2,沒有辦法直接結束壹個應用,而只能用自己的辦法間接辦到。

 現提供幾個方法,供參考:

 1、拋異常強制退出:

 該方法通過拋異常,使程序ForceClose。

 驗證可以,但是,需要解決的問題是,如何使程序結束掉,而不彈出Force Close的窗口。

 2、記錄打開的Activity:

 每打開壹個Activity,就記錄下來。在需要退出時,關閉每壹個Activity即可。

 3、發送特定廣播:

 在需要結束應用時,發送壹個特定的廣播,每個Activity收到廣播後,關閉即可。

 4、遞歸退出

 在打開新的Activity時使用startActivityForResult,然後自己加標誌,在onActivityResult中處理,遞歸關閉。

 除了第壹個,都是想辦法把每壹個Activity都結束掉,間接達到目的。

 但是這樣做同樣不完美。

 妳會發現,如果自己的應用程序對每壹個Activity都設置了nosensor,在兩個Activity結束的間隙,sensor可能有效了。

 但至少,我們的目的達到了,而且沒有影響用戶使用。

 為了編程方便,最好定義壹個Activity基類,處理這些***通問題。

 42. 請介紹下Android中常用的五種布局。FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)

;

  • 上一篇:出納的工作流程是怎樣的?
  • 下一篇:用C語言加密和解密文件,代碼詳細簡單;;;;用c打開壹個txt文件,怎麽寫?[初學者]
  • copyright 2024編程學習大全網