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

Spring、Hibernate、Struts2 經典面試題精選(含詳細答案)

     編輯:Java 相關知識

前言

本文整理了 Spring、Hibernate、Struts2 三大主流框架的高頻面試題,涵蓋核心原理、配置細節、優化策略與實戰陷阱,附帶參考答案,適合面試複習與知識查漏補缺。

一、Hibernate 篇

1. Hibernate 工作原理及優勢?

原理步驟:

  1. 讀取並解析配置文件(hibernate.cfg.xml)
  2. 解析映射信息,構建 SessionFactory
  3. 打開 Session
  4. 開啟事務 Transaction
  5. 執行持久化操作(save/update/delete/query)
  6. 提交事務
  7. 關閉 Session
  8. 關閉 SessionFactory

為何使用:

  • 封裝 JDBC 模板代碼,極大簡化 DAO 層開發。
  • 基於 Java 反射實現透明持久化,無字節碼增強侵入性。
  • 輕量級、映射靈活、支持複雜關聯關係(一對一、一對多、多對多)。
  • 提供一級/二級緩存機制,性能優秀。

2. Hibernate 延遲加載機制?

  • Hibernate 2:實體對象延遲、集合延遲。
  • Hibernate 3+:新增屬性級延遲加載。
  • 核心:真正訪問數據時才發起 SQL 查詢,節省內存、提升性能。

3. 類間關係映射如何實現?

通過映射文件配置 many-to-one、one-to-many、many-to-many 等標簽,將表關係映射為對象關係。

4. 緩存機制詳解?

  • 一級緩存:Session 級,事務範圍內,默認開啟,不可關閉。
  • 二級緩存:SessionFactory 級,跨事務共享。需配置緩存提供商(Ehcache、Redis 等)。適用條件:非關鍵數據、更新頻率低、被頻繁查詢。
  • 查詢緩存:配合二級緩存緩存查詢結果集。

5. Hibernate 查詢方式有哪些?

  • HQL(面向對象查詢語言)
  • Criteria API(程序化查詢)
  • Native SQL(原生 SQL)

HQL 支持:屬性查詢、參數綁定、關聯查詢、分頁、聚合函數。

6. Hibernate 優化策略?

  1. 優先雙向一對多,避免單向一對多。
  2. 靈活使用單向一對多。
  3. 以多對一替代一對一。
  4. 配置對象緩存,慎用集合緩存。
  5. 一對多用 Bag,多對多用 Set。
  6. 繼承類使用顯式多態。
  7. 表字段少、關係不怕多,二級緩存兜底。

二、Struts2 篇

7. Struts2 工作流程?

  1. 啟動加載 ActionServlet,解析 struts-config.xml。
  2. 請求到達,匹配 ActionMapping。
  3. 創建/獲取 ActionForm,填充表單數據。
  4. 根據配置決定是否驗證,調用 validate()。
  5. 驗證通過,根據映射轉發到對應 Action 的 execute()。
  6. Action 返回 ActionForward,轉發到 JSP 視圖。
  7. JSP 渲染響應客戶端。

8. 為何使用 Struts2?

JSP/Servlet/JavaBean 開發雜亂無章,Struts2 提供 MVC 規範,分離關注點:控制器(ActionServlet)、模型(ActionForm/Action)、視圖(JSP),降低耦合、提高可維護性。

9. 驗證框架原理?

在配置文件定義錯誤提示,ActionForm 的 validate() 方法中調用驗證邏輯,返回 ActionErrors 集合。

10. Struts2 設計模式?

核心為 MVC 模式,ActionServlet 作為前端控制器,Action 處理業務邏輯,ActionForm 封裝數據,JSP 負責展示。

三、Spring 篇

11. Spring MVC 工作流程?

  1. 所有請求提交給 DispatcherServlet。
  2. DispatcherServlet 查詢 HandlerMapping 找到 Controller。
  3. 請求分發到目標 Controller。
  4. Controller 處理業務,返回 ModelAndView。
  5. DispatcherServlet 查詢 ViewResolver 解析視圖。
  6. 視圖渲染返回客戶端。

12. Spring 核心優勢:IOC 與 AOP?

  • IOC(控制反轉):容器管理對象創建與依賴注入(構造器/Setter/接口注入),實現鬆耦合。核心接口 BeanFactory、ApplicationContext。
  • AOP(面向切面編程):將橫切關注點(事務、日誌、權限)模塊化,通過代理動態織入,業務代碼無感知。支持聲明式事務管理。

13. Spring 模塊架構?

七大模塊:Core Container、Context、AOP、DAO、ORM、Web、MVC。每個模塊可獨立使用或組合。

14. BeanFactory 與 ApplicationContext 差異?

  • BeanFactory:延遲初始化,基礎 IOC 容器。
  • ApplicationContext:啟動時加載所有單例 Bean,提供國際化、事件發布、資源加載等企業級功能。

15. Bean 作用域?

  • singleton(默認):容器中單實例。
  • prototype:每次獲取創建新實例。
  • request/session/global-session:Web 環境下對應作用域。

總結

掌握三大框架的核心原理(Hibernate 緩存/映射、Struts2 MVC 流程、Spring IOC/AOP)及優化手段,是 Java 後端開發面試的必考點。建議結合項目實戰場景深入理解,而非死記硬背。

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