android面試題總結加強版(四)

來源:互聯網
上載者:User

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

       A、ArithmeticException

       B、IllegalArgumentException

       C、NullPointerException

       D、BufferUnderflowException

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

       A、11 ,-11 

       B、11 ,-12  

       C、12 ,-11 

       D、12 ,-12

解答:

Math類中提供了三個與取整有關的方法:ceil、floor、round,這些方法的作用與它們的英文名稱的含義相對應,例如,ceil的英文意義是天花板,該方法就表示向上取整,所以,Math.ceil(11.3)的結果為12,Math.ceil(-11.3)的結果是-11;floor的英文意義是地板,該方法就表示向下取整,所以,Math.floor(11.6)的結果為11,Math.floor(-11.6)的結果是-12;最難掌握的是round方法,它表示“四捨五入”,演算法為Math.floor(x+0.5),即將原來的數字加上0.5後再向下取整,所以,Math.round(11.5)的結果為12,Math.round(-11.5)的結果為-11。

45. 下列程式段的輸出結果是:(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

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

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

      A、onCreateOptionsMenu()

      B、onCreateMenu()

      C、onOptionsItemSelected()

      D、onItemSelected()

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

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

    view上。

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

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

      D、可以直接從記憶體或者DMA等硬體介面取得映像資料

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

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

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

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

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

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

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

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

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

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

      B、拋異常強制退出

      C、System.exit()

      D、onStop()

51. 下面關於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 中的一個進程,所以說可以認為是同一個概念.

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

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

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

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

      D、 NDK 將是 Android 平台支援 C 開發的開端

53. 頁面上現有ProgressBar控制項progressBar,請用書寫線程以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())                                   {                                       int  stepProgress =progressBarMax/10;                                                                   int  currentprogress = progressBar.getProgress();                                                                             progressBar.setProgress(currentprogress+stepProgress);                                                                               Thread.sleep(1000);                               }                                                          } catch(InterruptedException e) {                             e.printStackTrace();                            }                     }              });              thread.start();       }}

54. 在android中,請簡述jni的調用過程

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

     2)在ndk項目中JNI介面的設計

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

     4)JNI產生動態連結程式庫.so檔案

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

55. 簡述Android應用程式結構是哪些?

  Android應用程式結構是:

  Linux Kernel(Linux核心)、Libraries(系統運行庫或者是c/c++核心庫)、Application Framework(開發架構套件)、Applications  (核心應用程式)

56. 程式啟動並執行結果是:(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';  }

57.在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

58.請繼承SQLiteOpenHelper實現:

       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,"+  "topicvarchar(100),"+  "contentvarchar(1000)"+  ")";  db.execSQL(sql);  }   //若資料庫版本有更新,則調用此方法  public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)  {  String sql = "drop table ifexists diary";  db.execSQL(sql);  this.onCreate(db);  }  }

59.java中 ==和equals的區別:

    實值型別是儲存在記憶體中的堆棧(以後簡稱棧),而參考型別的變數在棧中僅僅是儲存參考型別變數的地址,而其本身則儲存在堆中。 ==操作比較的是兩個變數的值是否相等,對於引用型變數表示的是兩個變數在堆中儲存的地址是否相同,即棧中的內容是否相同。 equals動作表示的兩個變數是否是對同一個對象的引用,即堆中的內容是否相同。  ==比較的是2個對象的地址,而equals比較的是2個對象的內容。 顯然,當equals為true時,==不一定為true; 

60.android view繪製簡單描述簡單描述可以解釋為:計算大小(measure),布局座標計算(layout),繪製到螢幕(draw);

           下面看看每一步的動作到底是什麼,

           第一步:當activity啟動的時候,觸發初始化view過程的是由Window對象的DecorView調用View(具體怎樣從xml中讀取是用LayoutInflater.from(context).inflate)對象的
public final void measure(int widthMeasureSpec, int heightMeasureSpec)方法開始的,這個方法是final類型的,也就是所有的子類都不能繼承該方法,保證android初始化view的原理不變。具體參數類值,後面會介紹。

           第二步:View的measure方法 onMeasure(widthMeasureSpec, heightMeasureSpec),該方法進行實質性的view大小計算。注意:view的大小是有父view和自己的大小決定的,而不是單一決定的。這也就是為什麼ViewGroup的子類會重新該方法,比如LinearLayout等。因為他們要計算自己和子view的大小。View基類有自己的實現,只是設定大小。其實根據源碼來看,measure的過程本質上就是把Match_parent和wrap_content轉換為實際大小

            第三步:當measure結束時,回到DecorView,計算大小計算好了,那麼就開始布局了,開始調用view的 public final void layout(int l, int t, int r, int b),該還是也是final類型的,目的和measure方法一樣。layout方法內部會調用onlayout(int
l, int t, int r, int b )方法,二ViewGroup將此方法abstract的了,所以我們繼承ViewGroup的時候,需要重新該方法。該方法的本質是通過measure計算好的大小,計算出view在螢幕上的座標點

           第四步:measure過了,layout過了,那麼就要開始繪製到螢幕上了,所以開始調用view的  public void draw(Canvas canvas)方法,此時方法不是final了,原因是程式員可以自己畫,內部會調用ondraw,我們經常需要重寫的方法。 簡單描述可以解釋為:計算大小(measure),布局座標計算(layout),繪製到螢幕(draw);

          

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.