2022 年 130 多個 Java 面試問題和答案

已發表: 2021-01-01

Java 面試問答

在本文中,我們整理了最常見的 Java 面試問題。 這些問題將使您了解面試官在 Java 編程面試期間可能會問您的問題類型

作為應屆生,您要么剛剛參加了一次面試,要么計劃很快參加一次。 作為一名希望在軟件編程領域發展自己職業生涯的入門級求職者,您可能會對即將到來的面試感到緊張 我們所有人都有恐慌的時刻,我們會感到茫然,甚至可能忘記線程是什麼。 我們將為您簡化它,您需要做的就是深呼吸並檢查最有可能被問到的問題。

你無法避免恐慌,但你絕對可以做好準備,這樣當你走進那個面試室時。 你很自信,知道你可以處理面試官可能扔給你的任何事情。

從世界頂級大學在線學習軟件工程課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

這是一份綜合的 24 個 Java 面試問題和答案(2022 年最新版)的彙編列表,它將幫助您樹立信心,並確保您順利通過面試。

1. JVM由什麼組成?
JVM 是 Java Virtual Machine 的縮寫,任何系統都需要運行 Java 程序。 其架構主要包括:
● Classloader:是JVM 的一個子系統,主要功能是在Java 程序運行時加載類文件。
● 堆:它是用於分配對象的運行時數據。
● 類區:保存每個類文件的類級別,如靜態變量、元數據、常量運行池等。
● Stack:用於存放臨時變量。
● 寄存器:寄存器包含當前正在執行的JVM指令的地址
● 執行引擎:EE 由虛擬處理器、讀取字節碼後執行指令的解釋器和在執行速度較慢時提高性能的 JIT 編譯器組成。
● Java Native Interface:作為與其他用C、C++等開發的應用程序交互的通信媒介。

2. 什麼是面向對象編程? Java是面向對象的語言嗎?
本質上,面向對象編程是一種基於對象概念的編程範式。 簡單地說,對像是容器——它們包含字段形式的數據和過程形式的代碼。 按照這個邏輯,面向對象的語言是一種適用於對象和過程的語言。

由於 Java 使用了 8 種原始數據類型——布爾、字節、字符、整數、浮點、長、短、雙精度——它們不是對象,因此不能將 Java 視為 100% 面向對象的語言。

3. 你對 Java 環境中的聚合有什麼理解?
聚合是一種關聯形式,其中每個對像都分配有自己的生命週期。 但是,這裡有所有權,子對像不能以任何方式屬於任何其他父對象。

4. 用 Ja​​va 命名超類。
Java.lang。 所有不同的非原始類型都直接或間接地從此類繼承。

5.解釋Java中'finally'和'finalize'的區別?
與 try-catch 塊一起使用,'finally' 塊用於確保始終執行特定的代碼片段,即使執行是由 try-catch 塊拋出的。

相比之下,finalize() 是對像類中的一個特殊方法。 當從對像中收集垃圾值時,通常會覆蓋釋放系統資源。

6. 什麼是匿名內部類? 它與內部類有何不同?
任何沒有名稱的本地內部類都稱為匿名內部類。 由於它沒有任何名稱,因此不可能創建其構造函數。 它總是要么擴展一個類,要么實現一個接口,並在單個語句中定義和實例化。

非靜態嵌套類稱為內部類。 內部類與類的對象相關聯,它們可以訪問外部類的所有方法和變量。

7.什麼是系統類?
它是Java中的核心類。 由於類是最終的,我們不能通過繼承覆蓋它的行為。 我們也不能實例化這個類,因為它不提供任何公共構造函數。 因此,它的所有方法都是靜態的。

8. Java中如何創建守護線程?
我們使用類 setDaemon(true) 來創建這個線程。 我們在 start() 方法之前調用這個方法,否則我們會得到 IllegalThreadStateException。

軟件開發人員的工作簡介

9. Java 支持全局變量嗎? 為什麼/為什麼不?
不,Java 不支持全局變量。 這主要是因為兩個原因:
● 它們在命名空間中產生衝突。
● 它們破壞了參照透明性。

10. RMI 對像是如何開發的?
可以採取以下步驟來開發 RMI 對象:
● 定義接口
● 實現接口
● 用java編譯器編譯接口及其實現
● 使用 RMI 編譯器編譯服務器實現
● 運行 RMI 註冊表
● 運行應用程序

11、解釋時間片和搶占式調度的區別?
在時間切片的情況下,任務在指定的時間範圍內執行 - 也稱為切片。 之後,它進入就緒隊列——一個“就緒”任務池。 然後調度程序根據優先級和其他因素選擇下一個要執行的任務。

而在搶占式調度下,具有最高優先級的任務將被執行,直到它進入死亡或警告狀態,或者另一個更高優先級的任務出現。

12.垃圾收集器線程是一個什麼樣的線程?
它是一個守護線程。

13. Java中線程的生命週期是什麼?
Java 中的任何線程在其生命週期中都會經歷以下階段:
● 新
● 可運行
● 跑步
● 不可運行(阻塞)
● 終止

14. 說明反序列化和序列化過程中使用的方法。
ObjectInputStream.readObject
讀取文件並反序列化對象。

ObjectOutputStream.writeObject
序列化對象並將序列化的對象寫入文件。

15. 什麼是 volatile 變量,它們的用途是什麼?
易失性變量是總是從主內存中讀取的變量,而不是從線程的高速緩存中讀取的變量。 這些通常在同步期間使用。

16. Java 中的包裝類是什麼?
Java 中的所有原始數據類型都有一個與之關聯的類——稱為包裝類。 它們被稱為包裝類,因為它們將原始數據類型“包裝”到類的對像中。 簡而言之,它們將 Java 原語轉換為對象。

17. 我們如何製作單例類?
通過將其構造函數設為私有。

18、Java中異常類的重要方法有哪些?
● 字符串 getMessage()
● 字符串 toString()
● 無效 printStackTrace()
● 同步 Throwable getCause()
● public StackTraceElement[] getStackTrace()

19.我們如何在Java中創建一個線程?
我們可以按照以下兩種方式中的任何一種在 Java 中創建線程:
● 通過擴展線程類

這種方法的缺點是我們不能擴展任何其他類,因為線程類已經被擴展了。
● 通過實現Runnable接口

20. 解釋 get() 和 load() 方法的區別。
get() 和 load() 方法有以下區別:
● 如果找不到對象,get() 將返回null,而load() 會拋出ObjectNotFound 異常。
● get() 總是返回一個真實對象,而load() 返回一個代理對象。
● get() 方法總是命中數據庫,而load() 沒有。
● 如果您不確定實例是否存在,則應使用get(),而如果您確定實例存在,則應使用load()。

21. 局部變量的默認值是多少?
它們未初始化為任何默認值。 原語或對象引用都不是。

22. Java 中的 Singleton 是什麼?
它是一個在整個 Java 應用程序中具有一個實例的類。 例如 java.lang.Runtime 是一個 Singleton 類。 Singleton 的主要目標是通過保留私有構造函數來控制對象的創建。

23.什麼是靜態方法?

無需創建類的實例即可調用靜態方法。 靜態方法屬於類而不是類的對象。 靜態方法可以訪問靜態數據成員並可以更改它的值。

24. 有什麼例外?

例外 程序期間的異常​​情況。 這可能是由於不正確的用戶輸入或程序員編寫的邏輯不正確。

25. 簡單來說,您如何定義 Java?

Java 是一個高級、獨立於平台、面向對象的門戶,並為構建複雜的程序、應用程序和網站提供高性能支持。 Java 是一種通用編程語言,它使開發人員能夠通過其編寫一次隨處運行 (WORA) 環境構建功能豐富的應用程序。 來自加拿大的計算機科學家 James Arthur Gosling 於 1991 年開發了 Java,並被普遍稱為“Java 博士”。 今天,Java 已成為現代 IT 行業的重要基礎。

26 . 什麼是 Java 字符串池?

Java 中的字符串池是一個獨特的地方,它有一個通過 Java 堆內存存儲的字符串池。 這裡,String 代表 Java 中的一個特殊類,可以使用 new 運算符或使用雙引號中的值創建字符串對象。
String 在 Java 中是不可變的,因此使 String pool 的可行性,然後通過 String interning 概念進一步實現。

27 、什麼是Java中的集合類? 列出它的方法和接口?

Java 集合類是特殊的類,專門用於專門用於返回集合的靜態方法。 默認情況下,Java Collection 繼承一個類並具有兩個基本功能:

  • 它們支持並使用為每個特定集合返回新集合的多態算法進行操作。
  • 如果類對像或集合具有 Null 值,Java Collection 中的方法會拋出 NullPointerException。

這些被表示和聲明為 Java.util.Collection 類。

Java Collection 類有 60 多種方法、修飾符和類型。 以下是 Java 集合類中最重要的方法列表:

S. 沒有。 修飾符、方法和類型描述
1. 靜態 <T> 布爾addAll() 此方法允許將特定元素添加到特定集合中。
2. 靜態 <T> 隊列 <T> asLifoQueue() 此方法允許在視圖中將集合列為後進先出 (LIFO)。
3. 靜態 <T> int binarySearch() 此方法允許搜索特定對象,然後在排序列表中返回它們。
4. 靜態 <E> 集合<E> 此方法從任何特定集合返回動態視圖。
5. 靜態 <E> 列表 <E> 此方法從特定列表返回動態類型安全視圖。

以下是 Java 集合的一些示例:
Java 集合 min() 示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 導入java.util.*   
 	公共CollectionsExample {  
 	    公共靜態無效主要字符串一個[]){         
 	        List <整數> list = new ArrayList <整數>();  
 	        列表 添加 90 );  
 	        列表 添加 80 );  
 	        列表 添加 76 );  
 	        列表 添加 58 );  
 	        列表 增加 12 );  
          系統 出來 println ( "集合中最小值元素:" + Collections.min ( list ));  
      }  
  } 

輸出將是:

集合中的最小值元素:12

Java 集合 max() 示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 導入java.util.*   
  公共CollectionsExample {  
      公共靜態無效主要字符串一個[]){         
          List <整數> list = new ArrayList <整數>();  
          列表 添加 90 );  
          列表 添加 80 );  
          列表 添加 76 );  
          列表 添加 58 );  
          列表 增加 12 );  
          系統 出來 println ( "集合中最大值元素:" + Collections.max ( list ));  
      }  
  }

輸出將是:

集合中的最大值元素:90

28 . 什麼是小服務程序?

Servlet 是 Java 軟件組件,可通過技術、API、接口、類或任何 Web 部署向 Java 服務器添加更多功能。 Servlet 專門在基於 Java 的 Web 應用程序服務器上運行,並且能夠處理來自 Web 服務器的複雜請求。 Servlet 增加了更高性能、健壯性、可伸縮性、可移植性的好處,並確保 Java 應用程序的安全性。

Servlet 進程或執行:

  • 這從用戶從 Web 瀏覽器發送請求時開始。
  • Web 服務器接收該請求,然後將其傳遞給特定的 servlet。
  • 然後 Servlet 處理此請求以獲取帶有輸出的特定響應。
  • 然後 Servlet 將此響應發送回 Web 服務器。
  • 然後 Web 服務器獲取瀏覽器在屏幕上顯示的信息。

Java Servlet 帶有多個類和接口,例如 GenericServlet、ServletRequest、Servlet API、HttpServlet、ServeResponse 等。

29.什麼是請求調度程序?

在 Servlet 中,RequestDispatcher 充當一個接口,用於定義一個對像以在一側接收來自客戶端的請求,然後將其分派到另一側的特定資源(可能是 servlet、HTML、JSP)。 這個 RequestDispatcher 一般有兩種方法:

無效轉發(ServletRequest 請求,ServletResponse 響應) 這允許並將來自任何 servlet 的請求以 Servlet、HTML 文件或 JSP 文件的形式轉發到服務器資源。
無效包含(ServletRequest 請求,ServletResponse 響應) 它以響應的形式包含特定資源的內容,例如 HTML 文件、JSP 頁面或 servlet。

30. servlet 的生命週期是什麼?

Servlet 是一個 Java 軟件組件,其主要功能是先接受請求,然後處理請求,並在 HTML 頁面中給用戶一個響應。 這裡 Servlet Container 管理 servlet 的生命週期。 以下是主要階段:

  • 加載 Servlet。
  • 然後初始化Servlet。
  • 處理請求(調用服務方法)。
  • 然後銷毀 Servlet。

這是一個顯示 Java Servlet 生命週期的快速圖表:
Servlet 的生命週期

資源

  • 加載 Servlet

Servlet 的生命週期從 Servlet 容器中的加載階段開始。 Servlet 以兩種方式之一加載:

    • 將 servlet 設置為正整數值或零整數值。
    • 其次,這個過程可能會延遲,因為容器會選擇正確的 servlet 來處理請求。

現在容器首先加載 Servlet 類,然後通過無參數構造函數構建一個實例。

  • 初始化 Servlet

下一步是使用 Servlet.init(ServletConfig) 方法為實例 JDBC 數據源初始化 Servlet。

  • 處理請求(調用服務方法)

在這裡,Servlet 接受客戶端請求並使用 service() 方法執行所需的操作。

  • 銷毀 Servlet

現在 Servlet 容器通過執行和完成特定任務並調用實例中的 destroy() 方法來銷毀 servlet。

31. servlet 中有哪些不同的會話管理方法?

會話在用戶登錄網站後跟踪用戶的活動。 會話管理提供了為每個獨立用戶獲取信息的機制。 以下是 servlet 中會話管理的四種不同方法:

  • HttpSession
  • 餅乾
  • 網址重寫
  • HTML 隱藏字段

32.什麼是 JDBC 驅動程序?

Java 數據庫連接 (JDBC) 在這裡充當允許 Java 應用程序與數據庫通信的軟件組件。

JDBC驅動在環境中有以下四種:

  • JDBC-ODBC 橋驅動程序
  • 網絡協議驅動程序(中間件驅動程序)
  • 數據庫協議驅動程序(完全 Java 驅動程序)
  • 本機 API 驅動程序

33.什麼是JDBC Connection接口?

連接定義了數據庫和 Java 應用程序之間的會話。 JDBC 連接接口只是 java.sql 包的一部分,它提供特定數據庫的會話信息。 這些代表多個 SQL 語句,用於在單個連接接口的上下文中執行和結果。 以下是 Connections 接口的主要方法:

  • createStatement() :創建特定的語句對象,用於將 SQL 語句添加到特定數據庫。
  • setAutoCommit(boolean status) :定義提交模式與 false 或 true 指令的連接。
  • commit() :從上次提交中進行所有修改,並進一步釋放當前由特定 Connection 對象持有的任何數據庫。
  • rollback() :撤消或回滾過去或當前事務中所做的所有更改,並釋放連接對像中當前持有的數據庫。
  • close() :終止或關閉當前連接,並立即釋放或清除 JDBC 資源。

34 、命名Spring框架的不同模塊?

Spring框架中有多個模塊:

  • 網頁模塊
  • 支柱模塊
  • 小服務程序模塊
  • 核心容器模塊
  • 面向方面的編程 (AOP)
  • 應用程序上下文模塊
  • MVC 框架模塊
  • JDBC 抽象和 DAO 模塊
  • OXM模塊
  • 表達語言模塊
  • 交易模塊
  • Java 消息服務 (JMS) 模塊
  • ORM集成模塊

這些模塊以組的形式出現:

彈簧模塊

資源

35. 講解Spring中的Bean,列出Spring bean的不同作用域。

Bean 是 Spring 框架有效管理結構的基本概念之一。 在一個簡單的定義中,Spring Bean 代表了管理對象的 IoC 容器,這些對象構成了應用程序的主幹。

Spring Bean 的作用域:

範圍在應用程序中有效使用 Spring bean 方面起著至關重要的作用。 Scope 幫助我們了解 Spring Bean 的生命週期,它們有以下類型

S. 沒有。 範圍和描述
1. 單例——默認情況下,Spring bean 範圍有一個單例範圍,它只代表 Spring IOC 容器的一個實例。 每個請求都共享同一個對象。
2. 原型——在這種情況下,每次對特定 bean 發出請求時,都會為每個 bean 定義調用並創建一個新實例。
3. 請求- 在此範圍內,將為該特定 bean 的每個 HTTP 請求調用並創建一個 bean。
4. 會話——這個範圍定義了特定全局 HTTP 會話中生命週期的單個 bean 使用。
5. 全局會話——此範圍允許特定生命週期的單個 bean 在全局 HTTP 會話中實現。

注意:最後三個範圍僅適用於 Web 感知 Spring ApplicationContext。

必讀:為什麼 Java 如此受開發人員歡迎

36.解釋DispatcherServlet和ContextLoaderListener的作用。

在 web.xml 文件中配置基於 XML 的 Spring MVC 配置時,DispatcherServlet 和 ContextLoaderListener 的兩個聲明在補充框架目的方面起著至關重要的作用。

  • DispatcherServlet –

DispatcherServlet 的主要目的是管理針對特定匹配配置的 URI 模式的傳入 Web 請求。 DispatcherServlet 充當 Spring MVC 應用程序核心的前端控制器,專門加載配置文件,然後初始化該文件中存在的正確 bean。 並且當註釋被啟用時,它還可以檢查和掃描所有使用@Repository、@Component、@Service 或@Controller 註釋的配置和包。

  • ContextLoaderListener –

ContextLoaderListener 在這裡充當請求監聽器,用於啟動和關閉根 WebApplicationContext。 因此,它通過 DispatcherServlet 上下文創建並與子上下文共享根應用程序上下文。 應用程序只能在 web.xml 中為 ContextLoaderListener 使用一個條目。

37. 解釋 Hibernate 架構。

Hibernate 定義了一種分層架構,使用戶能夠在不了解底層 API 的情況下進行操作和執行,即,Hibernate 作為一個框架來構建和開發獨立於數據庫軟件的持久性邏輯。

Hibernate 架構主要有四層:

  • Java應用層
  • 數據庫層
  • 後端 API 層
  • Hibernate 框架層

Hibernate 架構的元素

Hibernate 架構有幾個方面和範圍。 要了解更多關於它們的信息,您必須了解 Hibernate 架構的元素。

  • SessionFactory: Sessionfactory 提供了創建僅存在於 org.hiberate 包中的會話對象的方法。 它本質上是線程安全的,不可變的,並且持有和保存數據的二級緩存。
  • 會話:會話對象通過休眠框架為連接和數據庫軟件提供接口。
  • 事務:幫助事務管理並允許更改數據庫的接口。
  • ConnectiveProvider: JDBC 連接的一部分,它將主應用程序與 DataSource 或 DriverManager 分開。
  • TransactionFactory:表示事務的工廠。

38. Java 中的異常層次結構是什麼?

異常定義了在程序運行或執行期間出現的不需要的事件。 異常會破壞程序的正常流程。
Exception Hierarchy 是 java.lang.Exception 類的一部分,僅屬於主要 Throwable 類。 另一個子類“ Error ”也代表 Java 中的 Throwable 類。 儘管錯誤是發生故障時的異常情況,但它們仍然沒有被 Java 程序處理或清除。
Java 中有兩個用於異常層次結構的主要子類,分別是 RuntimeException 類和 IOCException 類。

39.什麼是同步?

Java 中的同步定義了管理和控制多個線程對特定資源的訪問的能力。 因此,一個線程當前可以訪問特定資源。 在這裡,Java 允許開發線程,然後通過同步塊同步任務。

這些同步塊只允許一個線程在特定時間執行並阻塞其他線程,直到當前線程退出該塊。 這裡監視器概念對於在 Java 中實現同步至關重要。 一旦線程進入鎖定階段,它就被稱為進入監視器。 因此,除非第一個線程退出監視器,否則鎖定所有其他線程。

40. 哪些特性使 Java 成為最好的編程語言之一?

以下是使 Java 在編程世界中開始學習曲線的主要功能:

  • 簡單性: Java 的學習和編寫都非常簡單。 Java 語法在 C++ 中,允許開發人員無縫地編寫程序。
  • OOPS: Java 基於面向對象的編程系統 (OOPS),因此能夠在具有不同數據和行為的多種類型的對像中構建代碼。
  • 動態: Java 是一種完整的動態語言,支持隨時隨地加載動態類。 並且對C、C++等原生代碼語言也有全面的支持。
  • 平台無關: Java 還支持專有和平台無關的編程語言,因此,允許開發人員僅在他們的平台上運行他們的程序。
  • 可移植性: Java 具有一次寫入任何地方的方法,允許代碼在任何平台上運行。
  • 安全性:遵循 ByteCode 的概念、異常處理和不使用任何顯式指針,使 Java 成為一個高度安全的環境。

Java 也是架構中立的,不依賴於任何架構。 強大的內存管理和自動垃圾收集為其環境增加了更多的健壯性。

41. 是什麼讓 Java 實現了高性能?

在其架構中使用即時 (JIT) 編譯器使 Java 成為高性能編程語言之一,因為它將指令轉換為字節碼。

42. 說出最流行的 Java IDE。

業界有許多適用於 Java 的 IDE。 以下是您今天可以用來開始學習這種編程語言的前五個 Java IDE:

  • 網豆
  • 智能
  • 開發人員
  • 日食

43.定義Java與其他平台的主要區別?

使 Java 從其他平台中脫穎而出的兩個主要區別是:

  • Java 主要是一個基於軟件的平台,而其他的可以是基於軟件或硬件的平台。
  • Java 在任何硬件平台上運行或執行,而其他平台則需要特定的硬件要求。

44. 是什麼讓 Java 具有“一次編寫,隨處運行”(WORA)的本質?

嗯,一個字的答案是字節碼。 Java 編譯器將所有 Java 程序轉換為特定的字節碼,充當機器代碼和源代碼之間的中介語言。 ByteCode 可以在任何計算機上運行,並且沒有平台依賴性。

45. 解釋 Java 中使用的不同類型的訪問說明符。

在 Java 編程語言中,訪問說明符表示類、變量或方法的確切範圍。 有四個主要的訪問說明符:

  • 公共定義的變量、方法或類可跨任何方法或類訪問。
  • 受保護的訪問說明符將類、方法和變量的範圍定義到同一個包、同一個類或類的特定子類。
  • 默認範圍適用於所有當前只能訪問包的類、變量和方法
  • Private作用域只保留對特定類的類、變量和方法的訪問

閱讀:Java Swing 項目

46.解釋Java中包的含義及其優點。

包是類似類型(接口、類、註釋和枚舉)的分組機制,可確保資產保護和全面的名稱管理。

以下是Java中包的優點:

  • 當兩個不同的包中存在同名的類時,包可以幫助我們防止命名衝突。
  • 包有助於系統地進行訪問控制。
  • 構建包使用的隱藏類。
  • 幫助定位包的相關類。

47. 你會如何在 Java 中定義構造函數?

構造函數是在創建對象時初始化對象的特殊代碼塊。 儘管它與實例方法相似,但構造函數仍然不是方法,因為它們沒有任何明確的返回類型。 因此,每次在系統中創建對象時,都會調用一個構造函數來執行該構造函數。 如果沒有定義構造函數,則編譯器使用默認構造函數。

這是Java中構造函數的簡單介紹:

 1
2
3
4
5
6
 公共MyClass {
   //這是構造函數
   我的類(){
   }
   ..
}

48. Java 中使用了哪些不同類型的構造函數?

Java 中使用了三種類型的構造函數:

  • 默認構造函數:當開發人員不使用構造函數時,Java 編譯器會在 .class 文件中添加一個更具體的默認構造函數。
  • 無參數構造函數:在這種情況下,構造函數中沒有參數,編譯器不接受任何參數,因為實例變量方法使用特定的固定值初始化。
  • 參數化構造函數:在這種情況下,構造函數中存在一個或多個參數,僅寫在主元素的括號內。

49.構造函數和方法有什麼區別?

構造函數和方法的主要區別是:

  • 目的:構造函數的目的是初始化類的對象,而方法執行代碼執行的特定任務。
  • 該方法具有返回類型,而構造函數沒有。
  • 在方法中,有抽象、靜態、最終和同步,而在構造函數中,你不能製作具體的過程。

50.解釋Local變量和Instance變量的含義?

  • 局部變量存在於方法中,作用域僅存在於方法中。
  • 實例變量只存在於類中並在類中定義它們的範圍。

51.解釋Java中Class的含義?

在 Java 中,所有的代碼、變量和方法都定義在類中。

  • 變量表示定義特定類狀態的屬性。
  • 方法代表業務邏輯在哪裡發揮作用。 方法包括一組符合要求的語句和指令。

下面是一個 Java 類的簡單示例

 1
2
3
4
5
6
7
 public class Addition { //類名聲明
詮釋x = 10 ; //變量聲明
整數y = 10 ;
public void add (){ //方法聲明
int z = a + b ;
}
}

52.解釋Java中Object的含義?

對像被定義為僅具有特定狀態和行為的類的實例。 例如,狗具有特定的名稱、品種和顏色狀態,而行為包括吠叫、搖尾巴等。因此,只要 JVM 讀取任何 new() 關鍵字,就會創建相應的實例。 需要首先聲明一個對象,然後實例化並最終初始化以進一步執行。

53. 定義Java語言中字節數據類型的默認值。

對於 Byte 數據類型,默認值為 0。

54.為什麼字節數據類型在Java中更有利?

由於字節數據類型幾乎比整數小四倍,因此它可以為大型數組存儲更多空間。

55. 解釋 Java 中的 OOP 概念。

OOP 是 Java 編程語言的基本概念。 這些包括抽象、多態、繼承和封裝。 Java OOP 概念使開發人員能夠創建變量、方法和組件,從而進一步允許他們以定制的方式重用它們,同時保持安全性。

56.解釋繼承的含義。

在 Java 中,繼承是一種特定機制,它允許一個類獲取另一個類的屬性(帶有字段和方法)。 繼承是 Java OOP 的基本概念之一。

繼承可以構建新類,在現有類上添加更多字段和方法,以便以任何方式重用它們。

  • 子類是繼承另一個類的屬性的子類。
  • 超類是繼承其屬性的類。

57.解釋Java中封裝的概念?

作為 Java OOP 的主要概念之一,封裝僅允許將數據和代碼包裝在單個單元中。 封裝也稱為數據隱藏,特定類的變量對所有其他類隱藏,並且只能通過現有類的方法訪問。

在 Java 中實現封裝的兩個基本要素是:

  • 將特定類的變量聲明為私有變量。
  • 利用公共 setter 和 getter 方法進行更改和查看變量值。

58.解釋多態的概念。

Java 中的多態性允許開發人員以多種方式執行單個任務。 Java 中有兩種類型的多態,即運行時和編譯時。 您可以使用覆蓋和重載方法來操作 Java 中的多態性。

59.解釋接口的含義。

在 Java 中,我們無法實現多重繼承。 在這裡,接口在克服這個問題以實現抽象、輔助多繼承以及支持鬆散耦合方面起著至關重要的作用。 現在,我們在與最新 Java 更新的接口中擁有了一個默認的、靜態的和私有的方法。

60. 抽像類是什麼意思?

抽像類是使用 Java 中的特定抽象關鍵字構建的。 它們代表抽象和非抽象方法。

61.解釋Java中的抽像類?

抽像是對用戶隱藏實現信息然後僅表示用戶功能的基本屬性之一。 For instance, when you send an SMS from one person to another person. The user gets to know only the message and number while the backend process remains hidden.

You can achieve abstraction in Java using the following two ways:

  • Abstract Class (0 to 100%)
  • Interface (100%)

62. Explain the difference between Abstraction and Encapsulation in Java.

Here are the main differences:

抽象封裝
Abstraction aims to gain information. Encapsulation's main aim is to contain or procure information.
In the abstraction process, issues or problems are handled at the interface/ design level. In Encapsulation, problems are handled at a specific implementation level.
Abstraction aids in hiding unwanted information. Encapsulation method applies hiding data within a single unit.
Implemented with interfaces and abstract classes. Implemented with a particular access modifier (public, private, and protected).
Use abstract classes and interfaces to hide complexities. Use getters and setters to hide data.
Objects that extend to abstraction must be encapsulated. An object for encapsulation must not be abstracted.

63. Explain the differences between Abstract class and interface.

Abstract Class 界面
Abstract Class comes with a default constructor. The interface doesn't have a constructor. So, no further process.
Uses both Abstract and Non-Abstract methods. Only use Abstract methods.
Classes that must extend for Abstract class need only abstract methods throughout their sub-class. Classes that extend to interface must provide implementation across all the methods.
These include instance variables. The interface presents constants only.

64. Explain the main differences between Array and Array List.

大批Array List
The size needs to be defined for the declaring array.

String[] name = new String[5]

No size requirements; and modifies dynamically.

ArrayList name = new ArrayList

You must specify an index for putting an object inside the array.

name[1] = “dog”

There are no index requirements.

name.add(“dog”)

Arrays are not parameterised. From Java 5.0 onwards, ArrayLists have a specific parameterised type.

65. Explain the difference between static method and instance method.

Static or Class Method Instance Method
You must declare a method static for a static method. All methods with declaration as static come under Instance method only.
No requirements for creating objects in the Static method. The object is a must for calling the instance method.
You cannot access Instance or Non-static methods in the static context. You can access both static and non-static in the instance method.

66. How to make Constructors static?

Constructors invoked with the object, and static context is part of the class, not the object. Hence, constructors cannot be static and show compiler error if run or executed.

67. Explain the use of 'this' keyword in Java?

In Java, 'this' keyword represents a specific reference on the current object. There are multiple uses for this keyword for referring to the current class properties from a variable, constructors, methods, and more. You can also pass this as an argument within constructors or methods. You can also fetch this as a return value from the current class instance. You can also refer to this as a static context.

另請閱讀:如何編寫、編譯和運行 Java 項目

68. What is a classloader in Java? What are the different types of ClassLoaders in Java?

Java Classloader's main function is to dynamically load all classes into the Java Virtual Machine (JVM). ClassLoaders are part of the JRE only. So every time we run a Java program, classloader loads the classes to execute this program. A single ClassLoader loads only a specific class on requirements and uses getClassLoader() method to specify the class. These classes are loaded by calling their names, and in case these are not found then it retrieves or throws a ClassNotFoundException or NoClassDefFoundError.

Java ClassLoader uses three principles in performing tasks with delegation, uniqueness, and visibility.
There are three different types of Java ClassLoader:

  • BootStrap ClassLoader:

BootStrap ClassLoader represents the parent or superclass for extension classloader and all other classloaders. It has machine code that loads the pure first Java ClassLoader and takes classes from the rt.jar and also known as Primordial ClassLoader.

  • Extension ClassLoader:

Extension ClassLoader represents the child classloader for the superclass or BootStrap ClassLoader. It loads core java classes from jre/lib/ext , ie, JDK extension library.

  • System ClassLoader:

Application or System ClassLoader are further child classes of Extension ClassLoader. It takes and loads a file from the current directory for the program that you can customise with the 'classpath' switch.

69. Explain the meaning of Java Applet.

Java Applet is a program that executes or runs in the web browser only. Applets are specifically designed to function and embed with HTML web pages. Applets have the capability to function full Java applications with the entire use of Java API. JVM is a must requirement to view an applet on the browser. Applet extends with the use of java.applet.Applet class.

70. What are the types of Applets?

Based on location, there are two types of Java applets as Local Applets that are stored on the same computer or system. The Remote Applets that have files on remote systems.

71 What are immutable objects in Java?

在 Java 中,不可變對像是其狀態在創建後不會改變的對象。 不可變對象非常適合允許共享線程同時避免同步的多線程應用程序。 不可變對象更適合構建簡單、健全和可靠的代碼以匹配有效的策略。

72. JRE(Java 運行時環境)是什麼意思?

Java 運行時環境是為在機器上運行 Java 程序的最低要求提供支持的軟件層。 與 JDK 和 JRE 一起,這三者構成了在特定機器上運行和開發 Java 程序的基礎。

73. JDK 的一部分是什麼?

Java Development Kit (JDK) 是運行 Java 程序必不可少的主要技術包之一。 它可以是 Oracle 開發的用於在 Windows、Linux 或 macOS 上構建應用程序的任何 Java 平台、標準版、微型或企業版的實現。

74. 什麼是 Java 虛擬機 (JVM)?

Java 虛擬機 (JVM) 是與 JDK 和 JRE 一起運行和執行 Java 程序的三個基本要求之一。 JVM有兩個主要功能; 首先,使 Java 程序能夠在任何機器或系統上無縫運行,其次是優化內存以提供性能。

75.JDK、JRE、JVM有什麼區別?

虛擬機
JRE
JDK
Java 虛擬機Java運行時環境Java 開發工具包
平台相關,提供多種軟件和硬件選項。 支持在機器上運行 Java 程序的最低要求的軟件層。

標準版

企業版

微版

三個概念:

  • 規格
  • 執行
  • 實例
一組在運行時為 JVM 提供支持的庫 + 文件。 JRE+開發工具
為執行提供運行時環境。 JRE 代表 JVM 的實現。 軟件開發環境。

76. JVM中有多少種內存區域?

JVM中有幾種類型的內存區域:

  • 類區:該內存存儲類前結構,包括字段、池、方法數據和代碼。
  • 堆代表專門分配給對象的運行時內存。
  • Stack 用局部變量、部分結果、線程和每個方法的幀來表示幀的內存。
  • 程序計數器寄存器存儲當前指令與 Java 虛擬機執行的信息。
  • 本機方法堆棧存儲當前應用程序中使用的所有本機方法。

77. 什麼是 Java 中的數據綁定?

數據綁定表示類和方法、字段、變量、構造函數或方法體之間的連接。 Java 可以靜態和動態地處理數據綁定。

78. Java中有哪些不同類型的數據綁定?

Java 中有兩種重要的數據綁定類型。

  • 靜態綁定發生在編譯時使用靜態、最終和私有方法; 也稱為早期綁定。
  • 動態綁定在運行時呈現在編譯期間不知道關於正確方法的確切信息。

79.什麼是 Java Socket?

套接字有助於建立兩台計算機通過 TCP 的通信機制。 理想情況下,套接字對於通信來說更加充分和靈活。

80.解釋Path和Classpath的區別。

path 和 Classpath 都代表本地環境變量。 路徑提供了用於定位可執行文件的軟件,而 ClassPath 指定了 .class 文件在系統中的位置。

81、有沒有不使用抽像類的抽象方法?

不,對於一個類中存在的抽象方法,它必須是一個抽像類。

82、Java製作只讀類的過程是怎樣的?

在 Java 中,您可以通過將所有字段保持私有來創建只讀類。 這個特定的只讀類將只有返回私有屬性的 getter 方法。 它不允許修改或更改此屬性,因為沒有可用的 setter 方法。

 1
2
3
4
5
6
7
8
9
 //Java 中的只讀類
公共學生{    
//私有數據成員
私人字符串學院= “MKG”     
//研究所的getter方法
公共字符串getInstitute (){    
返回研究所    
}    
}

83、用Java製作只寫類的過程是怎樣的?

在 Java 中,您還可以通過僅實現 setter 方法將所有字段保持私有來創建只寫類。

 1
2
3
4
5
6
7
8
9
 // Java 中的只寫​​類
公共學生{    
//私有數據成員
私立弦樂學院    
//機構的setter方法
公共無效setInstitute 字符串學院){    
這個 研究所=研究所    
}    
}

84.解釋Java中訪問另一個類中的類的方法?

在 Java 中,有兩種​​方法可以訪問另一個類中的類:

  • 使用特定名稱:我們可以通過使用限定名稱或導入包含特定類的包來訪問不同包中的特定類。
  • 使用相對路徑:同樣,我們也可以使用具有特定類的包的相對路徑。

85.什麼是異常處理?

異常處理表示在運行時錯誤期間處理異常或異常情況的機制,以保持應用程序的正常流程。 存在三種不同類型的 Java 異常:已檢查異常、未檢查異常和錯誤。

86.解釋Checked Exception和Unchecked Exception的區別。

  • Checked Exceptions 是進一步擴展除了 RuntimeException 之外的可拋出類的類,例如 SQLException、IOException 等。Checked Exceptions 僅在編譯時處理。
  • Unchecked Exceptions 是擴展 RuntimeException 的類,例如 NullPointerException、ArithmeticException 等,並且在編譯時不處理。

87. 異常和錯誤的基類是什麼?

在這裡,Throwable 類代表 Exception 和 Error 的基類。

88. 提及 Java 中的異常處理關鍵字。

Java中有五個用於處理異常的關鍵字

關鍵詞描述
嘗試這個 try 塊定義了用於放置執行代碼的塊。 這個 try 塊通常後面跟著使用 catch 或 finally。 所以,它們不能單獨使用。
抓住Catch 塊的主要目的是處理異常。 您必須將它與 try 塊結合使用,然後在後期使用 finally。
最後最後,塊檢查檢查執行是否完成的程序的重要代碼。
throw 關鍵字的主要目的是從程序中拋出異常。
投擲throws 關鍵字主要用於聲明異常,而不是用於拋出異常。 它提供有關異常發生的信息,並與方法簽名一起應用。

89. 解釋 finally 塊的重要性。

在這裡,finally 塊對於程序的順利運行至關重要。 無論是否處理異常,它總是執行。 最後,該塊位於 try 或 catch 塊之後。 在 JVM 中,系統總是會在終止或關閉文件之前運行 finally 塊。 對於每個存在的 try 塊,可以有零個或多個 catch 塊,但仍然只能有一個 finally 塊。

90. 在沒有 catch 塊的情況下可以運行 finally 塊嗎?

是的,finally 塊可以分別在 try 或 catch 塊之後運行。

91. 有沒有finally塊不存在的情況?

如果程序已經存在或為中止進程帶來致命錯誤,finally 塊不會運行或執行。

92. 解釋 throw 和 throws 之間的主要區別。

拋出關鍵字

拋出關鍵字

它拋出一個異常。 它聲明了一個異常。
已檢查的異常不能僅通過 throw 傳播。 檢查的異常可以通過 throws 傳播。
緊隨其後的是一個實例。 緊隨其後的是一堂課。
它僅用於方法中。 它與特定的方法簽名一起使用。
不可能有多個例外。 而在此過程中,可以聲明多個異常。

93. 是否有可能重新拋出異常?

是的,如果存在異常,則可以重新拋出它。

94. 解釋異常傳播。

處理過程中的異常過程稱為異常傳播。 例如,首先在堆棧頂部處理異常,然後如果未捕獲,則異常下降到前一個方法,如果沒有,則進一步下降,直到異常被捕獲或到達底部的堆棧。 默認情況下,檢查的異常沒有傳播。

95.解釋Java中線程的含義。

在 Java 中,執行的方式或流程稱為線程。 因此,每個程序都包含一個線程,稱為 JVM 創建的主線程。 開發人員可以通過使用接口添加和擴展 Thread 類來定義他們的自定義線程。

96.解釋線程池的含義。

Java線程池是一組連續等待分配任務的多個線程。 在這裡,線程池在服務提供者下工作,服務提供者從這個池中拉出一個線程,然後為他們分配特定作業的任務。 線程池為系統增加了更多的性能和穩定性。

97.解釋String和StringBuffer的區別。

細繩

字符串緩衝區

字符串類本質上是不可變的。 另一方面,StringBuffer 類是可變的。
字符串很慢。 StringBuffer 否則相當快。
這些會消耗更多內存來創建新實例。 這些使用 concat 字符串消耗更少的內存。
字符串允許比較其內容,因為它覆蓋了 Object 類的 equals() 方法。 而 StringBuffer 類不能覆蓋 Object 類的 equals() 方法。

98.解釋StringBuffer和StringBuilder的區別。

字符串緩衝區

字符串生成器

它與線程安全同步。 它是非同步的,對線程沒有安全性。
在此,兩個線程沒有調用方法。 在這種情況下,兩個線程可以無縫地調用方法。
低於或低於 StringBuilder 的效率。 比 StringBuffer 更高效。

99、Java中創建不可變類的方法是什麼?

在 Java 中,您可以通過將包含所有成員的 final 類聲明為 final 來創建不可變類。 讓我們舉個例子來理解這一點:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 公共最終員工{  
 	最終字符串 securityNumber ;  
 	  
 	公共僱員字符串安全編號){  
 	這個 安全號碼=安全號碼  
 	}  
 	  
 	公共字符串getSecurityNumber (){  
 	返回安全號碼  
  }  
    
  }

99. 什麼是內部類?

Java 內部類在接口或類中定義和聲明。 內部類允許系統對類和接口進行邏輯分組,使它們更具可讀性和易於維護。 此外,這些類可以使用方法訪問外部類的所有成員以及私有數據成員。

100. 使用Java Inner 類的主要優點和缺點是什麼?

Java 內部類的主要優點包括:

  • 外部類的所有成員的可訪問性。
  • 少寫代碼。
  • 更多維護和可讀代碼。

Java 內部類的主要缺點包括:

  • 來自 IDE 的支持較少。
  • 大量的總類。

101.在Java編程語言中定義內部類的類型?

內部類有三種主要類型:

  • 成員內部類,它使用外部方法指定類內的一個類。
  • 匿名內部類,用於擴展類或指定接口的實現。
  • Local Inner Class 在方法內創建一個類。

102.定義一個嵌套類。

嵌套類僅在類或接口中定義或聲明。 嵌套類也可以通過方法和私有數據成員專門訪問外部類的所有成員。 這是嵌套類的簡單語法:

 1
2
3
4
5
6
 Java_Outer_class {    
 	 //代碼
 	 Java_Nested_class {    
 	  //代碼
 	 }    
 	}

103.你能解釋一下內部類和嵌套類的區別嗎?

所有內部類都定義為非靜態嵌套類。 因此,內部類只是嵌套類的一部分。

104. 你如何定義 Java 中集合的含義?

Java 中的集合是一組作為一個單元呈現的多個對象; 主要稱為對象的集合。 它們也被稱為集合框架或架構,為對象提供存儲空間並進一步操縱設計以進行更改。

以下是 Java 集合執行的主要功能:

  • 排序
  • 搜索
  • 插入
  • 操縱
  • 刪除

有許多接口和類是集合的一部分。

105. 集合中有哪些接口和類?

以下是 Java 中集合可用的接口和類的列表。

  • 接口: Collection、Queue、Sorted Set、Sorted Map、List、Set、Map
  • 類:列表、向量、數組列表、鍊錶
  • 集:散列集、樹集、鏈接散列集
  • 映射:哈希映射、哈希表、TreeMap、鏈接哈希映射
  • 隊列:優先隊列

106. 解釋 Java 中關於集合的 sorted 和 ordered?

  • 排序:排序允許對象組在內部或外部應用,以根據它們的不同屬性在特定集合中對它們進行排序。
  • 有序:定義基於集合中添加的值排序的值,並以特定順序對其進行迭代。

107. 集合中有哪些不同的列表?

根據允許重複的索引位置列出存儲值。 以下是列表的主要類型:
數組列表:使用隨機訪問接口,提供按索引排序的集合,不排序,並提供快速迭代。 這是一個理解這一點的例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 公共水果{
公共靜態無效主要字符串[ ]參數){
ArrayList < String >名稱= new ArrayList < String >();
名字 添加 蘋果 );
名字 添加 鱷梨 );
名字 添加 櫻桃 );
名字 添加 獼猴桃 );
名字 添加 橙子 );
名字 添加 香蕉 );
名字 添加 獼猴桃 );
系統 出來 println (名稱);
}
}

輸出如下:

[蘋果、鱷梨、櫻桃、獼猴桃、橙子、香蕉、獼猴桃]

通過輸出,您可以檢查 Array List 是否保持原始插入順序並允許重複。 雖然沒有排序。

Vector:也使用隨機訪問方法,是同步的,並提供對線程安全的支持。

讓我們通過一個例子來理解這一點:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 公共水果{
公共靜態無效主要字符串[ ]參數){
ArrayList < String > names = newvector < String >();
名字 添加 獼猴桃 );
名字 添加 橙子 );
名字 添加 香蕉 );
名字 添加 蘋果 );
名字 添加 鱷梨 );
名字 添加 櫻桃 );
名字 添加 獼猴桃 );
系統 出來 println (名稱);
}
}

輸出如下:

[獼猴桃、橙子、香蕉、蘋果、鱷梨、櫻桃、獼猴桃]

向量列表遵循原始插入順序,也支持重複。

鍊錶:也是刪除和插入的理想選擇,元素是雙鏈的,但性能慢。

鍊錶示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 公共水果{
公共靜態無效主要字符串[ ]參數){
ArrayList < String > names = newvector < String >();
名字 添加 獼猴桃 );
名字 添加 橙子 );
名字 添加 香蕉 );
名字 添加 蘋果 );
名字 添加 鱷梨 );
名字 添加 櫻桃 );
名字 添加 獼猴桃 );
系統 出來 println (名稱);
}
}

輸出如下:

[蘋果、鱷梨、櫻桃、獼猴桃、橙子、香蕉、獼猴桃]

它還遵循原始插入順序並接受重複項。

108. Java中的collection和collection的主要區別是什麼?

主要區別如下:

  • 集合表示一個接口,而 Collections 只是類。
  • Collection 接口提供了多種功能,用於將數據結構化為 List、Set 和 Queue。 而 Collection 類的主要目的僅限於對集合的元素進行排序和同步。

109. 解釋優先隊列。

Priority Queue 定義了用於處理鍊錶的隊列接口,目的是實現 Priority-in 和 Priority-out。 隊列一般遵循先進先出(FIFO)算法,您仍然可以根據具體要求對元素進行排隊,然後我們可以實現 PriorityQueue 進行定制。 使用優先級隊列,它自然地或通過比較器的相對優先級取決於優先級堆。

110、什麼時候使用和比較Java中的Runnable接口比較理想?

當我們需要用其他類而不是線程來擴展一個類時,可運行接口是一個理想的選擇。

111.線程類的start()和run()方法有什麼區別?

start() 方法添加並創建一個新線程。 run() 方法中的代碼僅在新線程中執行。 而 run() 方法只會在當前線程中執行代碼。

112.什麼是多線程?

在Java中,我們可以同時執行多個線程,這就是所謂的多線程。 它有助於程序進行多任務處理,同時佔用更少的內存並提供更高的性能。 在多線程中,線程是輕量級的,共享相同的空間,並且在各個方面都相當實惠。

113.解釋進程和線程的區別。

這裡的主要區別是:

  • 正在執行的 Java 程序稱為進程,而線程僅代表進程的子集。
  • 進程代表內存中的不同空間,而線程具有相同的地址。
  • 進程是完全獨立的,而線程只是進程的一部分。
  • 進程間通信慢,而線程間通信快。

114.解釋線程間通信的含義。

線程間通信被定義為允許多個同步線程之間通信的進程。 它的主要目的是避免 Java 中的線程池。 通信是通過wait()、notify()和notifyAll()方法實現的。

115.解釋wait()方法。

使用 wait() 方法,您可以允許線程處於等待階段,而另一個線程被鎖定在對像上。 因此,wait() 方法可以為線程增加顯著的等待時間。

以下是表示這一點的語法:

 1
2
3
4
5
6
 公共靜態無效主要字符串[]參數){
線程 t =線程(); 開始();
同步( t ) {
等待();
}

116、Java中notify()和notifyAll()方法的主要區別是什麼?

notify() 方法發送一個信號以僅喚醒等待池中的特定線程,而 notifyAll() 喚醒池中等待階段的所有線程。

117.定義sleep()和wait()的主要區別。

Sleep() 通過在不釋放鎖的情況下暫停執行特定持續時間來暫停或停止當前線程進度。 而 wait() 在調用 notify() 方法以便稍後喚醒後會導致線程等待持續時間。

118. 解釋與 Java 中的線程相關的 join() 方法。

join() 方法允許將一個線程與連續線程之一結合起來。 這是 join() 方法的語法:

 1
2
3
4
5
 公共靜態無效主要字符串[]參數){
線程 t =線程(); 開始(); 加入();
}

119.解釋Thread的Yield方法。

Yield 方法是一種靜態方法,不會釋放線程中的任何鎖。 在這裡,Yield() 方法將當前線程授權給更可運行的線程,同時允許其他線程保持執行。 因此,同等線程優先級的線程可以定期運行。

120.什麼是飢餓階段?

飢餓是線程無法訪問共享資源並且無法取得任何進展的階段。

121.什麼是線程死鎖?

死鎖定義了兩個或多個線程在等待對方時永遠被阻塞的階段。

122.在Java中定義序列化和反序列化?

序列化是將對象的狀態轉換為非常適合 JPA、JMS、RMI、JPA 和 Hibernate 技術的特定字節流的過程。 而將字節流更改為對象的相反過程稱為反序列化。 這兩個過程都是平台無關的,因此它們允許您在一個平台上序列化並有效地反序列化到一個完全不同的平台。

123.瞬態變量的重要性是什麼?

瞬態變量的重要性在於設置為默認變量而不與靜態變量一起使用的反序列化。

124.什麼是volatile變量?

易失性變量在避免線程緩存內存的同時,在同步和讀取主內存中起著至關重要的作用。

125.什麼是SerialVersionUID?

在序列化過程中,對像被標記為相應對像類的特定版本 ID 號。 這個數字被稱為 SerialVersionUID,在反序列化過程中的驗證中起著至關重要的作用,分別檢查發送方和接收方的兼容性。

126、Java中克隆對象的過程是怎樣的?

使用對象克隆,您可以創建原始對象的精確副本。 為了使克隆成為可能,一個類必須支持使用 java.lang.Cloneable 接口進行克隆,並允許覆蓋原始對像類的 clone() 方法。

這裡是 clone() 方法的簡單語法:

受保護的對象 clone() 拋出 CloneNotSupportedException

如果克隆沒有實現它,那麼它通常會拋出帶有“CloneNotSupportedException”的異常。

127.為每個類定義保持超類的類?

對像類。

128.定義一個字符串類是可變的還是不可變的?

String 類代表一個不可變的狀態。 因此,一旦創建了一個對象,就不能再改變了。

129.如何區分StringBuffer和StringBuilder類?

  • StringBuilder 比 StringBuffer 快。
  • StringBuffer 已同步,而 StringBuilder 未同步。
  • StringBuffer 提供了一個線程安全的環境,而 StringBuilder 沒有線程安全的能力。

130、Java中toString()方法有什麼用?

在 Java 中,toString() 從任何對像中檢索或返回字符串表示。

131、什麼是Java中的垃圾回收?

當對象通過操作符動態分配時,Java 系統還會自動處理內存的釋放,以防在很長一段時間內沒有對對象的引用。 這種保持系統沒有無用對象的過程在 Java 中稱為垃圾收集。 垃圾收集的主要目的是使其更有效地管理內存。

132.垃圾收集器為特定對象調用finalize()方法的次數是多少?

您只能在垃圾收集中調用 finalize() 方法一次。

133.定義調用垃圾收集的方式。

有兩種調用垃圾收集的方法:

  • 系統.gc()
  • Runtime.getRuntime().gc()

134.我們可以強制垃圾收集嗎?

不,這是一個自動過程。 您可以調用垃圾收集方法,但不能強制它。 儘管如此,它並不能保證它會是完整的。

135. Java中有哪些不同的數據類型? 解釋。

以下是幫助您處理數據類型的候選清單:

  • 字節 – 8 位
  • 短 – 16 位
  • char – 16 位 Unicode
  • int – 32 位(整數)
  • float – 32 位(實數)
  • long – 64 位(單精度)
  • double – 64 位(雙精度)

136. 定義統一碼。

Unicode 是在人類語言中定義國際字符的一種方式,Java 使用這種 Unicode 結構來符號化字符。

137. 定義字面量。

文字是分配給特定變量的常量值

// 這裡 105 是一個字面量

整數 = 105

138.在Java中定義類型轉換?

在將一種數據類型的值分配給另一種數據類型的情況下,這兩者可能兼容也可能不兼容,需要轉換。 如果數據類型兼容,Java 會自動轉換。 而如果數據類型不兼容,則必須強制轉換才能成功轉換。 強制轉換有兩種基本類型:隱式和顯式。

139.解釋兩種不同類型的類型轉換?

  • 隱式:定義將值從較小數據類型存儲到較大數據類型,僅由編譯器執行。
  • 顯式:定義將較大數據類型中的值存儲到可能導致信息丟失的較小數據類型中。

結論

以上Java面試題將為準備面試提供一個良好的開端。 不過,也要練習你的編碼技能,並確保對這些問題及其相關概念進行透徹,這樣當面試官發出 Q 時,你就可以用你的 A 贏得一輪了。哦,別忘了 3當你在面試官面前展示自己時(不顯眼的)呼吸。

如果您有興趣了解有關 Java、全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的軟件開發執行 PG 計劃——全棧開發專業化,專為工作專業人士設計,提供 500 多個小時的嚴格培訓, 9+ 項目和任務,IIIT-B 校友身份,實用的實踐頂點項目和頂級公司的工作協助。

一切順利! 希望你能完成你的面試!!

踏上夢想的工作

申請 upGrad 的軟件工程與工作相關的 PG 認證