中軟國際面試題及答案
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.在java裡char型變數中可以儲存一箇中文漢字();判斷
5.Android中visibility熟悉invisibility、gone區別?
6.簡述onClick,onTouch,onScroll,onFling的區別?
7.以button為例說明android:gravity與layout:layout_gravity的區別
8.說說ArrayList,LinkedList的儲存特性和區別
答:ArrayList和Vector都是使用陣列的方式來儲存資料,此陣列元素數大於實際儲存的資料以便增加和插入元素, 它們都允許直接按序號索引元素, 但是插入元素要涉及陣列元素移動等記憶體操作, 所以索引資料快而插入資料慢,Vector 由於使用了 synchronized 方法(線程安全) ,通常效能上較 ArrayList 差,而 LinkedList 使用雙向連結串列實現儲存, 按序號索引資料需要進行前向或後向遍歷, 但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。
9.Override與overload的區別
答:override(重寫,覆蓋)a方法名、引數、返回值相同。
10.Thread.start()與Thread.run()的有什麼區別?
答:start()方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體程式碼執行完畢而直接繼續執行下面的程式碼:
通過呼叫Thread類的start()方法來啟動一個執行緒,這時此執行緒是處於就緒狀態,並沒有執行。然後通過此Thread類呼叫方法run()來完成其執行操作的,這裡方法run()稱為執行緒體,它包含了要執行的這個執行緒的內容,Run方法執行結束,此執行緒終止,而CPU再執行其它執行緒,
10.Wait()方法和sleep()方法有什麼區別,分別屬於哪個類?
答:java 執行緒中的sleep和wait有一個共同作用,停止當前執行緒任務執行
1、這兩個方法來自不同的類分別是Thread和Object
2、最主要是sleep方法沒有釋放鎖,而 wait 方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用(使用範圍)
synchronized(x){
x.notify()
//或者wait()
}
4、sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常
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那就使用CursorAdapter,SimpleCursorAdapter
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("100到200中間有 "+x+" 個素數");
System.out.println("素數為:/n"+v);
}
}