亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

Android開發(fā)面試題

時間:2020-12-02 08:44:06 面試問題 我要投稿

Android開發(fā)面試題

  Android開發(fā)面試題

Android開發(fā)面試題

  1. 下列哪些語句關(guān)于內(nèi)存回收的說明是正確的? (b ) A、 程序員必須創(chuàng)建一

  個線程來釋放內(nèi)存

  B、 內(nèi)存回收程序負責(zé)釋放無用內(nèi)存

  C、 內(nèi)存回收程序允許程序員直接釋放內(nèi)存

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

  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. 下列程序段的輸出結(jié)果是:(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.activity5. 對一些資源以及狀態(tài)的操作保存,最好是保

  存在生命周期的哪個函數(shù)中進行(d) A、onPause() B、onCreate() C、 onResume()

  D、onStart()

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

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

  7. android 中下列屬于Intent的作用的是(c) A、實現(xiàn)應(yīng)用程序間的數(shù)據(jù)共享

  B、是一段長的生命周期,沒有用戶界面的程序,可以保持應(yīng)用在后臺運行,而不會因為切換頁

  面而消失

  C、可以實現(xiàn)界面間的切換,可以包含動作和動作數(shù)據(jù),連接四大組件的紐帶

  D、處理一個應(yīng)用程序整體性的工作

  8. 下列屬于SAX解析xml文件的優(yōu)點的是(b) A、將整個文檔樹在內(nèi)存中,便于操作,支

  持刪除,修改,重新排列等多種功能

  B、不用事先調(diào)入整個文檔,占用資源少

  C、整個文檔調(diào)入內(nèi)存,浪費時間和空間

  D、不是長久駐留在內(nèi)存,數(shù)據(jù)不是持久的,事件過后,若沒有保存數(shù)據(jù),數(shù)據(jù)就會

  消失

  9. 下面的對自定style的方式正確的是(a) 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表中有多行數(shù)據(jù),執(zhí)行查詢之

  后的結(jié)果是(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列的數(shù)據(jù)全部為50

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

  13. 在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數(shù)據(jù)庫,并可以對數(shù)據(jù)

  庫版本進行管理的方法可以是(ab) A、getWriteableDatabase()

  B、getReadableDatabase()

  C、getDatabase()

  D、getAbleDatabase()

  14. android 關(guān)于service生命周期的onCreate()和onStart()說法正確的是(ad)(多選題) A、當

  第一次啟動的時候先后調(diào)用onCreate()和onStart()方法

  B、當?shù)谝淮螁拥臅r候只會調(diào)用onCreate()方法

  C、如果service已經(jīng)啟動,將先后調(diào)用onCreate()和onStart()方法

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

  15. 下面是屬于GLSurFaceView特性的是(abc)(多選) A、管理一個surface,這個surface就是一

  塊特殊的內(nèi)存,能直接排版到android的視圖

  view上。

  B、管理一個EGL display,它能讓opengl把內(nèi)容渲染到上述的surface上。

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

  D、可以直接從內(nèi)存或者DMA等硬件接口取得圖像數(shù)據(jù)

  16. 下面在AndroidManifest.xml文件中注冊BroadcastReceiver方式正確的(a) A、

  android:name="NewBroad">

  

  

  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. 關(guān)于ContenValues類說法正確的是(a) A、他和Hashtable比較類似,也是負責(zé)存儲一些

  名值對,但是他存儲的名值對當中的

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

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

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

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

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

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

  的名是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. 下面關(guān)于Android dvm的進程和Linux的進程,應(yīng)用程序的進程說法正確的是(d)

  A、DVM指dalivk的虛擬機.每一個Android應(yīng)用程序都在它自己的進程中運行,不一定擁有一個獨

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

  3

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

  B、DVM指dalivk的虛擬機.每一個Android應(yīng)用程序都在它自己的進程中運行,不一定擁有一

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

  C、DVM指dalivk的虛擬機.每一個Android應(yīng)用程序都在它自己的進程中運行,都擁有一個獨

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

  D、DVM指dalivk的虛擬機.每一個Android應(yīng)用程序都在它自己的進程中運行,都擁有一個獨

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

  22. Android項目工程下面的assets目錄的作用是什么bA、放置應(yīng)用到的圖片資源。

  B、主要放置多媒體等數(shù)據(jù)文件

  C、放置字符串,顏色,數(shù)組等常量數(shù)據(jù)

  D、放置一些與UI相應(yīng)的布局文件,都是xml文件

  23. 關(guān)于res/raw目錄說法正確的是(a)A、 這里的文件是原封不動的存儲到設(shè)備上不會轉(zhuǎn)換為

  二進制的格式

  B、這里的文件是原封不動的存儲到設(shè)備上會轉(zhuǎn)換為二進制的格式 C、 這里的文件最終以二進制

  的格式存儲到指定的包中

  D、這里的文件最終不會以二進制的格式存儲到指定的包中 24. 下列對android NDK的理解正

  確的是(abcd )A、 NDK是一系列工具的集合

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

  C、 使 “Java C” 的開發(fā)方式終于轉(zhuǎn)正,成為官方支持的開發(fā)方式

  D、 NDK 將是 Android 平臺支持 C 開發(fā)的開端

  二.填空題

  25. android中常用的四個布局是framlayout,linenarlayout,relativelayout和tablelayout。26.

  android 的四大組件是activiey,service,broadcast和contentprovide。27. java.io包中的

  objectinputstream和objectoutputstream類主要用于對對象(Object)的讀寫。28. android 中

  service的實現(xiàn)方法是:startservice和bindservice。29. activity一般會重載7個方法用來維護其

  生命周期,除了onCreate(),onStart(),onDestory() 外還有

  onrestart,onresume,onpause,onstop。30. android的數(shù)據(jù)存儲的方式sharedpreference,文

  件,SQlite,contentprovider,網(wǎng)絡(luò)。31. 當啟動一個Activity并且新的Activity執(zhí)行完后需要返回到

  啟動它的Activity來執(zhí)行 的回調(diào)函數(shù)是startActivityResult()。32. 請使用命令行的方式創(chuàng)建一個

  名字為myAvd,sdk版本為2.2,sd卡是在d盤的根目錄下,名字為scard.img, 并指定屏幕大小

  HVGA.____________________________________。33. 程序運行的結(jié)果是:_____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的調(diào)用過程。(8分)1)安裝和下載Cygwin,下載 Android NDK

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

  3)使用C/C 實現(xiàn)本地方法

  4)JNI生成動態(tài)鏈接庫.so文件

  5)將動態(tài)鏈接庫復(fù)制到j(luò)ava工程,在java工程中調(diào)用,運行java工程即可

  35. 簡述Android應(yīng)用程序結(jié)構(gòu)是哪些?(7分)Android應(yīng)用程序結(jié)構(gòu)是:

  Linux Kernel(Linux內(nèi)核)、Libraries(系統(tǒng)運行庫或者是c/c 核心庫)、Application

  Framework(開發(fā)框架包)、Applications (核心應(yīng)用程序)

  36. 請繼承SQLiteOpenHelper實現(xiàn):(10分) 1).創(chuàng)建一個版本為1的“diaryOpenHelper.db”的

  數(shù)據(jù)庫,

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

  長度, content字符型1000長度)

  3).在數(shù)據(jù)庫版本變化時請刪除diary表,并重新創(chuàng)建出diary表。

  publicclass DBHelper extends SQLiteOpenHelper{

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

  public final static int DATABASEVERSION =1;

  //創(chuàng)建數(shù)據(jù)庫

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

  {

  super(context, name, factory,version);

  }

  //創(chuàng)建表等機構(gòu)性文件

  public void onCreate(SQLiteDatabase db)

  {

  String sql ="create tablediary"

  "("

  "_idinteger primary key autoincrement,"

  "topicvarchar(100),"

  "contentvarchar(1000)"

  ")";

  db.execSQL(sql);

  }

  //若數(shù)據(jù)庫版本有更新,則調(diào)用此方法

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

  {

  String sql = "drop table ifexists diary";

  db.execSQL(sql);

  this.onCreate(db);

  }

  }

  37. 頁面上現(xiàn)有ProgressBar控件progressBar,請用書寫線程以10秒的的時間完成其進度顯示

  工作。(10分)答案

  publicclass ProgressBarStu extends Activity {

  private ProgressBar progressBar = null;

  protected void onCreate(BundlesavedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.progressbar);

  //從這到下是關(guān)鍵

  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();

  //關(guān)鍵結(jié)束

  }

  }

  38. 請描述下Activity的生命周期。 必調(diào)用的三個方法:onCreate() --> onStart() -->

  onResume(),用AAA表示

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

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

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

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

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

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

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

  AAA

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

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

  (6)設(shè)備進入睡眠狀態(tài),Activity調(diào)用順序如下

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

  39. 如果后臺的Activity由于某原因被系統(tǒng)回收了,如何在被系統(tǒng)回收之前保存當前狀態(tài)?

  onSaveInstanceState()

  當你的程序中某一個Activity A在運行時,主動或被動地運行另一個新的Activity B,這個時候

  A會執(zhí)行onSaveInstanceState()。B完成以后又會來找A,這個時候就有兩種情況:一是A被回收,

  二是A沒有被回收,被回收的A就要重新調(diào)用onCreate()方法,不同于直接啟動的是這回

  onCreate()里是帶上了參數(shù)savedInstanceState;而沒被收回的`就直接執(zhí)行onResume(),跳過

  onCreate()了。

  40. 如何將一個Activity設(shè)置成窗口的樣式。 在AndroidManifest.xml 中定義Activity的地方

  一句話android:theme="@android:style/Theme.Dialog"或

  android:theme="@android:style/Theme.Translucent"就變成半透明的

  41. 如何退出Activity?如何安全退出已調(diào)用多個Activity的Application?對于單一Activity的應(yīng)用

  來說,退出很簡單,直接finish()即可。

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

  但是,對于多Activity的應(yīng)用來說,在打開多個Activity后,如果想在最后打開的Activity直接退

  出,上邊的方法都是沒有用的,因為上邊的方法都是結(jié)束一個Activity而已。

  當然,網(wǎng)上也有人說可以。

  就好像有人問,在應(yīng)用里如何捕獲Home鍵,有人就會說用keyCode比較KEYCODE_HOME即可,

  而事實上如果不修改framework,根本不可能做到這一點一樣。

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

  那么,有沒有辦法直接退出整個應(yīng)用呢?

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

  它可以直接結(jié)束整個應(yīng)用。在使用時需要權(quán)限android.permission.RESTART_PACKAGES。

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

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

  在2.2添加了一個新的方法,killBackgroundProcesses(),需要權(quán)限

  android.permission.KILL_BACKGROUND_PROCESSES。

  可惜的是,它和2.2的restartPackage一樣,根本起不到應(yīng)有的效果。

  另外還有一個方法,就是系統(tǒng)自帶的應(yīng)用程序管理里,強制結(jié)束程序的方

  法,forceStopPackage()。

  它需要權(quán)限android.permission.FORCE_STOP_PACKAGES。

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

  同樣可惜的是,該方法是非公開的,他只能運行在系統(tǒng)進程,第三方程序無法調(diào)用。

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

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

  從以上可以看出,在2.2,沒有辦法直接結(jié)束一個應(yīng)用,而只能用自己的辦法間接辦到。

  現(xiàn)提供幾個方法,供參考:

  1、拋異常強制退出:

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

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

  2、記錄打開的Activity:

  每打開一個Activity,就記錄下來。在需要退出時,關(guān)閉每一個Activity即可。

  3、發(fā)送特定廣播:

  在需要結(jié)束應(yīng)用時,發(fā)送一個特定的廣播,每個Activity收到廣播后,關(guān)閉即可。

  4、遞歸退出

  在打開新的Activity時使用startActivityForResult,然后自己加標志,在onActivityResult中處理,遞

  歸關(guān)閉。

  除了第一個,都是想辦法把每一個Activity都結(jié)束掉,間接達到目的。

  但是這樣做同樣不完美。

  你會發(fā)現(xiàn),如果自己的應(yīng)用程序?qū)γ恳粋Activity都設(shè)置了nosensor,在兩個Activity結(jié)束的間

  隙,sensor可能有效了。

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

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

  42. 請介紹下Android中常用的五種布局。FrameLayout(框架布局),LinearLayout (線性布

  局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)

  43. 請介紹下Android的數(shù)據(jù)存儲方式。一.SharedPreferences方式

【Android開發(fā)面試題】相關(guān)文章:

android開發(fā)優(yōu)秀簡歷08-29

Android開發(fā)求職簡歷模板07-29

Android軟件開發(fā)工程求職簡歷10-02

Android手機開發(fā)程序員求職簡歷模板08-26

Java開發(fā)崗位面試題「匯總」09-16

Android應(yīng)用程序開發(fā)課程的CDIO教學(xué)實踐的論文08-07

嵌入式開發(fā)—C語言面試題08-17

android簡歷模板08-29

富士康Java開發(fā)面試題目11-15

潤信Java開發(fā)工程師面試題11-20