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

11 月 Java 面試題精選(二):多執行緒、經典基礎題、集合、EJB、Servlet

     編輯:Java 相關知識

六、Java 多執行緒常見面試題

1. 定義執行緒的兩種方式

  • 繼承 Thread 類:覆寫 run() 方法。
  • 實作 Runnable 介面:實作 run(),再傳給 Thread 建構子。推薦,避免單繼承限制,利於資源共享。

2. 實例化與啟動

  • Thread 子類直接 new。
  • Runnable 需用 new Thread(runnable) 或其它建構子。
  • 啟動必須呼叫 start(),而非 run()。start() 會建立新呼叫堆疊,將執行緒從 NEW 轉為 RUNNABLE;直接呼叫 run() 只是在當前執行緒執行普通方法。

3. 兩種實作範例與輸出分析

Runnable 版:輸出順序交錯(李四:0, 阿三:0, 李四:1...),模擬耗時操作的 for(long k=0; k<100000000; k++); 讓 CPU 切換更明顯。

Thread 繼承版:輸出同樣不確定。

核心結論:執行緒啟動順序 ≠ 執行順序。調度器不保證次序與時間片,只能保證每個執行緒最終會跑完。

4. 常見易錯點總結

  1. 主執行緒名稱固定為 main,子執行緒名稱預設為 Thread-N,可自訂。
  2. Thread.currentThread() 取得當前執行緒物件。
  3. 執行緒一旦啟動不可重複啟動(IllegalThreadStateException)。
  4. 單 CPU 同一時刻只能跑一個執行緒,JVM 調度器從 RUNNABLE 池中選擇。
  5. 雖無法控制調度,可透過 sleep()、yield()、join()、優先權、Lock/Condition 影響調度行為。

七、Java 經典基礎面試題 20 題精選

#題目核心答案
1Static Nested Class vs Inner Class靜態內部類不依賴外部實例;普通內部類需外部實例化後才能建立。
2String 能否被繼承final 類,不可繼承。建議用 StringBuilder。
3int vs Integer基本類型 vs 包裝類;語義、儲存結構、預設值(null vs 0)皆不同。
4String vs StringBuffer不可變 vs 可變;動態構建字串用 StringBuffer/Builder。
5RuntimeException vs Checked Exception編譯器強制處理 checked;runtime 為常見邏輯錯誤,不強制。
6Servlet 生命週期 vs CGIinit→service→destroy;Servlet 多執行緒單實例,CGI 每請求一進程。
7ArrayList/Vector/LinkedList前兩者陣列結構(查快增刪慢),Vector 同步較慢;LinkedList 雙向鏈表(增刪快查慢)。
8EJB 技術基礎與 Bean 區別基於 JNDI/RMI/JTA;Session 做業務、Entity 做持久化;Stateful 有狀態、Stateless 無狀態。
9Collection vs Collections介面 vs 工具類(靜態方法:排序、搜尋、同步包裝)。
10& vs &&位運算 vs 邏輯運算(短路)。
11HashMap vs HashtableHashMap 非同步、允許 null、效率高;Hashtable 同步、不允許 null、繼承 Dictionary。
12final/finally/finalize修飾符/異常塊/GC 回收前呼叫。
13sleep() vs wait()Thread 方法不釋放鎖 / Object 方法釋放鎖進入等待池,需 notify 喚醒。
14Overload vs Override同類多態 vs 父子類多態;Overload 可改變返回型別。
15Error vs ExceptionError 為嚴重系統錯誤(OOM),難恢復;Exception 為設計/實作問題,可處理。
16同步 vs 異步共享資料需同步;耗時操作不想阻塞用異步。
17abstract class vs interface抽象類可有實作/構造器/非靜態欄位;介面全抽象、多實作、static final 常量。
18Heap vs Stack堆存物件、棧存引用與基本類型區域變數;棧後進先出、堆非線性。
19forward vs redirectforward 伺服器端跳轉、地址欄不變、共享 request;redirect 客戶端重新請求、地址欄變化。
20EJB vs JavaBeanJavaBean 本地元件(無參建構子、可序列化);EJB 分散式元件(RMI、容器管理、遠端存取)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved