JavaRush /Java Blog /Random-TW /喝咖啡休息#101。19 個基本 Java 面試問題和簡短範例答案

喝咖啡休息#101。19 個基本 Java 面試問題和簡短範例答案

在 Random-TW 群組發布
資料來源:Hackernoon 以下是 Java 面試中經常出現的一些問題和答案。

1.什麼是Java開發工具包(JDK)?

JDK 是一個軟體開發工具包,其中包括開發 Java 應用程式所需的工具和程式庫。

2. Java執行時期環境(JRE)的作用是什麼?

JRE是指Java字節碼運作的執行環境。JRE 維護運行時的文件和庫。

3. Java虛擬機(JVM)的作用是什麼?

JVM 是一個抽象機器,它提供了 Java 字節碼可以執行的執行環境。

4. Java 是平台無關的。為什麼?

在任何其他程式語言中,原始程式碼被編譯為可執行程式碼,並且該程式碼可能無法在所有平台上運行。透過使用 JVM,我們可以使任何平台都可以理解字節碼,並且該字節碼是獨立於平台的。儘管每個平台的 JVM 都不同,但 Java 是平台無關的,因為它不依賴任何類型的平台。

5. Java不是100%物件導向的。為什麼?

因為Java使用boolean、byte、char、int、float、double、long、short等八種基本資料類型,它們不是物件。

6. Java中的建構子是什麼?

構造函數是用於初始化物件的程式碼區塊。句法:
class DemoClass
{
   // constructor name is same as class name
   DemoClass()
   {
      ....
   }
}
// calls DemoClass() constructor
DemoClass obj = new DemoClass();
例子:
public class ConstructorDemo
{
   int a; // class attribute
   // create constructor for class ConstructorDemo
   ConstructorDemo()
   {
      a = 26; // initial value for class attribute 'a'
   }
   public static void main(String[] args)
   {
      // creating object for ConstructorDemo class
      // here we're calling constructor ConstructorDemo()
      ConstructorDemo obj = new ConstructorDemo();
      System.out.println(obj.a);
   }
}
結果:
26

7. 單例類別有什麼作用?

單例類別一次只能有一個物件(類別實例)。建立物件並嘗試實例化單例類別後,新變數也指向建立的第一個物件。

8. Java中的包裝類別是什麼?

包裝類別允許將原始資料類型轉換為對象,反之亦然。例子:
int a = 7; // using primitive datatype
Integer a = new Integer(7); // using wrapper class

9. Java中的==運算子和相等方法有什麼差別?

一般來說,==是一個運算符,equals()是一個方法。我們使用==運算子來引用堆上的比較物件。Java中沒有運算子重載的概念。儘管如此,==運算子還是用來檢查兩個物件的位址是否相同。也就是說,==運算子檢查兩個物件是否指向相同記憶體位置。==運算子也用於比較物件類型和基本類型(例如布林值)。而String類別的equals()方法則比較兩個物件的內容。

10. Java中OOP的概念是什麼?

  • 抽像被定義為隱藏內部實作並僅顯示必要的資訊。
  • 繼承是將父類別(超類別)的所有屬性和行為轉換為子類別(子類別)的過程。
  • 封裝是將資料或變數和方法綁定在一起的過程。
  • 多態性字面上的意思是多種形式。多態性是方法執行不同任務的能力。這可以透過使用方法來實現。

11. 為什麼Java中main()方法總是靜態的?

因為不需要呼叫物件的靜態方法。如果main()是一個非靜態方法,Java 虛擬機器必須先建立其對象,然後呼叫main()方法,這將導致分配額外的記憶體。

12.為什麼Java中的字串是不可變的?

Java中的字串是不可變的,因為String物件被緩存在字串常數池中

13. Java中的陣列和ArrayList是什麼?

數組是包含固定數量的類似類型元素的物件。
  1. ArrayList是集合結構的一部分。

  2. ArrayList實作了列表介面。

  3. ArrayList是一個可擴展的數組,它會隨著元素的添加而動態增長,並隨著元素的刪除而收縮。

  4. 對於頻繁的檢索操作,Java ArrayList是最好的選擇。因為ArrayList的元素儲存在連續的記憶體位置。

  5. ArrayList不能包含原始資料型,例如 int、double、char 和 long。

  6. ArrayList可以包含String和包裝類別物件(DoubleInteger)。

  7. ArrayList允許您複製元素。

  8. ArrayList保留插入順序。

  9. ArrayList因其功能性和靈活性而被廣泛使用。它旨在存儲異構對象集合。

  10. ArrayList可以有任意數量的空值。

14.Java中HashSet和HashMap有什麼差別?

哈希集中
  1. 我們可以將物件儲存在HashSet中。例如,HashSet:{“Hello”,“World”}

  2. 不保留插入順序。它是基於哈希碼的。

  3. 有一個add()方法。

  4. 實現Set接口。

  5. 不允許重複元素。

  6. 允許單一空值。

哈希映射中:
  1. HashMap中我們可以儲存鍵和值對。例如,{1 -> “Hello”, 2 -> “World”}

  2. 不支援插入順序。它基於哈希函數。

  3. 有一個put()方法。

  4. 實現地圖介面。

  5. 允許重複值。不允許重複的鍵。

  6. 允許單一空鍵和任意數量的空值。

16.Java中this和super有什麼差別?

Java中的this關鍵字:
  1. 是一個關鍵字,它是引用當前物件的引用變數。

  2. 可用於隱式呼叫目前類別方法。

  3. this()關鍵字,用於呼叫目前類別的建構子。

  4. 這可用於在呼叫方法時作為參數傳遞。

Java中的super關鍵字:
  1. super關鍵字是一個引用變量,用於引用父類別的直接物件。

  2. super可用於直接呼叫父類別的方法、父類別的建構子、以及存取基底類別的方法。

17. Java中的break和continue語句是什麼?

如果迴圈中出現break語句,迴圈將會結束,控制權會傳遞到同一迴圈中的下一語句。例子:
public class Example
{
   public static void main(String[] args)
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a == 3)
         {
            // breaking loop
            break;
         }
         System.out.println(a);
      }
   }
}
結果:
12
continue 語句根據特定條件移動到迴圈的下一個迭代。例子:
public class Example
{
   public static void main(String[] args)
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a % 2 != 0)
         {
            continue;
         }
         System.out.println(a + " ");
      }
   }
}
結果:
2 4 6 8 10

18. Java中的存取修飾符是什麼?

存取修飾符定義變數、建構子、類別或方法的限製或範圍。Java中有四種類型的存取修飾符:
  1. 私有存取修飾符。
  2. 受保護的存取修飾符。
  3. 共享修改器。
  4. 預設存取修飾符。

19. Java中for迴圈和foreach迴圈有什麼差別?

for迴圈:
  1. 沒有可執行序列。在for迴圈中,我們可以根據需要更改計數器。
  2. 一開始就出現在 JDK 1 中。
  3. 無需實作該介面。
  4. 可以存取索引。因此,可以替換數組中的元素。
  5. 計數器可以增加和減少。
對於每個循環:
  1. 依次執行。計數器加一。
  2. 首次出現在 JDK 5 中。
  3. 若要使用 for-each 迴圈迭代容器,容器必須實作 Iterable 介面。
  4. 由於無法存取數組索引,因此無法替換該索引處的元素。
  5. 只能依遞增順序迭代,不能遞減。
foreachfor迴圈之間的區別範例:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DifferenceBetween
{
   public static void main(String[] args)
   {
      List<String> players = new ArrayList<>(Arrays.asList("Virat", "Rohit", "Dhoni"));
      // iterate over List using for loop
      System.out.println("using for loop: ");
      for(int a = 0; a < players.size(); a++)
      {
         System.out.println(players.get(a));
      }
      // iterate over List using enhanced for loop
      System.out.println("using for each loop: ");
      for(String str : players)
      {
         System.out.println(str);
      }
   }
}
for 和 foreach 迴圈的結果:
維拉特·羅希特·多尼。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION