Java面試題之二

2021-06-18 09:27:30 字數 1778 閱讀 2702

六、string s = new string("xyz");建立了幾個string object? 二者之間有什麼區別?

嚴格的說應該是乙個或者兩個。

因為如果常量池之前沒有"xyz"這個物件,那麼它首先會在常量池裡面建立乙個"xyz"物件。如果之前常量池就已經有乙個"xyz"物件了,那麼就不會在常量池裡面再建立了,因為常量池裡面的物件不會重複。

而每new string一次,就會在記憶體中建立乙個物件。它是以常量池裡面的物件為模板建立的。

七、try {}裡有乙個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?

1.finally {}一定會執行,只有一種情況下不會執行,即呼叫了system.exit(),終止了虛擬機器程序。

2. finally始終是在跳出方法之前被執行,常用來做一些資源清理工作,所以在return(跳出方法)前執行。

3.比較複雜點的情況是,如果return 後面有乙個表示式,那麼會先執行表示式的內容,但並不會馬上跳出方法,而是執行finally塊,若finally也有return語句,整個方法會從finally的return跳出,若finally中沒有return,則會再從try{}中的return跳出。

八、integer與int的區別

1.int是基本資料型別,直接存數值;integer是int的包裝類。int和integer都可以表示某乙個數值。

2. integer裡面定義了一些靜態轉換方法,用於實現基本資料型別和string之間的轉換。

3. int的預設值為0,而integer的預設值為null,所以integer可以區分出未賦值和值為0的情況,而int則沒辦法區分這種情況。

4. int是基本型別,integer是引用型別,宣告為int的變數不需要例項化,宣告為interger的變數需要例項化

5.integer是比int更高階的資料型別,int一般只用在數值計算中,而integer用在需要使用物件的地方,比如map、set和list集合裡面存放的都是object,需要使用包裝類。   

九、sleep()和wait()有什麼區別?

1. sleep是thread類的方法;wait是object的方法。

2.呼叫sleep不會釋放物件鎖;呼叫wait會釋放物件鎖,使得其他執行緒可以使用同步塊或者同步方法。

3.sleep會導致執行緒暫停指定時間,時間一到會自動恢復。而wait需要呼叫notify或者notifyall喚醒。

4.作用範圍不一樣。wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用。

5. sleep必須捕獲異常,而wait,notify和notifyall不需要捕獲異常。

十、啟動乙個執行緒是用run()還是start()?

啟動乙個執行緒是呼叫start()方法,執行緒進入就緒狀態,使執行緒所代表的虛擬處理機處於可執行狀態,這意味著它可以由jvm排程並執行。這並不意味著執行緒就會立即執行。當cpu分配給它時間時,才開始執行run()方法。

若直接呼叫run()方法,只是把該方法執行了一遍,並沒有真正啟動乙個執行緒。

面試題之二

static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區域性變數有什麼區別?static函式與普通的函式有什麼區別?1 全域性變數 外部變數 的書名之前再冠以static就構成了靜態的全域性變數.全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式.這兩者在...

SQL面試題目之二

查詢某員工的領導 select from emp start with mgr 7902 connect by prior mgr empno 以下摘自 url 今天發現在oracle中的select語句可以用start with.connect by prior子句實現遞迴查詢,connect b...

生成器面試題之二

l for i in xrange 10 print ll a for i in xrange 10 a num i print l 輸出結果 python 第一段 解答 以上兩段 的本質區別是第乙個是直接傳物件,第二個是傳物件的引用。第一段 給列表新增,是直接新增字典物件,for迴圈中每次新增的物...