12.框架基礎面試題整理

Spring 面試回答:

1.什麼是Spring框架,Spring有哪些核心木塊

1.1.Spring 是個java企業級應用的開源開發框架。

Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平臺的web應用。

1.2.七個核心模塊

1.Spring WEB MVC 

MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。

2.Spring WEB :

Web 上下文模塊建立在應用程序上下文模塊之上,爲基於 Web 的應用程 序提供了上下文。所以,Spring 框架支持與 Struts2 的集成。

3.Spring ORM :

Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構

4.Spring AOP:

通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中

5.Spring DAO: 

JDBC DAO 抽象層提供了有意義的異常層次結構,Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。

6.Spring Context:JEE

Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能。

7.Spring Core :

核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開。

2.spring 在項目中如何使用

1 spring對於程序開發人員來說是透明的

2 spring讓三層架構之間降低耦合度。(低耦合 高內聚)

3 Aop 切面編程特性 幫我們處理事務和 日誌。

3.Struts面試問題

Struts 中MVC的理解,以及Struts在web中的使用

M: Model,模型,操作數據的業務處理層,並獨立於表現層

V: 視圖,通過客戶端數據類型顯示數據,並回顯模型層的執行結果。

C: 控制器,也就是視圖層和模型層橋樑,控制數據的流向,接受視圖層發出的事件,並重繪視圖

4.MVC的優點缺點

優點:

1)視圖控制模型分離, 提高代碼重用性。

2)提高開發效率。

3)便於後期維護, 降低維護成本。

4)方便多開發人員間的分工。

缺點:

1)清晰的構架以代碼的複雜性爲代價, 對小項目優可能反而降低開發效率。

2)運行效率相對較低 

簡單簡述下struts2的執行流程

基本簡要流程如下:

1、客戶端瀏覽器發出HTTP請求。

2、根據web.xml配置,該請求被FilterDispatcher接收。

3、根據struts.xml配置,找到需要調用的Action類和方法, 並通過IoC方式,將值注入給Aciton。

4、Action調用業務邏輯組件處理業務邏輯,攔截器等這一步包含表單驗證。

5、Action執行完畢,根據struts.xml中的配置找到對應的返回結果result,並跳轉到相應頁面。

6、返回HTTP響應到客戶端瀏覽器。

爲什麼要使用struts框架

使用struts的原因:

JSP、Servlet、JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts便應運而生。

基於Struts開發的應用由3類組件構成:控制器組件、模型組件、視圖組件。

5.Hibernate 框架的使用

Hibernate中get和load有什麼不同之處?

1 load方式檢索不到的話會拋出org.hibernate.ObjectNotFoundException異常

  get方法檢索不到的話會返回null,

2  get方法是直接從數據庫中檢索數據

   而load方法的執行則比較複雜首先查找session緩存中找,如果有則直接返回 如果沒有則判斷是否是lazy如果不是直接訪問數據庫檢索,查到記錄返回,查不到拋出異常 。

Hibernate中save、persist和saveOrUpdate這三個方法的不同之處

save()只能INSERT記錄,但是saveOrUpdate()可以進行 記錄的INSERT和UPDATE。還有,save()的返回值是一個Serializable對象,而persist()方法返回值爲void。

Hibernate 的優勢

首先、Hibernate對JDBC訪問數據庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重複性代碼。

其次、Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現,它很大程度的簡化了DAO層編碼工作。

再次、Hibernate使用Java的反射機制,而不是字節碼增強程序類實現透明性。

最後、Hibernate的性能非常好,因爲它是一個輕量級框架。映射的靈活性很出色。它支持很多關係型數據庫,從一對一到多對多的各種複雜關係。

Hibernate的工作原理:

1.讀取並解析Hibernate核心配置文件hibernate.cfg.xml

2.讀取並解析Hibernate映射文件,創建SessionFactory

3.打開Sesssion

4.創建事務Transation 

5.持久化操作

6.提交事務

7.關閉Session

8.關閉SesstionFactory

6.mybatis和hibernate的區別

mybatis

  1.需要人工編寫sql語句   

  2.擴展性差  跟數據庫耦合度較高  如果更換數據庫 需要重新編寫sql

  3.開發效率 沒有hibernate高  運行效率比hibernate高

hibernate 1 自動生成 並且提供了封裝的常用接口 Query SqlQuery

  2 擴展性 好  跟數據庫耦合度地  更換數據庫 只需要更改方言  和主鍵生成策略

  3 開發效率較高   運行效率低於myBiatis

hibernate 如何理解

1 輕量級jdbc

2 orm 對象關係映射

3 方言

4 逆向生成表

5 內置樂觀鎖

6 數據庫優化

1 一二緩存

2 把複雜sql創建爲視圖  經常使用的查詢列 創建 索引

3 把複雜的業務邏輯 通過函數和過程

4 連接池!!!

7.事務 

JDBC 用於單一數據源 的一個事務處理

JTA  用於 多個數據源  分佈式事務處理

9.SpringMVC 和Struts2 的區別

1:spring3 mvc開發效率高於struts

2:spring3 mvc可以認爲已經100%零配置

3:struts2是類級別的攔截, 一個類對應一個request 請求,

springmvc是方法級別的攔截,一個方法對應一個request請求,而方法同時又跟一個url對應

所以說從架構本身上 spring3 mvc就容易實現     

而struts2的架構實現起來要費勁

因爲struts2 action的一個方法可以對應一個url

而其類屬性卻被所有方法共享,這也就無法用註解或其他方式標識其所屬方法了 

4:spring3mvc的方法之間基本上獨立的,獨享request response數據

請求數據通過參數獲取,處理結果通過ModelMap交回給框架

方法之間不共享變量

而struts2搞的就比較亂,雖然方法之間也是獨立的,但其所有Action變量是共享的

這不會影響程序運行,卻給我們編碼 讀程序時帶來麻煩 

5:由於Struts2需要針對每個Request進行封裝,

把Request,Session等Servlet生命週期的變量封裝成一個一個Map


發佈了44 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章