1. 程式人生 > >2018最有用的java面試題

2018最有用的java面試題

1.Java 中 sleep 方法和 wait 方法的區別?

雖然兩者都是用來暫停當前執行的執行緒,但是 sleep() 實際上只是短暫停頓,因為它不會釋放鎖,而 wait() 意味著條件等待,這就是為什麼該方法要釋放鎖,因為只有這樣,其他等待的執行緒才能在滿足條件時獲取到該鎖。

2.什麼是不可變物件(immutable object)?Java 中怎麼建立一個不可變物件?

不可變物件指物件一旦被建立,狀態就不能再改變。任何修改都會建立一個新的物件,如 String、Integer及其它包裝類。詳情參見答案,一步一步指導你在 Java 中建立一個不可變的類。

3.我們能建立一個包含可變物件的不可變物件嗎?

是的,我們是可以建立一個包含可變物件的不可變物件的,你只需要謹慎一點,不要共享可變物件的引用就可以了,如果需要變化時,就返回原物件的一個拷貝。最常見的例子就是物件中包含一個日期物件的引用。

4.Java 中應該使用什麼資料型別來代表價格?

如果不是特別關心記憶體和效能的話,使用BigDecimal,否則使用預定義精度的 double 型別。

5.怎麼將 byte 轉換為 String?

可以使用 String 接收 byte[] 引數的構造器來進行轉換,需要注意的點是要使用的正確的編碼,否則會使用平臺預設編碼,這個編碼可能跟原來的編碼相同,也可能不同。

6.ArrayList 與 LinkedList 的不區別?

最明顯的區別是 ArrrayList 底層的資料結構是陣列,支援隨機訪問,而 LinkedList 的底層資料結構書連結串列,不支援隨機訪問。使用下標訪問一個元素,ArrayList 的時間複雜度是 O(1),而 LinkedList 是 O(n)。更多細節的討論參見http://www.wityx.com/post/418_1_1.html

7.用哪兩種方式來實現集合的排序?

你可以使用有序集合,如 TreeSet 或 TreeMap,你也可以使用有順序的的集合,如 list,然後通過 Collections.sort() 來排序。

8.Java 中怎麼列印陣列?(answe

你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法來列印陣列。由於陣列沒有實現 toString() 方法,所以如果將陣列傳遞給 System.out.println() 方法,將無法打印出陣列的內容,但是 Arrays.toString() 可以列印每個元素。

9.Java 中的 LinkedList 是單向連結串列還是雙向連結串列?

是雙向連結串列,你可以檢查 JDK 的原始碼。在 Eclipse,你可以使用快捷鍵 Ctrl + T,直接在編輯器中開啟該類。

轉自java面試題網http://www.wityx.com