
Java 教程
- Java - 首頁
- Java - 概述
- Java - 歷史
- Java - 特性
- Java 與 C++ 對比
- JVM - Java 虛擬機器
- Java - JDK、JRE 和 JVM 的區別
- Java - Hello World 程式
- Java - 環境搭建
- Java - 基本語法
- Java - 變數型別
- Java - 資料型別
- Java - 型別轉換
- Java - Unicode 系統
- Java - 基本運算子
- Java - 註釋
- Java - 使用者輸入
- Java - 日期與時間
Java 控制語句
- Java - 迴圈控制
- Java - 決策機制
- Java - if-else 語句
- Java - switch 語句
- Java - for 迴圈
- Java - 增強 for 迴圈
- Java - while 迴圈
- Java - do-while 迴圈
- Java - break 語句
- Java - continue 語句
面向物件程式設計
- Java - 面向物件程式設計 (OOP) 概念
- Java - 物件與類
- Java - 類屬性
- Java - 類方法
- Java - 方法
- Java - 變數作用域
- Java - 建構函式
- Java - 訪問修飾符
- Java - 繼承
- Java - 聚合
- Java - 多型
- Java - 方法重寫
- Java - 方法過載
- Java - 動態繫結
- Java - 靜態繫結
- Java - 例項初始化塊
- Java - 抽象
- Java - 封裝
- Java - 介面
- Java - 包
- Java - 內部類
- Java - 靜態類
- Java - 匿名類
- Java - 單例類
- Java - 包裝類
- Java - 列舉
- Java - 列舉建構函式
- Java - 列舉字串
Java 內建類
Java 檔案處理
Java 錯誤與異常
- Java - 異常
- Java - try-catch 塊
- Java - try-with-resources 語句
- Java - 多重 catch 塊
- Java - 巢狀 try 塊
- Java - finally 塊
- Java - throw 異常
- Java - 異常傳播
- Java - 內建異常
- Java - 自定義異常
Java 多執行緒
- Java - 多執行緒
- Java - 執行緒生命週期
- Java - 建立執行緒
- Java - 啟動執行緒
- Java - 執行緒連線
- Java - 執行緒命名
- Java - 執行緒排程器
- Java - 執行緒池
- Java - 主執行緒
- Java - 執行緒優先順序
- Java - 守護執行緒
- Java - 執行緒組
- Java - 關閉鉤子
Java 同步
Java 網路程式設計
- Java - 網路程式設計
- Java - Socket 程式設計
- Java - URL 處理
- Java - URL 類
- Java - URLConnection 類
- Java - HttpURLConnection 類
- Java - Socket 類
- Java - 泛型
Java 集合
Java 介面
Java 資料結構
Java 集合演算法
高階 Java
- Java - 命令列引數
- Java - Lambda 表示式
- Java - 傳送郵件
- Java - Applet 基礎
- Java - Javadoc 註釋
- Java - 自動裝箱和拆箱
- Java - 檔案不匹配方法
- Java - REPL (JShell)
- Java - 多版本 Jar 檔案
- Java - 私有介面方法
- Java - 內部類菱形運算子
- Java - 多解析度影像 API
- Java - 集合工廠方法
- Java - 模組系統
- Java - Nashorn JavaScript
- Java - Optional 類
- Java - 方法引用
- Java - 函式式介面
- Java - 預設方法
- Java - Base64 編碼解碼
- Java - switch 表示式
- Java - Teeing 收集器
- Java - 微基準測試
- Java - 文字塊
- Java - 動態 CDS 歸檔
- Java - Z 垃圾收集器 (ZGC)
- Java - 空指標異常
- Java - 打包工具
- Java - 密封類
- Java - 記錄類
- Java - 隱藏類
- Java - 模式匹配
- Java - 簡潔數字格式化
- Java - 垃圾回收
- Java - JIT 編譯器
Java 其他
- Java - 遞迴
- Java - 正則表示式
- Java - 序列化
- Java - 字串
- Java - Process API 增強
- Java - Stream API 增強
- Java - 增強型 @Deprecated 註解
- Java - CompletableFuture API 增強
- Java - 流
- Java - 日期時間 API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java API 與框架
Java 類引用
- Java - Scanner 類
- Java - 陣列
- Java - 字串
- Java - Date 類
- Java - ArrayList 類
- Java - Vector 類
- Java - Stack 類
- Java - PriorityQueue 類
- Java - LinkedList 類
- Java - ArrayDeque 類
- Java - HashMap 類
- Java - LinkedHashMap 類
- Java - WeakHashMap 類
- Java - EnumMap 類
- Java - TreeMap 類
- Java - IdentityHashMap 類
- Java - HashSet 類
- Java - EnumSet 類
- Java - LinkedHashSet 類
- Java - TreeSet 類
- Java - BitSet 類
- Java - Dictionary 類
- Java - Hashtable 類
- Java - Properties 類
- Java - Collection 類
- Java - Array 類
Java 有用資源
Java 面試題及答案
如果您正在尋找 Java 面試題?我們在這裡幫助您,透過 200 多道面試題及答案來增強您對 Java 程式語言的瞭解。讓我們首先了解什麼是 Java。
什麼是 Java?
Java 程式語言最初由 Sun Microsystems 開發,由 James Gosling 發起,於 1995 年作為 Sun Microsystems Java 平臺 (Java 1.0 [J2SE]) 的核心元件釋出。Java 標準版的最新版本是 Java SE 8。隨著 Java 的發展及其廣泛的普及,構建了多個配置以適應各種型別的平臺。例如,用於企業應用程式的 J2EE 和用於移動應用程式的 J2ME。
核心和高階 Java 的面試題及答案
查詢包含答案的 200 多個重要的 Java 面試題列表。這些**Java 面試題基於核心和高階 Java 程式設計**主題,例如核心 Java 概念、面向物件程式設計 (OOP)、Java 集合框架、多執行緒、Java I/O、異常處理、Java 記憶體管理、Java 註解、Java 設計模式、Java 流 API、JDBC等等。這些 Java 面試問題由學科專家準備,學生和開發人員可以練習、學習並被頂級 IT 公司選中。
我們將這些問題分為 3 個部分。讓我們練習一下**Java 程式語言的面試題及答案**
Java 面試題及答案(應屆畢業生)
1. 你對 Java 有哪些瞭解?
Java 是一種高階程式語言,最初由 Sun Microsystems 開發,於 1995 年釋出。Java 執行在各種平臺上,例如 Windows、Mac OS 和各種版本的 UNIX。
2. Java 程式語言支援哪些平臺?
Java 執行在各種平臺上,例如 Windows、Mac OS 和各種版本的 UNIX/Linux,例如 HP-Unix、Sun Solaris、Redhat Linux、Ubuntu、CentOS 等。
3. 列出 Java 的五個特性?
一些特性包括面向物件、平臺無關性、健壯性、解釋型、多執行緒
另請閱讀:Java 特性
4. 為什麼 Java 是架構中立的?
它的編譯器生成架構中立的物件檔案格式,這使得編譯後的程式碼可以在許多處理器上執行,前提是有 Java 執行時系統。
5. Java 如何實現高效能?
Java 使用 Just-In-Time 編譯器來實現高效能。Just-In-Time 編譯器是一個程式,它將 Java 位元組碼(包含必須解釋的指令的程式)轉換為可以直接傳送到處理器的指令。
6. 為什麼 Java 被認為是動態的?
它被設計為適應不斷變化的環境。Java程式可以攜帶大量的執行時資訊,這些資訊可以用於在執行時驗證和解決對物件的訪問。
7. 什麼是Java虛擬機器,如何在Java的平臺無關性特性中考慮它?
當Java被編譯時,它不是編譯成特定平臺的機器碼,而是編譯成平臺無關的位元組碼。此位元組碼透過網路分發,並由Java虛擬機器 (JVM)在任何執行它的平臺上解釋執行。
8. 列出兩個Java IDE?
兩個重要且常用的Java IDE是Netbeans和Eclipse。
9. 列出一些Java關鍵字(與C、C++關鍵字不同)?
一些Java關鍵字是import、super、finally等。
10. 物件是什麼意思?
物件是一個執行時實體,它的狀態儲存在欄位中,行為透過方法展現。方法操作物件的內部狀態,並作為物件間通訊的主要機制。
11. 定義類?
類是一個藍圖,從中建立單個物件。類可以包含欄位和方法來描述物件的行為。
另請閱讀:Java - 類和物件
12. 一個類可以包含哪些型別的變數?
一個類包含區域性變數、例項變數和類變數。
另請閱讀:Java變數型別
13. 什麼是區域性變數?
在方法、建構函式或程式碼塊內部定義的變數稱為區域性變數。變數將在方法內宣告和初始化,並在方法完成時銷燬。
14. 什麼是例項變數?
例項變數是在類內但任何方法之外的變數。這些變數在類載入時例項化。
15. 什麼是類變數?
這些變數是在類中宣告的,在任何方法之外,使用static關鍵字。
16. 什麼是單例類?
單例類控制物件的建立,將數量限制為一個,但如果情況發生變化,則允許靈活地建立更多物件。
17. 建構函式是什麼意思?
Java建構函式在建立新物件時被呼叫。每個類都有一個建構函式。如果我們沒有顯式地為類編寫建構函式,Java編譯器將為該類構建一個預設建構函式。
18. 列出為類建立物件的三個步驟?
首先宣告物件,然後例項化,最後初始化。
19. Java中byte資料型別的預設值是什麼?
byte資料型別的預設值為0。另請閱讀:Java資料型別
20. Java中float和double資料型別的預設值是什麼?
在Java中,float的預設值是0.0f,double的預設值是0.0d。
21. 何時使用byte資料型別?
byte資料型別用於在大型陣列中節省空間,主要用於代替整數,因為byte的大小是int的四分之一。
22. 什麼是靜態變數?
類變數也稱為靜態變數,在類中宣告,但在方法、建構函式或程式碼塊之外,使用static關鍵字。
23. 訪問修飾符是什麼意思?
Java提供訪問修飾符來設定類、變數、方法和建構函式的訪問級別。當沒有指定訪問修飾符時,成員具有包或預設訪問許可權。
24. 什麼是protected訪問修飾符?
在超類中宣告為protected的變數、方法和建構函式只能被其他包中的子類或protected成員類的包內的任何類訪問。
25. 同步非訪問修飾符是什麼意思?
Java提供這些修飾符來提供除訪問修飾符之外的功能,synchronized用於指示方法一次只能被一個執行緒訪問。
26. 根據Java運算子優先順序,哪個運算子具有最高的優先順序?
字尾運算子,即 () [] . 具有最高的優先順序。
27. switch語句中使用的變數可以使用哪些資料型別?
switch語句中使用的變數只能是字串、列舉、byte、short、int或char。
28. 何時可以使用parseInt()方法?
Java parseInt() 方法用於獲取特定字串的原始資料型別。
29. 為什麼String類被認為是不可變的?
Java String類是不可變的,因此一旦建立了String物件,就不能更改它。由於String是不可變的,因此可以安全地在多個執行緒之間共享它,這對於多執行緒程式設計非常重要。
30. 為什麼StringBuffer被稱為可變的?
Java String類被認為是不可變的,因此一旦建立了String物件,就不能更改它。如果需要對字串字元進行大量修改,則應使用StringBuffer。
31. StringBuffer和StringBuilder類的區別是什麼?
儘可能使用StringBuilder,因為它比StringBuffer更快。但是,如果需要執行緒安全,則使用StringBuffer物件。
32. 使用哪個包進行正則表示式的模式匹配?
java.util.regex包用於使用正則表示式進行模式匹配。
33. java.util.regex包含哪些類?
java.util.regex包含三個類:Pattern類、Matcher類和PatternSyntaxException類。
34. 什麼是finalize()方法?
可以定義一個方法,在垃圾收集器最終銷燬物件之前呼叫該方法。此方法稱為finalize(),它可用於確保物件乾淨地終止。
35. 什麼是異常?
一個異常是在程式執行期間出現的錯誤。異常由位於執行緒方法呼叫堆疊中的處理程式捕獲。
36. 檢查異常是什麼意思?
這是一種通常是使用者錯誤或程式設計師無法預見的錯誤的異常。例如,如果要開啟檔案,但找不到檔案,則會發生異常。這些異常在編譯時不能簡單地忽略。
37. 解釋執行時異常?
這是可能由程式設計師避免的異常。與檢查異常相反,執行時異常在編譯時被忽略。
38. Exception類下有兩個子類?
Exception類有兩個主要的子類:IOException類和RuntimeException類。
39. 何時使用throws關鍵字?
如果方法不處理檢查異常,則方法必須使用throws關鍵字宣告它。throws關鍵字出現在方法簽名的末尾。
40. 何時使用throw關鍵字?
可以使用throw關鍵字丟擲異常,無論是新例項化的異常還是剛剛捕獲的異常。
41. finally如何在異常處理中使用?
finally關鍵字用於建立一個在try塊之後執行的程式碼塊。finally程式碼塊始終執行,無論是否發生異常。
42. 在Java中建立自己的異常時應注意哪些事項?
建立自己的異常時:
所有異常都必須是Throwable的子類。
如果要編寫由Handle or Declare規則自動強制執行的檢查異常,則需要擴充套件Exception類。
如果要編寫執行時異常,則需要擴充套件RuntimeException類。
43. 定義繼承?
繼承是一個物件獲取另一個物件屬性的過程。透過繼承,資訊以分層順序進行管理。
44. 何時使用super關鍵字?
如果方法覆蓋了其超類的方法之一,則可以透過使用關鍵字super來呼叫被覆蓋的方法。它還可以用來引用隱藏的欄位。
45. 什麼是多型性?
多型性是物件能夠採用多種形式的能力。OOP中多型性的最常見用法是當父類引用用於引用子類物件時。
46. 什麼是抽象?
抽象指的是在OOP中使類抽象的能力。它有助於降低複雜性,並提高系統的可維護性。
47. 什麼是抽象類?
這些類不能例項化,並且要麼部分實現,要麼根本沒有實現。此類包含一個或多個抽象方法,這些方法只是沒有主體的方法宣告。
48. 何時使用抽象方法?
如果希望類包含特定方法,但希望子類確定該方法的實際實現,則可以在父類中將該方法宣告為抽象方法。
49. 什麼是封裝?
封裝是將類中的欄位設為私有並透過公共方法訪問欄位的技術。如果欄位宣告為私有,則類外部的任何人都無法訪問它,從而隱藏類中的欄位。因此,封裝也稱為資料隱藏。
50. 封裝的主要好處是什麼?
封裝的主要好處是能夠修改我們已實現的程式碼而不會破壞使用我們程式碼的其他人程式碼的能力。透過這種方式,封裝為我們的程式碼提供了可維護性、靈活性和可擴充套件性。
Java 面試題及答案(經驗豐富者)
51. 什麼是介面?
Java介面是抽象方法的集合。類實現介面,從而繼承介面的抽象方法。
52. 簡述介面的一些特性?
Java 介面的一些特性包括:
介面不能被例項化。
介面不包含任何建構函式。
介面中的所有方法都是抽象的。
53. 定義Java中的包?
Java 包Java 包可以定義為相關型別(類、介面、列舉和註解)的組合,提供訪問保護和名稱空間管理。
54. 為什麼使用包?
在Java中使用包是為了防止命名衝突,控制訪問,使搜尋/定位和使用類、介面、列舉和註解等更容易。
55. 什麼是多執行緒程式?
多執行緒程式包含兩個或多個可以併發執行的部分。程式的每個部分稱為一個執行緒,每個執行緒定義一個單獨的執行路徑。
56. 建立執行緒的兩種方法是什麼?
可以透過以下兩種方式建立執行緒:實現Runnable介面,擴充套件Thread類。
57. 什麼是小應用程式(Applet)?
一個Applet是一個在Web瀏覽器中執行的Java程式。Applet可以是一個功能齊全的Java應用程式,因為它可以使用整個Java API。
58. Applet擴充套件哪個類?
Applet擴充套件java.applet.Applet類。
59. 解釋Java中的垃圾回收?
它使用垃圾回收來釋放記憶體。透過清除不再被程式任何部分引用的物件。
60. 定義不可變物件?
一旦建立,不可變物件就不能更改。
61. 解釋`this()`在建構函式中的用法?
它用於變數或方法,並用於呼叫同一類的建構函式。
62. 解釋Set介面?
Java Set介面是一個元素集合,不能包含重複元素。Set介面只包含從Collection繼承的方法,並增加了禁止重複元素的限制。
63. 解釋TreeSet?
當我們想要按排序順序排列元素時,它是一個Set的實現。
64. 什麼是Comparable介面?
Java Comparable介面用於使用collections.sort()和java.utils對物件的集合和陣列進行排序。實現Comparable介面的類的物件可以排序。
65. throw和throws的區別?
包括:
throw用於觸發異常,而throws用於異常宣告。
不使用throws,則無法處理檢查異常;而使用throws可以傳播檢查異常。
66. **解釋Java程式中使用的以下語句:**
public static void main (String args[ ])
以下是各個部分的解釋:
public - 訪問修飾符。
static - 允許在不例項化類的特定例項的情況下呼叫main()。
void - 向編譯器確認main()不返回值。
main() - 此方法在Java程式開始時呼叫。
String args[ ] - args引數是String類的例項陣列。
67. 定義JRE,即Java執行時環境?
Java執行時環境是Java虛擬機器的實現,用於執行Java程式。它提供了執行Java應用程式的最低要求;
68. 什麼是JAR檔案?
JAR檔案是Java歸檔檔案,它將多個檔案聚合到一個檔案中。它在一個庫中儲存Java類。JAR檔案基於ZIP檔案格式,副檔名為.jar。
69. 什麼是WAR檔案?
這是Web歸檔檔案,用於儲存XML、Java類和JavaServer頁面,用於分發JavaServer Pages、Java Servlets、Java類、XML檔案、靜態Web頁面等的集合。
70. 定義JIT編譯器?
它基於位元組碼提高計算機程式的執行時效能。
71. 面向物件程式語言和基於物件程式語言的區別是什麼?
基於物件的程式語言遵循OOP的所有特性,除了繼承。JavaScript是基於物件程式語言的一個例子。
72. 預設建構函式的用途是什麼?
只有在類中沒有建構函式的情況下,Java編譯器才會建立預設建構函式。
73. 建構函式可以宣告為final嗎?
不可以。
74. 什麼是靜態塊?
它用於初始化靜態資料成員,在類載入時,它在main方法之前執行。
75. 定義組合?
在一個類中持有另一個類的引用被稱為組合。
76. 什麼是方法過載?
如果一個類具有多個名稱相同但引數不同的函式,則稱為方法過載。
77. 什麼是方法重寫?
如果子類提供其父類已提供的方法的特定實現,則稱為方法重寫。
78. 過載和重寫的區別?
方法過載提高了程式的可讀性。方法重寫提供了其超類已提供的方法的特定實現;過載情況下引數必須不同,重寫情況下引數必須相同。
79. 什麼是final類?
建立final類是為了防止該類實現的方法被重寫。它不能被繼承。
80. 什麼是NullPointerException?
當呼叫空物件的例項方法、訪問或修改空物件的欄位等時,會丟擲NullPointerException。
81. 執行緒進入等待狀態的方法有哪些?
執行緒可以透過呼叫其sleep()方法、阻塞IO、嘗試獲取物件的鎖失敗或呼叫物件的wait()方法來進入等待狀態。它還可以透過呼叫其(已棄用)suspend()方法進入等待狀態。
82. 在單CPU計算機上如何實現多執行緒?
作業系統的任務排程程式將執行時間分配給多個任務。透過在執行任務之間快速切換,它可以營造出任務順序執行的印象。
83. 什麼會呼叫執行緒的run()方法?
執行緒啟動後,透過Thread類的start()方法,JVM會線上程首次執行時呼叫執行緒的run()方法。
84. 捕獲FileNotFoundException和IOException的catch語句的順序是否重要?
是的,很重要。FileNotFoundException繼承自IOException。必須先捕獲異常的子類。
85. yield和sleep的區別是什麼?
當任務呼叫其yield()方法時,它返回到就緒狀態。當任務呼叫其sleep()方法時,它返回到等待狀態。
86. 為什麼使用Vector類?
Vector類提供了實現可增長物件陣列的功能。如果您事先不知道陣列的大小,或者只需要一個在程式生命週期內可以更改大小的陣列,那麼Vector非常有用。
87. 表示Unicode、ASCII、UTF-16和UTF-8字元需要多少位?
Unicode需要16位,ASCII需要7位。雖然ASCII字元集只使用7位,但它通常表示為8位。UTF-8使用8位、16位和18位模式表示字元。UTF-16使用16位和更大的位模式。
88. 什麼是包裝類?
這些類允許將基本型別作為物件訪問。例如:Integer、Character、Double、Boolean等。
89. Window和Frame的區別是什麼?
Frame類擴充套件Window來定義一個主應用程式視窗,該視窗可以具有選單欄。
90. 哪個包具有輕量級元件?
javax.Swing包。Swing中的所有元件,除了JApplet、JDialog、JFrame和JWindow都是輕量級元件。
91. paint()和repaint()方法的區別是什麼?
paint()方法透過Graphics物件支援繪畫。repaint()方法用於導致AWT繪畫執行緒呼叫paint()。
92. File類的用途是什麼?
它用於建立提供對本地檔案系統檔案和目錄訪問的物件。
93. Reader/Writer類層次結構和InputStream/OutputStream類層次結構的區別是什麼?
Reader/Writer類層次結構是面向字元的,而InputStream/OutputStream類層次結構是面向位元組的。
94. 應該使用哪個類來獲取物件的設計資訊?
Class類用於獲取有關物件設計的的資訊,java.lang.Class類例項表示正在執行的Java應用程式中的類和介面。
95. 靜態變數和非靜態變數的區別是什麼?
靜態變數與類整體相關,而不是與類的特定例項相關。非靜態變數在每個物件例項中都具有唯一的值。
96. 什麼是序列化和反序列化?
序列化是將物件的狀態寫入位元組流的過程。反序列化是恢復這些物件的過程。
97. 什麼是用例?
它是程式分析的一部分,描述了程式可能遇到的情況以及程式在該情況下應表現出的行為。
98. 解釋在Java程式中使用子類的作用?
子類繼承所有公共和受保護的方法及其實現。它還繼承所有預設修飾符方法及其實現。
99. 如何為選單項新增選單快捷鍵?
如果有一個名為b1的按鈕例項,您可以透過呼叫b1.setMnemonic('F')來新增選單快捷鍵,這樣使用者就可以使用Alt+F來單擊按鈕。
100. 你可以編寫一個既可以用作Applet又可以用作應用程式的Java類嗎?
可以,只需向Applet新增一個main()方法即可。
高階 Java 面試題及答案
101. Swing和AWT元件的區別是什麼?
AWT元件是重量級的,而Swing元件是輕量級的。重量級元件依賴於本地視窗工具包。例如,java.awt.Button是一個重量級元件,當它在Unix平臺的Java平臺上執行時,它對映到一個真實的Motif按鈕。
102. 建構函式和其他方法的區別是什麼?
建構函式必須與類名相同,並且不能返回值。它們只被呼叫一次,而普通方法可以被呼叫多次。
103. 使用繼承有什麼限制嗎?
是的,由於繼承繼承了超類和介面中的所有內容,因此它可能使子類過於複雜,並且在某些情況下動態覆蓋或動態過載時容易出錯。
104. 何時丟擲 ArrayStoreException?
在不同陣列之間複製元素時,如果源或目標引數不是陣列或它們的型別不相容,則會丟擲 ArrayStoreException。
105. 如果一個類有多個建構函式,可以從一個建構函式呼叫另一個建構函式嗎?
可以,使用 this() 語法。
106. sleep() 方法和 wait() 方法有什麼區別?
程式碼 sleep(2000); 將執行緒擱置整整兩秒鐘。程式碼 wait(2000); 導致最多等待兩秒鐘。如果執行緒接收到 notify() 或 notifyAll() 呼叫,則執行緒可以提前停止等待。wait() 方法定義在 Object 類中,sleep() 方法定義在 Thread 類中。
107. 何時丟擲 ArithmeticException?
當整數除以零或取一個數對零的餘數時,會丟擲 ArithmeticException。浮點運算中永遠不會丟擲此異常。
108. 什麼是 transient 變數?
transient 變數是在序列化期間可能不會被序列化的變數,在反序列化期間,它將被其預設值初始化。
109. 什麼是同步?
同步是指控制多個執行緒訪問共享資源的能力。Java 中的 synchronized 關鍵字提供鎖定機制,確保對共享資源的互斥訪問,並防止資料競爭。
110. 什麼是 Collections API?
Collections API 是一組支援對物件集合進行操作的類和介面。
111. 垃圾回收是否保證程式不會記憶體溢位?
垃圾回收不能保證程式不會記憶體溢位。程式有可能比垃圾回收更快地耗盡記憶體資源。程式也可能建立不受垃圾回收影響的物件。
112. Applet 類的直接父類是什麼?
Panel 是它的直接父類。面板提供了一個空間,應用程式可以在其中附加任何其他元件,包括其他面板。
113. 哪個 Java 運算子是右結合的?
= 運算子是右結合的。
114. break 語句和 continue 語句有什麼區別?
break 語句導致終止其所應用的語句(switch、for、do 或 while)。continue 語句用於結束當前迴圈迭代並將控制權返回給迴圈語句。
115. 如果一個變數宣告為 private,可以在哪裡訪問該變數?
私有變數只能在其宣告的類中訪問。
116. System 類的用途是什麼?
System 類的用途是提供對系統資源的訪問。
117. 列出 Java 的基本資料型別?
八種基本型別是 byte、char、short、int、long、float、double 和 boolean。
118. AWT 中的裁剪和重繪之間有什麼關係?
當 AWT 繪圖執行緒重繪視窗時,它會將裁剪區域設定為需要重繪的視窗區域。
119. Container 類的直接父類是哪個類?
Component 類是它的直接父類。
120. Java 執行時系統會生成哪一類異常?
Java 執行時系統會生成 RuntimeException 和 Error 異常。
121. 在什麼條件下,垃圾收集器會呼叫物件的 finalize() 方法?
當垃圾收集器檢測到物件已變得不可達時,它會呼叫物件的 finalize() 方法。
122. 如何重新啟動一個已終止的執行緒?
已終止的執行緒無法重新啟動。
123. 哪些算術運算可能導致丟擲 ArithmeticException?
整數的 / 和 % 運算可能導致丟擲 ArithmeticException。
124. boolean 型別的變數會自動初始化為?
boolean 型別的預設值為 false。
125. try 語句可以巢狀嗎?
可以
126. 什麼是 ClassLoaders?
類載入器是一個負責載入類的物件。ClassLoader 類是一個抽象類。
127. 介面和抽象類有什麼區別?
抽象類可以具有實現預設行為的例項方法。介面只能宣告常量和例項方法,但不能實現預設行為,所有方法都是隱式抽象的。介面的所有成員都是公共的,並且沒有實現。
128. 如果從 main 方法的簽名中刪除 static 修飾符會發生什麼?
程式在執行時丟擲“NoSuchMethodError”錯誤。
129. 宣告為例項變數的物件引用的預設值是什麼?
Null,除非顯式定義。
130. 頂級類可以是私有的或受保護的嗎?
不可以,頂級類不能是私有的或受保護的。它可以具有“public”修飾符或沒有修飾符。
131. 為什麼我們需要包裝類?
我們可以將它們作為方法引數傳遞,其中方法期望一個物件。包裝類還提供了實用程式方法。包裝類
132. 錯誤和異常有什麼區別?
錯誤是在執行時發生的不可恢復的條件。例如 OutOfMemory 錯誤。異常是由於錯誤輸入等原因發生的條件。例如,如果指定的檔案不存在,則會丟擲 FileNotFoundException。
133. 是否每個 try 塊都必須後跟一個 catch 塊?
每個 try 塊都不必後跟一個 catch 塊。它應該後跟一個 catch 塊或一個 finally 塊。
134. 建立並啟動執行緒後,其初始狀態是什麼?
執行緒在建立並啟動後的初始狀態為就緒狀態。
135. 什麼是 Locale 類?
Locale 類用於根據特定地理、政治或文化區域的約定調整程式輸出。
136. 什麼是同步方法和同步語句?
同步方法是用於控制對物件的訪問的方法。只有在執行緒獲取同步語句中引用的物件或類的鎖後,才能執行同步語句。
137. 什麼是執行時多型性或動態方法分派?
執行時多型性或動態方法分派是一個過程,其中對重寫方法的呼叫是在執行時而不是編譯時解析的。在這個過程中,重寫方法是透過超類的引用變數呼叫的。
138. 什麼是動態繫結(後期繫結)?
繫結是指將過程呼叫連結到響應呼叫而要執行的程式碼。動態繫結意味著直到執行時呼叫時才知曉與給定過程呼叫關聯的程式碼。
139. 建構函式可以繼承嗎?
不可以,建構函式不能繼承。
140. ArrayList 相對於陣列的優勢是什麼?
ArrayList 可以動態增長,並提供比陣列更強大的插入和搜尋機制。
141. 為什麼 LinkedList 中的刪除速度比 ArrayList 快?
在連結串列中刪除速度很快,因為它只需要更新被刪除節點之前節點的 next 指標和被刪除節點之後節點的 previous 指標。
142. 如何決定何時使用 ArrayList 和 LinkedList?
如果需要頻繁地從列表中間新增和刪除元素,並且只順序訪問列表元素,則應該使用 LinkedList。如果需要支援隨機訪問,而無需從末尾以外的任何位置插入或刪除元素,則應使用 ArrayList。
143. 什麼是 Values 集合檢視?
這是 Map 介面的 values() 方法返回的集合,它包含對映中作為值存在的所有物件。
144. 什麼是點運算子?
點運算子 (.) 用於訪問類物件的例項變數和方法。它也用於訪問包中的類和子包。
145. 在哪裡以及如何使用私有建構函式?
如果不想讓其他類例項化物件並防止子類化,則使用私有建構函式。
146. 什麼是型別轉換?
型別轉換意味著將一種型別的變數視為另一種型別。
147. 描述執行緒的生命週期?
執行緒是程式中的一個執行單元。執行緒的生命週期包括:
- 新建狀態
- 可執行狀態
- 執行狀態
- 阻塞狀態
- 死亡狀態
148. >> 和 >>> 運算子有什麼區別?
>> 運算子在右移時會攜帶符號位。>>> 運算子會用零填充已移出的位。
149. Component 類的哪個方法用於設定元件的位置和大小?
setBounds() 方法用於此目的。
150. short 型別的範圍是多少?
short 型別的範圍是 -(2^15) 到 2^15 - 1。
151. Menu 的直接父類是什麼?
MenuItem 類
152. Java 允許預設引數嗎?
不,Java 不允許預設引數。
153. Java 中以 0 開頭的數字表示什麼?
Java 中以 0 開頭的數字表示八進位制數,例如:06
154. Java 中以 0x 或 0X 開頭的數字表示什麼?
Java 中以 0x 或 0X 開頭的數字表示十六進位制數,例如:0XF
155. break 語句可以在 Java 中用作標籤嗎?
可以,例如:break one;
156. import 語句在 Java 程式中在哪裡使用?
import 語句允許在程式檔案的開頭,在 package 語句之後使用。
157. 解釋 Thread 類中的 suspend() 方法?
它用於暫停或暫時停止執行緒的執行。
158. 解釋 Thread 類中的 isAlive() 方法?
它用於找出執行緒是否仍在執行。
159. 什麼是 currentThread()?
它是一個公共靜態方法,用於獲取對當前執行緒的引用。
160. 解釋 Thread 類執行中的主執行緒?
主執行緒是自動建立的,當程式啟動時它會立即開始執行。它是所有其他子執行緒的起源執行緒。
161. Applet 的生命週期包括哪些步驟?
生命週期包括以下步驟:
初始化
啟動
停止
銷燬
繪製
162. Applet 中 init() 方法的作用是什麼?
它初始化 Applet,並且是第一個被呼叫的方法。
163. Applet 類使用哪種方法載入影像?
使用 getImage(URL 物件, 檔名) 方法。
164. 將程式碼定義為 Applet 的屬性?
它用於指定 Applet 類的名稱。
165. 定義畫布?
它是一個簡單的繪圖表面,用於繪製圖像或執行其他圖形操作。
166. 定義網路程式設計?
它指的是編寫跨多個裝置(計算機)執行的程式,其中所有裝置都透過網路相互連線。
167. 什麼是套接字 (Socket)?
套接字使用 TCP 提供兩臺計算機之間的通訊機制。客戶端程式在其通訊端建立一個套接字,並嘗試將該套接字連線到伺服器。
168. Java 套接字的優點?
套接字靈活且足夠。可以輕鬆實現基於套接字的高效程式設計以進行一般通訊。它會導致低網路流量。
169. Java 套接字的缺點?
基於套接字的通訊僅允許在應用程式之間傳送原始資料包。客戶端和伺服器端都必須提供機制才能以任何方式使資料有用。
170. 伺服器應用程式使用哪個類來獲取埠並偵聽客戶端請求?
java.net.ServerSocket 類用於伺服器應用程式獲取埠並偵聽客戶端請求。
171. 哪個類表示客戶端和伺服器都用於相互通訊的套接字?
java.net.Socket 類表示客戶端和伺服器都用於相互通訊的套接字。
172. 為什麼在 Java 中使用泛型?
泛型提供編譯時型別安全,允許程式設計師在編譯時捕獲無效型別。Java 泛型方法和泛型類使程式設計師能夠使用單個方法宣告指定一組相關方法,或者使用單個類宣告指定一組相關型別。
173. 為能夠執行 Java 程式,我需要在我的機器上設定哪些環境變數?
CLASSPATH 和 PATH 是兩個變數。
174. 是否需要匯入 java.lang 包?
不需要匯入此包。JVM 預設情況下會在內部載入它。
175. 什麼是巢狀頂級類?
如果在類中宣告一個類並指定 static 修飾符,則編譯器會像對待任何其他頂級類一樣對待該類。巢狀頂級類是內部類。
176. 什麼是 Externalizable 介面?
Externalizable 是一個介面,其中包含兩個方法 readExternal 和 writeExternal。這些方法使您可以控制序列化機制。
177. 如果在 try 塊的末尾編寫 System.exit(0);,finally 塊是否仍會執行?
在這種情況下,finally 塊不會執行,因為當你說 System.exit(0); 時,控制會立即退出程式,因此 finally 從未執行。
178. 什麼是守護執行緒?
守護執行緒是低優先順序執行緒,它在後臺間歇性地執行,為 Java 執行時系統執行垃圾收集操作。
179. 使用哪種方法建立守護執行緒?
使用 setDaemon 方法建立守護執行緒。
180. 所有執行緒都必須實現哪種方法?
所有任務都必須實現 run() 方法。
181. 什麼是 GregorianCalendar 類?
GregorianCalendar 提供對傳統西方日曆的支援。
182. 什麼是 SimpleTimeZone 類?
SimpleTimeZone 類提供對格里高利曆的支援。
183. Vector 的大小和容量之間有什麼區別?
大小是向量中實際儲存的元素數量,而容量是在給定時間例項它可以儲存的元素的最大數量。
184. Vector 可以包含異構物件嗎?
是的,Vector 可以包含異構物件。因為 Vector 將所有內容都儲存為 Object。
185. 什麼是列舉?
列舉是一個介面,其中包含用於訪問獲取列舉的底層資料結構的方法。它允許順序訪問集合中儲存的所有元素。
186. Path 和 Classpath 之間有什麼區別?
Path 和 Classpath 是作業系統級別的環境變數。Path 定義了系統可以在哪裡找到可執行檔案(.exe),而 classpath 用於指定 .class 檔案的位置。
187. 宣告為私有的類可以在其包之外訪問嗎?
不可以,它不能在其包之外訪問。
188. 對靜態方法或靜態程式碼塊施加了哪些限制?
靜態方法不應在不建立例項的情況下引用例項變數,並且不能使用“this”運算子來引用例項。
189. 介面可以擴充套件另一個介面嗎?
是的,介面可以繼承另一個介面,而且介面可以擴充套件多個介面。
190. 使用過載和重寫實現了哪個面向物件的概念?
多型性
191. 什麼是物件的鎖,哪些物件有鎖?
物件的鎖是一種機制,多個執行緒使用它來獲得對物件的同步訪問。執行緒只有在獲取物件的鎖後才能執行物件的同步方法。
192. 什麼是向下轉型?
它是從一般型別到更具體型別的強制型別轉換,即向下轉型。
193. 優先順序順序和結合性是什麼,它們是如何使用的?
優先順序順序決定了在表示式中運算子的計算順序。結合性決定了表示式是從左到右還是從右到左計算。
194. 如果一個方法被宣告為 protected,可以在哪裡訪問該方法?
受保護的方法只能被同一包中的類或介面或宣告它的類的子類訪問。
195. 內部類和巢狀類之間有什麼區別?
當在一個類的作用域內定義一個類時,它就變成了內部類。如果內部類的訪問修飾符是 static,則它成為巢狀類。
196. 對方法重寫有什麼限制?
重寫的方法必須具有相同的名稱、引數列表和返回型別。重寫方法不能限制其重寫的方法的訪問。
197. 什麼是構造器鏈,它在 Java 中是如何實現的?
子物件構造器總是首先需要構造其父物件。在 Java 中,這是透過隱式呼叫無引數建構函式作為第一條語句來完成的。
198. double 值可以強制轉換為 byte 嗎?
是的,double 值可以強制轉換為 byte。
199. try 語句如何確定應使用哪個 catch 子句來處理異常?
當在 try 語句的主體中丟擲異常時,會按 try 語句中出現的順序檢查 try 語句的 catch 子句。第一個能夠處理異常的 catch 子句將被執行。其餘的 catch 子句將被忽略。
200. 定義為例項變數的陣列的所有元素的預設值是什麼?
如果陣列是基本型別的陣列,則陣列的所有元素都將初始化為對應於該基本型別的預設值。