首頁  >  文章  >  Java  >  你能答對這些棘手的java面試題麼

你能答對這些棘手的java面試題麼

王林
王林轉載
2021-03-15 09:21:534157瀏覽

你能答對這些棘手的java面試題麼

本文為大家整理了幾道國外的java面試題,聽說也難倒了不少人。下面就讓我們一起來看看這些面試題,看看他們到底有趣在哪裡。

1、下面Java程式碼的輸出是什麼?

public class Test {
  
  public static void main(String[] args) {
    method(null);
  }
 
  public static void method(Object o) {
    System.out.println("Object method");
  }
  
  public static void method(String s) {
    System.out.println("String method");
  }
}

答案:

將列印「String method」。首先,null 在 Java 中不是一個對象,在 Java 中我們可以將 null 賦給任何一個參考型別。而 Java 中的字串是 Java.lang.String 類別的物件。在這裡,Java 編譯器會選擇使用最特定的參數類型來呼叫重載方法。而String類型比Object更為具體,所以會呼叫method(String s)方法。

2、下面Java程式碼的輸出是什麼?

public class Test{
  public static void main(String[] args){
    Integer num1 = 100;
    Integer num2 = 100;
    if(num1 == num2){
      System.out.println("num1 == num2");
    }
    else{
      System.out.println("num1 != num2");
    }
  }
}

答案:

將列印「num1 == num2」。每當使用“ == ”比較兩個不同的物件參考時,值總是“false”。但在這裡,由於 Integer 緩存,num1和 num2是自動裝箱的。因此num1 == num2回傳「true」。同時,整數快取只會發生在-128到127之間的值。

3、垃圾收集是如何防止Java應用程式記憶體不足的?

答案:

Java 垃圾收集器無法防止 Java 應用程式耗盡記憶體。它只是在物件超出範圍且不再需要時清除未使用的記憶體。因此,它不能保證防止Java應用程式不耗盡記憶體!

(學習影片分享:java影片教學

4、Java 是「按引用傳遞」還是「按值傳遞」

#答案:

Java總是「按值傳遞」。然而,當我們傳遞一個物件的值時,我們傳遞對它的引用,因為變數儲存物件引用,而不是物件本身。但這不是“引用傳遞”,這可能會讓初學者感到困惑。

5、下面的程式碼建立了多少個String物件

public class Test{
  public static void main(String[] args){
    String s = new String("Hello World");
  }
}

答案:

已經建立了2個String物件。一個在堆記憶體中,一個在方法區中的字串常數池中。

6、下面的程式碼輸出是什麼

public class Test{
  public static void main(String[] arr){
    System.out.println(0.1*3 == 0.3);
    System.out.println(0.1*2 == 0.2);
  }
}

答案:

第一句print輸出false,第二句print輸出true。因為浮點數的誤差捨入導致,只有2的冪數可以用簡單的二進位表示法精確表示。不對應2次方的數字必須四捨五入以適應有限數量的位,因此,0.1*3是不等於0.3的。

7、有沒有可能在 Java 中重寫或重載靜態方法?

答案:

重載(overload)靜態 Java 方法是可能的,但是不可能重寫(override)它們。你可以在子類別中編寫具有相同命名的另一個靜態方法,但它不會重寫超類別方法。它在 Java 中被稱為方法隱藏。

8、測試兩個double值是否相等的最可靠的方法是什麼?

答案:

Double.compare(d1, d2) == 0

9、如果 try 或 catch 區塊執行一個 return 語句,finally 區塊是否會被執行?

答案:

會執行。阻止 finally 區塊執行的唯一方法是使用System.exit()。

10、下面的程式碼輸出是什麼

public class Test{ 
  public static void main(String[] args){ 
   System.out.println("main method");
  } 
  public static void main(String args){ 
   System.out.println("Overloaded main method");
  } 
}

答案:

#會列印「main method」。不會有錯誤或異常,因為 main 方法可以在 Java 中重載。必須從 main 方法內部呼叫它才能像其他方法一樣執行。

相關推薦:java面試題目及答案

#

以上是你能答對這些棘手的java面試題麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除