首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 核心基礎知識大全:59 道高頻面試題與核心概念深度解析

     編輯:Java 相關知識

基礎語法與核心類別

0. 存取修飾子作用域對照表

作用域當前類同一 package子類其他 package
public✓✓✓✓
protected✓✓✓✗
friendly (預設)✓✓✗✗
private✓✗✗✗

不寫修飾子預設為 friendly。

1. String 為 final 類別,不可繼承;效率考量請用 StringBuffer

2. int vs Integer

int 為原始型別,Integer 為封裝類別。Java 為每個原始型別提供封裝類(boolean→Boolean, char→Character 等)。兩者行為、語義、儲存結構、預設值全異:物件參考預設 null,原始型別視型別而定。

3. String vs StringBuffer

String 內容不可變;StringBuffer 可修改。動態構建字串請用 StringBuffer。

4. 執行期異常 vs 受檢異常

執行期異常(RuntimeException)為 JVM 通常操作可能遇到的常見錯誤,編譯器不強制宣告拋出;受檢異常必須宣告。

5. Servlet 生命週期與 CGI 差異

實例化 → init() → 請求到達 service() → 派發 doGet/doPost → 銷毀 destroy()。
差異:Servlet 駐留伺服器進程,多執行緒服務多請求,實例通常不銷毀;CGI 每請求產生新進程,服務完銷毀,效率較低。

6. ArrayList / Vector / LinkedList 效能特性

  • ArrayList/Vector:陣列儲存,隨機存取快,插入刪除慢(需移動元素)。Vector 同步化,效能略低。
  • LinkedList:雙向鏈結串列,隨機存取慢(需遍歷),插入刪除快(僅調整指標)。

7. EJB 技術基礎與 Bean 類型差異

基於 JNDI、RMI、JTA。
SessionBean:完成伺服器端業務操作(非持久)。
EntityBean:代表持久資料(持久)。
Stateful vs Stateless SessionBean:前者維護用戶狀態,佔較多記憶體;後者無狀態,實例可共用,記憶體效率高。

8. Collection vs Collections

Collection 為集合介面(父介面),子介面含 Set、List。
Collections 為工具類,提供排序、搜尋、執行緒安全化等靜態方法。

9. & vs &&

& 位元邏輯與運算;&& 邏輯與(短路運算)。

10. HashMap vs Hashtable

  • HashMap:非同步、允許 null key/value、效率較高、含 containsKey/containsValue
  • Hashtable:同步、不允許 null、繼承 Dictionary、方法同步化
  • 演算法相近,效能差異不大

11. final / finally / finalize

  • final:修飾屬性(不可變)、方法(不可覆寫)、類別(不可繼承)
  • finally:異常處理區塊,必定執行
  • finalize:Object 方法,GC 回收前呼叫,可覆寫釋放資源(如關檔案)

12. sleep() vs wait()

  • sleep:Thread 靜態方法,暫停指定時間,**不釋放物件鎖**
  • wait:Object 方法,釋放物件鎖進入等待池,需 notify/notifyAll 喚醒

13. Overload vs Override

Override:父子類多型,同名同參數;Overload:同類多型,參數個數或型別不同。Overload 可改變回傳型別。

14. Error vs Exception

Error:嚴重問題(如記憶體溢位),程式難以處理。
Exception:設計/實作問題,正常執行不應發生。

15. 同步 vs 非同步

共享資料必須同步存取。長耗時操作不想阻塞主流程用非同步,通常效率更高。

16. Abstract Class vs Interface

Abstract Class:部分實作、可有建構子/非抽象方法、單繼承。
Interface:全抽象方法、僅可定義 static final 常數、多實作、支援動態繫結。

17. Heap vs Stack

Stack:線性集合,後進先出,儲存基本型別與物件參考。
Heap:Stack 組成元素,動態分配物件實體。

18. Forward vs Redirect

Forward:伺服端內部轉發,瀏覽器網址不變。
Redirect:伺服端回傳狀態碼,瀏覽器重新請求新網址,參數可保留。

19. EJB vs JavaBean

JavaBean:可重用元件,本地進程內,需無參建構子、實作 Serializable。
EJB:分散式元件(相當 DCOM),基於 RMI,跨進程/機器存取,需部署於 WebSphere/WebLogic 等容器,客戶透過容器代理存取。

20. Static Nested Class vs Inner Class

Static Nested Class:無需外部類實例即可實例化。
Inner Class:需外部類實例化後才能實例化。

21. JSP 動態 vs 靜態 Include

動態 <jsp:include>:檢查檔案變化、支援參數、適合動態頁。
靜態 <%@ include %>:不檢查變化、適合靜態頁。

22. Assert 斷言機制

開發/測試階段開啟,檢查關鍵布林表達式;發布關閉以提升效能。

23. GC (Garbage Collection)

自動監測物件超出作用域回收記憶體,防止洩漏,無顯式釋放操作。

24. short 型別運算陷阱

short s1=1; s1=s1+1; 編譯錯誤(結果為 int 需強轉)。
short s1=1; s1+=1; 正確(隱含強轉)。

25. Math.round() 規則

round(11.5)=12,round(-11.5)=-11。參數加 0.5 後取 floor。

26. String 物件建立個數

String s = new String("xyz") 建立兩個物件(常數池 1 個 + 堆 1 個)。

27. 多執行緒計數器範例

四執行緒(兩增兩減)配合 synchronized 方法保證執行緒安全,完整程式碼見原文。

28. Java 無 goto 保留字

29. 執行緒啟動用 start() 非 run()

start() 使執行緒進入可執行狀態由 JVM 排程;run() 只是普通方法呼叫。

30. SessionBean/EntityBean 生命週期與事務管理

Stateless 由容器決定實例複用;Stateful 客戶首次調用即建立專屬實例。
EntityBean 生命週期長,隨資料庫資料存在,容器崩潰仍存活。
事務管理:OMG OTS、Sun JTS/JTA、X/Open XA。

31. 主流應用伺服器

BEA WebLogic、IBM WebSphere、Oracle9iAS、JBoss、Tomcat。

32. 常見 RuntimeException 列表

NullPointerException, IndexOutOfBoundsException, ClassCastException, IllegalArgumentException 等 40+ 種。

33. 繼承規則

介面可繼承介面;抽象類可實作介面;抽象類可繼承實體類(需明確建構子)。

34. Collection 體系

List、Set 繼承 Collection;Map 不繼承。

35. 資料連線池機制

啟動建立最小連線數;需求時取閒置連線標記忙碌;不足時按參數擴建;歸還標記閒置供下次複用。

36. Abstract 方法限制

不可同時為 static、native、synchronized。

37. length vs length()

陣列有 length 屬性無方法;String 有 length() 方法。

38. Set 判重機制

用 iterator() 遍歷配合 equals() 判斷內容相等;== 比較參考位址。

39. 建構子不可 Override,可 Overload

40. String 為 final 不可繼承

41. Switch 僅支援 int/short/char/byte,不支援 long/String

42. Try-Finally-Return 執行順序

Finally 區塊在 return 前執行。

43. 高效率計算 2×8

2 << 3(左移 3 位 = 乘 2³)。

44. Equals 與 HashCode 契約

x.equals(y)==true 必須有相同 hashCode。

45. 參數傳遞:值傳遞(傳物件參考的值)

方法可修改物件內容,但無法改變呼叫端的參考變數指向。

46. Synchronized 方法互斥

一個物件同一時間僅允許一執行緒進入任一 synchronized 方法。

47. Singleton 模式兩種寫法

餓漢式(類載入即建立)與懶漢式(雙重檢查鎖定/同步方法首次建立),前者較安全。

48. Java 介面 vs C++ 虛類

Java 介面無實作碼、全 public、支援多實作、彈性高於單繼承。

49. 異常處理機制原理

違反語義規則 → JVM 拋出異常(內建如 IndexOutOfBoundsException、NullPointerException)或程式員自訂異常(throw),所有異常繼承 Throwable。

50. GC 優缺點與演算法

優點:解決記憶體管理難題、防洩漏。物件無作用域,只有參考有。
演算法:分代複製、標記清除、增量收集。GC 為低優先級執行緒,不可即時呼叫。

51. 執行緒同步方法

wait()、sleep()、notify()、notifyAll()。

52. 常用集合類與核心方法

List 實作:ArrayList、Vector(適合索引存取)。
Map 實作:鍵值對儲存,每鍵映射一值。

53. JVM 類載入機制

ClassLoader 及其子類負責執行期尋找載入 class 檔案。

54. Char 儲存中文

可行。Java 採 Unicode,char 佔 16 位元(2 bytes),足以容納漢字。

55. 多執行緒實作兩種方式

繼承 Thread、實作 Runnable。
同步實作:synchronized、wait/notify。

56. JSP 九大內建物件

request、response、out、pageContext、session、application、config、page、exception。

57. 執行緒四狀態

執行中、就緒、阻塞、結束。

58. JSP 指令

isErrorPage、isELIgnored、page、include、taglib 等。

59. doGet/doPost 呼叫時機

Form method="get" 呼叫 doGet;method="post" 呼叫 doPost。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved