1. 程式人生 > >中軟國際面試題及答案

中軟國際面試題及答案

1.Intent傳遞資料時,下列的資料型別哪些可以被傳遞(abcd)

A:serializable  B:Charsequence C:Parcelable D:Bundle

2.第一次開啟activity依次執行_________;

Home鍵該activity依次執行_________;

重新開啟該activity,如果該activity未被回收依次執行_____________;

如果此時該activity已被回收依次執行__________________________;

按返回鍵該activity依次執行________________________________;

A:oncreate  B:onResume  C:onStop  D:onDestory  E:onResume  F:onStart  G:onRestart

3.String a=new String(“foo”);String b=new String(“foo”);表示式a==b返回值是____;

  表示式a.equals(b);返回值是_______;

4.在javachar型變數中可以儲存一箇中文漢字();判斷

5.Androidvisibility熟悉invisibilitygone區別?

6.簡述onClick,onTouch,onScroll,onFling的區別?

7.以button為例說明androidgravitylayout:layout_gravity的區別

8.說說ArrayList,LinkedList的儲存特性和區別

答:ArrayListVector都是使用陣列的方式來儲存資料,此陣列元素數大於實際儲存的資料以便增加和插入元素, 它們都允許直接按序號索引元素, 但是插入元素要涉及陣列元素移動等記憶體操作, 所以索引資料快而插入資料慢,Vector 由於使用了 synchronized 方法(線程安全) ,通常效能上較 ArrayList 差,而 LinkedList 使用雙向連結串列實現儲存, 按序號索引資料需要進行前向或後向遍歷, 但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。

9.Overrideoverload的區別

答:override(重寫,覆蓋)a方法名、引數、返回值相同。

b子類方法不能縮小父類方法的訪問許可權。c子類方法不能丟擲比父類方法更多的異常(但子類方法可以不丟擲異常)d存在於父類和子類之間。e方法被定義為final不能被重寫。overload(過載,過載)a引數型別、個數、順序至少有一個不相同。b不能過載只有返回值不同的方法名。c存在於父類和子類、同類中。方法的重寫(Overriding)和過載(Overloading)Java多型性的不同表現。重寫(Overriding)是父類與子類之間多型性的一種表現,而過載(Overloading)是一個類中多型性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被"遮蔽"如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別或有不同的引數次序,則稱為方法的過載(Overloading)。不能通過訪問許可權、返回型別、丟擲的異常進行過載1. Override 特點a覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果;b覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;c覆蓋的方法所丟擲的異常必須和被覆蓋方法的所丟擲的異常一致,或者是其子類;d被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。2.Overload 特點a在使用過載時只能通過不同的引數樣式。例如,不同的引數型別,不同的引數個數,不同的引數順序(當然,同一方法內的幾個引數型別必須不一樣,例如可以是fun(int, float), 但是不能為fun(int, int));b不能通過訪問許可權、返回型別、丟擲的異常進行過載;c方法的異常型別和數目不會對過載造成影響;d對於繼承來說,如果某一方法在父類中是訪問許可權是priavte,那麼就不能在子類對其進行過載,如果定義的話,也只是定義了一個新方法,而不會達到過載的效果。

10.Thread.start()Thread.run()的有什麼區別?

答:start()方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體程式碼執行完畢而直接繼續執行下面的程式碼:

通過呼叫Thread類的start()方法來啟動一個執行緒,這時此執行緒是處於就緒狀態,並沒有執行。然後通過此Thread類呼叫方法run()來完成其執行操作的,這裡方法run()稱為執行緒體,它包含了要執行的這個執行緒的內容,Run方法執行結束,此執行緒終止,CPU再執行其它執行緒,

10.Wait()方法和sleep()方法有什麼區別,分別屬於哪個類?

答:java 執行緒中的sleepwait有一個共同作用,停止當前執行緒任務執行

1、這兩個方法來自不同的類分別是ThreadObject

  2、最主要是sleep方法沒有釋放鎖,而 wait 方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。

  3waitnotifynotifyAll只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用(使用範圍)

  synchronized(x){

       x.notify()

       //或者wait()

  }

  4sleep必須捕獲異常,而waitnotifynotifyAll不需要捕獲異常

11.Adapter有什麼作用?至少列出3個常見的adapter

答:Adapter是用來幫助填充資料的中間橋樑,比如通過它將資料填充到ListView, GridView, Gallery.android 提供了幾種Adapter:ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter.根據資料來源形式的不同可以選擇不同的Adapter,比如資料來源於一個Arraylist 就使用BaseAdapter,SimpleAdapter,而資料來源於通過查詢資料庫獲得Cursor那就使用CursorAdapterSimpleCursorAdapter

12.判斷101-200之間有多少素數,並輸出所有素數?注意:考慮效能問題

答:import java.util.*;

public class PrimeTest

{

public static void main(String[] args)

{

int x=0;

Vector v = new Vector();//集合,用來裝所有的素數

for(int i=101;i<=200;i++)

{

boolean b=true;//標籤為b為真

for(int j=2;j<i;j++)

{

if(i%j==0)//求餘數是否為0

{

b = false;//如果為0, 將標籤設定為false

break;  //可以整除就跳出這個迴圈

}

}

if(b==true)//

{

v.add(i);//將符合要求的i加到集合裡

x++; // 素數個數加1

}

}

System.out.println("100200中間有 "+x+" 個素數");

System.out.println("素數為:/n"+v);

}

}