JavaRush /Java Blog /Random-TW /喝咖啡休息#58。Java 開發人員應該了解的 20 個重要面試問題。了解多種程式語言的好處

喝咖啡休息#58。Java 開發人員應該了解的 20 個重要面試問題。了解多種程式語言的好處

在 Random-TW 群組發布

Java 開發人員應該了解的 20 個重要面試問題

來源: Dev.to喝咖啡休息#58。 Java 開發人員應該了解的 20 個重要面試問題。 了解多種程式語言的好處 - 1

1. Java中的異常有哪兩種類型?它們之間有什麼區別?

答:Java中有兩種類型的異常:檢查異常和非檢查異常。
  1. 如果未檢查異常可以在方法或建構函數執行並傳播到方法或建構函數邊界之外時拋出,則不需要在方法或建構函數關鍵字語句中聲明它們。
  2. 另一方面,受檢查的異常必須在建構函數的方法或關鍵字語句中聲明。

2.什麼是JVM?為什麼Java被稱為「平台無關的程式語言」?

Ans:Java虛擬機器(JVM)是​​一台可以執行Java字節碼的行程虛擬機器。每個Java原始檔被編譯成字節碼文件,由JVM執行。Java 語言旨在創建可以在任何平台上運行的應用程序,而不需要為每個單獨的平台重寫或重新編譯。Java 虛擬機器使這成為可能,因為它了解底層硬體平台的特定指令長度和其他功能。

3. applet 和 Java 應用程式有什麼不同?

答:
  • Applet 在支援 Java 的瀏覽器視窗中運行。
  • Java 應用程式是可以在瀏覽器外部執行的獨立 Java 程式。
它們都需要 Java 虛擬機器 (JVM)。然而,Java 應用程式需要具有特定簽章的 main 方法才能開始執行。Java applet 不需要這樣的方法來開始執行。此外,Java applet 通常使用限制性安全性策略,而 Java 應用程式通常使用較寬鬆的安全策略。

4.JDK和JRE有什麼差別?

答:
  • Java 執行時期環境 (JRE)基本上是執行 Java 程式的 Java 虛擬機器 (JVM)。它還包括用於運行小程式的瀏覽器插件。
  • Java開發工具包(JDK)是用於Java語言的全功能軟體開發工具包,包括JRE、編譯器和工具(例如JavaDoc和Java調試器),使用戶能夠開發、編譯和運行Java應用程式。

5.什麼是servlet?

答:Servlet 是 Java 程式語言的一個類,用於處理客戶端請求並建立動態 Web 內容。Servlet 主要用於處理或儲存 HTML 表單提交的資料、提供動態內容以及管理無狀態 HTTP 中不存在的狀態資訊。

6.什麼是JSP頁面?

答: Java Server Page (JSP)是一個文字文檔,包含兩種類型的文字:
  • 靜態數據,
  • JSP 元素。
靜態資料可以用任何文字格式表示,例如 HTML 或 XML。JSP 是一種將靜態內容與動態產生的內容混合在一起的技術。

7. 什麼是指令?JSP 中有哪些類型的指令可用?

Ans:指令是當頁面被編譯成servlet時由JSP引擎處理的指令。指令用於設定頁面級指令、從外部文件插入資料以及指定自訂標籤庫。指令在 <%@ 和 %> 之間定義。不同類型的指令如下所示:
  • Include 指令:用於包含文件並將文件內容與目前頁面合併。
  • 頁面指示:用於定義JSP頁面上的某些屬性,例如錯誤頁面和緩衝區。
  • Taglib:用於聲明頁面上使用的自訂標籤庫。

8. System.gc() 和 Runtime.gc() 方法的作用是什麼?

答:這些方法可以作為JVM觸發垃圾回收的提示。通常,Java 虛擬機器 (JVM) 會定期或在可用記憶體達到較低水平時執行垃圾收集。

9. HashMap和Hashtable有什麼差別?

答:Java中HashMap和Hashtable有幾個差別:
  1. Hashtable 是同步的,而 HashMap 不是。這使得 HashMap 更適合非線程應用程序,因為非同步物件通常比同步物件效能更好。
  2. Hashtable 不允許空鍵或空值。HashMap 允許您使用一個空鍵和任意數量的空值。
  3. HashMap 的子類別之一是 LinkedHashMap,因此如果您想要可預測的迭代順序(預設插入順序),您可以輕鬆地將 HashMap 替換為 LinkedHashMap。如果你使用 Hashtable,這不會那麼容易。

10.什麼是JDBC?

答:JDBC 是一個抽象層,允許使用者在資料庫之間進行選擇。透過 JDBC,開發人員可以用 Java 編寫資料庫應用程序,而不必擔心特定資料庫背後的細節。

11.「static」關鍵字是什麼意思?可以重寫 Java 中的私有或靜態方法嗎?

答: static關鍵字意味著可以存取變數成員或方法,而無需其所屬類別的實例。使用者無法重寫Java中的靜態方法,因為方法重寫是基於運行時的動態綁定,而靜態方法在編譯時永久綁定。靜態方法不與類別的任何實例關聯,因此這個概念不適用。

12.處理異常時finally區塊的意義是什麼?

答案:無論是否拋出異常,finally區塊都會被執行。即使沒有catch語句並且發生異常。最後要提到的是,finally區塊用來釋放 I/O 緩衝區、資料庫連線等資源。

13. Java中異常和錯誤有什麼差別?

答: 錯誤是程式碼無法處理的嚴重情況。 異常是可以由程式碼處理的異常情況。

14. Java 中的物件什麼時候可以進行垃圾回收?

答:當 Java 物件對於目前使用它的程式變得不可用時,它就會受到垃圾回收的影響。

15.什麼是迭代器?

答:Iterator介面提供了許多可以迭代任何集合的方法。每個 Java 集合都包含一個傳回Iterator實例的Iterator方法。迭代器可以在迭代期間從底層集合中刪除元素。

16. 什麼是引用傳遞和值傳遞?

答:
  • 當一個物件按值傳遞時,表示傳遞了該物件的副本。這樣,即使對該物件進行了更改,也不會影響原始值。
  • 當一個物件透過引用傳遞時,意味著傳遞的不是該對象,而是該物件的參考。這樣,外部方法所做的任何更改也會反映在所有地方。

17.什麼是Java小程式?

答:Java applet 是一種可以包含在 HTML 頁面中並在支援 Java 的用戶端瀏覽器中執行的程式。Applet 用於建立動態和互動式 Web 應用程式。

18.HashMap在Java中如何運作?

答:Java中的HashMap儲存的是鍵值對。HashMap需要一個雜湊函數,使用hashCodeequals方法在集合中設定和檢索元素。當呼叫put方法時,HashMap計算鍵的雜湊值並將該對儲存在集合中適當的索引處。如果該鍵存在,則其值將更新為新值。HashMap 的一些重要特徵是其容量、負載因子和閾值大小變化。

19. Java Collections Framework 有哪些主要介面?

答: Java 集合框架是一組設計好的介面和類別,支援物件集合的操作。Java 集合框架中的主要介面有:
  • 集合代表一組對象,稱為其元素。
  • Set是不能包含重複元素的集合。
  • 列表是可以包含重複元素的有序集合。
  • Map是將鍵映射到值的對象,並且不能包含重複的鍵。

20.Java支援哪些資料型別?什麼是自動裝箱和拆箱?

答:Java程式語言支援以下八種基本資料類型:
  • 位元組
  • 短的
  • 整數
  • 長的
  • 漂浮
  • 雙倍的
  • 布林值
  • 字元
自動裝箱是 Java 編譯器在基本類型及其對應的物件包裝類別之間執行的自動轉換。如果變換方向相反,則此操作稱為拆箱。感謝您的閱讀,祝您技術面試順利!

了解多種程式語言的好處

資料來源:Dev.to 就我個人而言,我堅信每個開發人員都應該了解不只一種程式語言。換句話說,如果我們談論程式語言,那麼開發人員必須是通曉多種語言的。喝咖啡休息#58。 Java 開發人員應該了解的 20 個重要面試問題。 了解多種程式語言的好處 - 2

主要和次要語言

為了讓事情變得更容易,讓我澄清本文中使用的一些術語。我相信每個開發人員都應該有一種他喜歡的語言。我稱這種語言為主要語言。我將把除主要語言以外的任何語言稱為輔助語言。當然,開發人員在其職業生涯中可能會改變他的主要語言(不止一次)。這可以。解釋這一點的原因有很多。

專家

在關於多語言開發人員的討論中,經常有人認為,開發人員掌握第二語言的知識是以不太精通其主要語言為代價的。這個想法的支持者認為學習每種新語言都需要時間,而這次你不能再花時間來獲取你的主要語言的知識。這種想法對我來說似乎是錯的。我看到另一個類比:運動。眾所周知,參加一項運動可以提高您在另一項運動中的表現。當然,你可以在這兩場比賽中贏得金牌,而飛鏢不太可能讓你成為更好的游泳選手。另一方面,如果您是攀岩運動員,那麼瑜珈將幫助您發展靈活性和平衡。因此,練習瑜珈會讓你成為比不練習瑜珈更好的登山者。我認為學習每一種額外的語言通常會提高你所知道的其他語言的技能。

更廣泛的工具

此外,了解多種程式語言可以大大提高您作為開發人員的能力。它拓寬了你的視野,讓你從不同的角度看待某些事物。讓我們舉一個日常生活中的例子。如果您曾經使用過螺絲刀,那麼您就會熟悉十字頭螺絲。乍一看,所有的十字頭螺絲都是一樣的,似乎都可以用螺絲起子擰緊。是的,有時您很難擰緊或擰鬆某些螺絲,但一般來說一把螺絲起子就足夠了。喝咖啡休息#58。 Java 開發人員應該了解的 20 個重要面試問題。 了解多種程式語言的好處 - 3但有一天,您走進一家工具店,看著那些漂亮的螺絲刀,發現有不同類型的十字螺絲起子。您發現已有的螺絲起子是十字螺絲起子 (PH),並決定購買它的孿生姊妹螺絲起子 - 米字螺絲起子 (PZ)。然後突然發現,對於某些螺絲,一種更適合,而對於另一些螺絲,則另一種更適合。它們看起來相同,但不可互換。(如果您想知道螺絲起子上的字母 PH 和 PZ 是什麼意思 - 現在您知道了)。有了更多的知識和額外的工具,下次您需要擰緊十字頭螺絲時,您將能夠做得更好。程式語言也是如此。

您無需為額外的知識付費

因此,我個人並不認為學習額外的程式語言有什麼價值。您在兩種語言上都同樣出色嗎?可能不是,但這不太可能是您的目標。您對您的母語有新的了解嗎?我對此絕對確定。了解一門新語言將揭示它們之間的差異。這反過來又會喚醒你的好奇心。您會想知道為什麼新語言的處理方式有所不同以及它們的作用。最後,我舉一個生活中的例子。我使用了一種用 Python 編寫的命令列工具。每次我在新機器上安裝這個工具時,都會出現問題,並且隨著每次更新,問題的數量都會增加。如果你的工具箱裡有 Go,你會立即註意到它在這種情況下的優勢。Go 允許您將其工件編譯成獨立的二進位。您可以確定,編譯後,二進位檔案將在您為其編譯的每台機器上執行。所以我將 Python CLI 移植到 Go 上。有了這個新版本,我不再需要擔心更改運行時或第三方依賴項。這是為任務選擇最合適工具的一個很好的例子。為了能夠進行選擇,您需要成為多語言開發人員。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION