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

Java 基礎面試題精選(三):JDBC、正則、反射、設計模式、Servlet/JSP、Spring 核心

     編輯:Java 相關知識

本文為「Java 基礎面試題」系列第三部分,涵蓋 JDBC 事務與大物件處理、正則表達式、反射機制、面向物件六大原則一法則、23 種設計模式、UML、ORM/CoC、Servlet/JSP 核心、過濾器/監聽器、Java EE 核心規格、Spring IoC/AOP 實現機制與選型理由。適合中高級開發者查漏補缺。


81. JDBC 事務處理機制

Connection 提供三大核心方法:

  • setAutoCommit(false):關閉自動提交,開啟手動事務
  • commit():顯式提交事務
  • rollback():異常時回滾

JDBC 3.0 新增 Savepoint(保存點),支援部分回滾:

Savepoint sp = conn.setSavepoint("A");
// ... 執行 SQL ...
conn.rollback(sp); // 回滾到保存點 A

82. Blob / Clob 處理

  • Blob(Binary Large Object):儲存圖片、音訊等二進制資料
  • Clob(Character Large Object):儲存大量文本(如文章內容)

PreparedStatement 與 ResultSet 均提供 setBlob()/getBlob()、setClob()/getClob() 方法。

83-84. 正則表達式與 Java 支援

用途:描述字串規則,進行匹配、提取、替換、分割。

Java API:

  • String.matches()、replaceAll()、replaceFirst()、split()
  • java.util.regex.Pattern / Matcher:豐富的物件導向 API

經典面試題:擷取第一個中文括號前的內容
北京市(朝陽區)(西城區) → 北京市

Pattern p = Pattern.compile(".*?(?=\\()"); // 非貪婪 + 前瞻斷言
Matcher m = p.matcher(str);
if (m.find()) System.out.println(m.group());

85-87. 反射機制核心三問

問題答案
獲取 Class 物件的三種方式1. 類別.class 2. 物件.getClass() 3. Class.forName("全限定名")
反射建立物件的兩種方式1. clazz.newInstance()(需無參建構子) 2. clazz.getConstructor(參數類別...).newInstance(實參...)
存取 private 欄位Field f = clazz.getDeclaredField("name"); f.setAccessible(true); f.get(obj) / f.set(obj, val)

89. 面向物件「六大原則一法則」

  1. 單一職責原則 (SRP):一個類只做一件事,實現高內聚
  2. 開閉原則 (OCP):對擴充開放,對修改關閉。關鍵在抽象與封裝變化
  3. 依賴倒轉原則 (DIP):面向介面程式設計,高層模組不依賴低層模組,雙方依賴抽象
  4. 里氏替換原則 (LSP):子類別必須能替換父類別。子類只增強不削弱父類能力(正方形不可繼承長方形)
  5. 介面隔離原則 (ISP):介面要小而專,不做臃腫大介面(琴棋書畫應分四個介面)
  6. 合成/聚合復用原則 (CARP):優先用 Has-A(組合/聚合)而非 Is-A(繼承)復用程式碼。反例:Properties extends Hashtable、Stack extends Vector 皆為濫用繼承
  7. 迪米特法則 (LoD):最少知識原則。門面模式與調停者模式是踐行典範

90. 設計模式分類與高頻考點

GoF 23 種模式三大類:

  • 創建型(5種):Singleton、Factory Method、Abstract Factory、Builder、Prototype
  • 結構型(7種):Proxy、Adapter、Decorator、Facade、Bridge、Composite、Flyweight
  • 行為型(11種):Template Method、Strategy、Observer、Chain of Responsibility、Command、State、Visitor、Iterator、Mediator、Memento、Interpreter

必會手寫/說明 4 大高頻模式:

模式核心思想典型應用
工廠方法定義建立物件介面,子類決定實例化哪個類Collection.iterator()
代理為目標物件提供代理,控制存取Spring AOP、遠程代理、虛擬代理
適配器將介面轉換為客戶期望的介面IO 流轉換、Arrays.asList()
模板方法定義演算法骨架,延遲部分步驟到子類JdbcTemplate、Servlet 生命週期

92-93. UML 核心

  • 定義:統一建模語言,支援軟體全生命週期的視覺化建模
  • 三大核心圖:
    1. 用例圖:捕獲需求,展示功能模組與關係
    2. 類別圖:靜態結構,類別、介面、關聯、繼承、依賴
    3. 時序圖:動態互動,物件間訊息傳遞順序

94-95. ORM 與 CoC

  • ORM(Object-Relational Mapping):透過中繼資料(XML/Annotation)映射物件與關聯式資料表,自動持久化/物件化。本質是資料形式轉換
  • CoC(Convention over Configuration):約定優於配置。遵循約定(如類 User 對應表 users)即無需配置;違背約定時再配置。核心價值:減少決策、統一規範、利於團隊協作

96-105. Servlet / JSP / Web 核心

題號考點核心答案
96Servlet 生命週期載入→實例化→init()→服務service()(分派 doGet/doPost)→銷毀destroy()
97Forward vs RedirectForward:伺服器內部轉向,瀏覽器 URL 不變,效率高。Redirect:302 狀態碼,瀏覽器重新請求,URL 變更,可跨伺服器
98JSP 9 大內建物件request、response、pageContext、session、application、out、config、page、exception
99GET vs POSTGET:參數在 URL,長度受限,非敏感資料。POST:參數在 Body,無長度限制,適合上傳/敏感資料
100JSP 與 Servlet 關係JSP 本質是 Servlet,側重視圖;Servlet 側重控制邏輯。MVC 中 JSP=View,Servlet=Controller
101JSP 四大作用域page < request < session < application(生命週期由短到長)
102Session 追蹤技術URL 重寫、隱藏表單、Cookie、HttpSession(最強大,伺服器端記憶體)
103Filter 用途統一認證、日誌審計、資料過濾/替換、壓縮響應、加解密、XSLT 轉換
104Listener 類型ServletContextListener、HttpSessionListener、ServletRequestListener 及其 Attribute 對應版共 6 種
105web.xml 作用配置 Listener、Filter、Servlet、參數、Session 超時、安全驗證、錯誤頁面

106-109. JSTL / EL 表達式語言

  • JSTL 核心標籤:<c:if>、<c:choose/when/otherwise>、<c:forEach>、<c:forTokens>、<c:set>、<c:out>、<c:url>。最佳實踐:僅用 core 庫,配合 EL,嚴禁 Scriptlet
  • EL 隱含物件:pageContext、param、paramValues、header、headerValues、cookie、initParam、四大作用域(pageScope 等)
  • EL 運算子:算術(+ - * / div % mod)、關係(== eq != ne > gt < lt)、邏輯(&& and || or ! not)、條件(? :)、empty(判空)

110. Java EE 核心規格名詞解釋

縮寫全稱核心作用
JNDIJava Naming & Directory Interface命名目錄服務,分散式應用快速查找定位
JMSJava Message Service訊息傳送標準 API,支援點對點與發布/訂閱
JTAJava Transaction API事務邊界劃分介面 + SPI 介面
JPAJava Persistence APIORM 標準 API,管理實體與關聯映射
JAFJavaBeans Activation Framework處理 MIME 型別資料,JavaMail 依賴
JAASJava Authentication and Authorization Service驗證與授權,實現 PAM 架構
JMXJava Management Extensions管理監控 API,透過 MBean 管理伺服器

111-113. Spring 核心:IoC / AOP / 選型理由

111. IoC 與 DI 理解

  • IoC:控制反轉。物件建立與依賴管理權從程式碼移交容器。好萊塢原則:「別找我們,我們會找你」
  • DI:依賴注入。IoC 更具體描述:容器在運行期動態將依賴注入組件。三種方式:建構子注入、Setter 注入、介面回調注入

112. Spring 實現機制

  • DI:推薦 Setter 注入,支援建構子注入
  • AOP:運行時代理。實現介面→JDK 動態代理(Proxy + InvocationHandler);未實現介面→CGLIB 繼承代理(字節碼生成)

113. 選擇 Spring 七大理由

  1. 一站式企業級開發,模組化自由取捨,POJO 簡化 JavaEE
  2. DI 核心:易測試(Mock)、易維護、鬆耦合、高復用
  3. AOP 支援:橫切關注點(日誌、審計、效能監控)模組化
  4. 豐富模板類:JdbcTemplate、JpaTemplate、JmsTemplate、RestTemplate 簡化樣板碼
  5. 聲明式事務、排程、安全、Web MVC、第三方框架整合(Hibernate、MyBatis、Quartz...)
  6. Terracotta 整合:跨 JVM 共享 Bean、分散式事件、高可用叢集
  7. 偏好非受檢異常(RuntimeException),模板類自動資源釋放,減少 try-catch-finally 樣板碼

系列導航:Java 基礎面試題(一) | Java 基礎面試題(二) | Java 基礎面試題(三)

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