學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場(chǎng) > 面試題 > ssh相關(guān)面試題

ssh相關(guān)面試題

時(shí)間: 護(hù)托1061 分享

ssh相關(guān)面試題

  什么是Spring, 它有什么特點(diǎn)?下面就由學(xué)習(xí)啦小編為大家介紹一下ssh相關(guān)面試題的文章,歡迎閱讀。

  ssh相關(guān)面試題篇1

  什么是Spring, 它有什么特點(diǎn)

  Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。

  ◆輕量——從大小與開(kāi)銷(xiāo)兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并 且Spring所需的處理開(kāi)銷(xiāo)也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴(lài)于Spring的特定類(lèi)。

  ◆控制反轉(zhuǎn)——Spring通過(guò)一種稱(chēng)作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦 合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴(lài)的其它對(duì)象會(huì)通過(guò)被動(dòng)的方式傳遞進(jìn)來(lái),而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴(lài)對(duì)象。你可以認(rèn)為IoC與JNDI相反——不 是對(duì)象從容器中查找依賴(lài),而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴(lài)傳遞給它。

  ◆面向切面——Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(yīng)用的 業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)()管理)進(jìn)行內(nèi)聚性的開(kāi)發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們 并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。

  ◆容器——Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是 一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建——基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生 成一個(gè)新的實(shí)例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。

  ◆框架——Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開(kāi)發(fā)留給了你。

  ssh相關(guān)面試題篇2

  1、spring 的優(yōu)點(diǎn)?

  1.降低了組件之間的耦合性 ,實(shí)現(xiàn)了軟件各層之間的解耦

  2.可以使用容易提供的眾多服務(wù),如事務(wù)管理,消息服務(wù)等

  3.容器提供單例模式支持

  4.容器提供了AOP技術(shù),利用它很容易實(shí)現(xiàn)如權(quán)限攔截,運(yùn)行期監(jiān)控等功能

  5.容器提供了眾多的輔助類(lèi),能加快應(yīng)用的開(kāi)發(fā)

  6.spring對(duì)于主流的應(yīng)用框架提供了集成支持,如hibernate,JPA,Struts等

  7.spring屬于低侵入式設(shè)計(jì),代碼的污染極低

  8.獨(dú)立于各種應(yīng)用服務(wù)器

  9.spring的DI機(jī)制降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性

  10.Spring的高度開(kāi)放性,并不強(qiáng)制應(yīng)用完全依賴(lài)于Spring,開(kāi)發(fā)者可以自由選擇spring的部分或全部

  2、什么是DI機(jī)制?

  依賴(lài)注入(Dependecy Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念,具體的講:當(dāng)某個(gè)角色

  需要另外一個(gè)角色協(xié)助的時(shí)候,在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例。但在spring中

  創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來(lái)完成,因此稱(chēng)為控制反轉(zhuǎn)。創(chuàng)建被調(diào)用者的工作由spring來(lái)完成,然后注入調(diào)用者

  因此也稱(chēng)為依賴(lài)注入。

  spring以動(dòng)態(tài)靈活的方式來(lái)管理對(duì)象 , 注入的兩種方式,設(shè)置注入和構(gòu)造注入。

  設(shè)置注入的優(yōu)點(diǎn):直觀,自然

  構(gòu)造注入的優(yōu)點(diǎn):可以在構(gòu)造器中決定依賴(lài)關(guān)系的順序。

  3. 簡(jiǎn)述你對(duì)IoC(Inversion of Control)的理解

  一個(gè)類(lèi)需要用到某個(gè)接口的方法,我們需要將類(lèi)A和接口B的實(shí)現(xiàn)關(guān)聯(lián)起來(lái),最簡(jiǎn)單的方法是類(lèi)A中創(chuàng)建一個(gè)對(duì)于接口B的實(shí)現(xiàn)C的實(shí)例,但這種方法顯然兩者的依賴(lài)(Dependency)太大了。而IoC的方法是只在類(lèi)A中定義好用于關(guān)聯(lián)接口B的實(shí)現(xiàn)的方法,將類(lèi)A,接口B和接口B的實(shí)現(xiàn)C放入IoC的 容器(Container)中,通過(guò)一定的配置由容器(Container)來(lái)實(shí)現(xiàn)類(lèi)A與接口B的實(shí)現(xiàn)C的關(guān)聯(lián)。

  4 解釋一下Dependency injection(DI,依賴(lài)注入)和IOC(Inversion of control,控制反轉(zhuǎn))?

  參考答案:依賴(lài)注入DI是一個(gè)程序設(shè)計(jì)模式和架構(gòu)模型, 一些時(shí)候也稱(chēng)作控制反轉(zhuǎn),盡管在技術(shù)上來(lái)講,依賴(lài)注入是一個(gè)IOC的特殊實(shí)現(xiàn),依賴(lài)注入是指一個(gè)對(duì)象應(yīng)用另外一個(gè)對(duì)象來(lái)提供一個(gè)特殊的能力,例如:把一個(gè)數(shù)據(jù)庫(kù)連接已參數(shù)的形式傳到一個(gè)對(duì)象的結(jié)構(gòu)方法里面而不是在那個(gè)對(duì)象內(nèi)部自行創(chuàng)建一個(gè)連接。控制反轉(zhuǎn)和依賴(lài)注入的基本思想就是把類(lèi)的依賴(lài)從類(lèi)內(nèi)部轉(zhuǎn)化到外部以減少依賴(lài)

  應(yīng)用控制反轉(zhuǎn),對(duì)象在被創(chuàng)建的時(shí)候,由一個(gè)調(diào)控系統(tǒng)內(nèi)所有對(duì)象的外界實(shí)體,將其所依賴(lài)的對(duì)象的引用,傳遞給它。也可以說(shuō),依賴(lài)被注入到對(duì)象中。所以,控制反轉(zhuǎn)是,關(guān)于一個(gè)對(duì)象如何獲取他所依賴(lài)的對(duì)象的引用,這個(gè)責(zé)任的反轉(zhuǎn)。

  5、描述一下Spring中實(shí)現(xiàn)DI(Dependency Injection)的幾種方式

  方式一:接口注入,在實(shí)際中得到了普遍應(yīng)用,即使在IOC的概念尚未確立時(shí),這樣的方法也已經(jīng)頻繁出現(xiàn)在我們的代碼中。

  方式二:Type2 IoC: Setter injection對(duì)象創(chuàng)建之后,將被依賴(lài)對(duì)象通過(guò)set方法設(shè)置進(jìn)去

  方式三:Type3 IoC: Constructor injection對(duì)象創(chuàng)建時(shí),被依賴(lài)對(duì)象以構(gòu)造方法參數(shù)的方式注入

  Spring的方式

  6、什么是AOP? (Aspect --Oriented Programming)

  面向切面編程(AOP)完善spring的依賴(lài)注入(DI),面向切面編程在spring中主要表現(xiàn)為兩個(gè)方面

  1.面向切面編程提供聲明式事務(wù)管理

  2.spring支持用戶自定義的切面

  面向切面編程(aop)是對(duì)面向?qū)ο缶幊?oop)的補(bǔ)充,

  面向?qū)ο缶幊虒⒊绦蚍纸獬筛鱾€(gè)層次的對(duì)象,面向切面編程將程序運(yùn)行過(guò)程分解成各個(gè)切面。

  AOP從程序運(yùn)行角度考慮程序的結(jié)構(gòu),提取業(yè)務(wù)處理過(guò)程的切面,oop是靜態(tài)的抽象,aop是動(dòng)態(tài)的抽象,

  是對(duì)應(yīng)用執(zhí)行過(guò)程中的步驟進(jìn)行抽象,,從而獲得步驟之間的邏輯劃分

  aop框架具有的兩個(gè)特征:

  1.各個(gè)步驟之間的良好隔離性

  2.源代碼無(wú)關(guān)性

  ssh相關(guān)面試題篇3

  事務(wù)就是對(duì)一系列的數(shù)據(jù)庫(kù)操作(比如插入多條數(shù)據(jù))進(jìn)行統(tǒng)一的提交或回滾操作,如果插入成功,那么一起成功,如果中間有一條出現(xiàn)異常,那么回滾之前的所有操作。

  這樣可以防止出現(xiàn)臟數(shù)據(jù),防止數(shù)據(jù)庫(kù)數(shù)據(jù)出現(xiàn)問(wèn)題。

  開(kāi)發(fā)中為了避免這種情況一般都會(huì)進(jìn)行事務(wù)管理。Spring中也有自己的事務(wù)管理機(jī)制,一般是使用TransactionMananger進(jìn)行管理,可以通過(guò)Spring的注入來(lái)完成此功能。

  spring提供了幾個(gè)關(guān)于事務(wù)處理的類(lèi):

  TransactionDefinition //事務(wù)屬性定義

  TranscationStatus //代表了當(dāng)前的事務(wù),可以提交,回滾。

  PlatformTransactionManager這個(gè)是spring提供的用于管理事務(wù)的基礎(chǔ)接口,其下有一個(gè)實(shí)現(xiàn)的抽象類(lèi)AbstractPlatformTransactionManager,我們使用的事務(wù)管理類(lèi)例如DataSourceTransactionManager等都是這個(gè)類(lèi)的子類(lèi)。

  1. aop中的關(guān)鍵名詞有些那些,相互關(guān)系是什么?

  攔截器: 代理

  裝備(advice)

  目標(biāo)對(duì)象

  關(guān)切點(diǎn):條件

  連接點(diǎn):方法、屬性

  2. Spring中ApplicationContext的作用是什么?

  beanFactory

  國(guó)際化(getMesage)

  資源管理:可以直接讀取一個(gè)文件的內(nèi)容(getResource)

  加入web框架中(加入一個(gè)servlet或監(jiān)聽(tīng)器)

  事件處理

  3. spring中的核心類(lèi)有那些,各有什么作用?

  BeanFactory:產(chǎn)生一個(gè)新的實(shí)例,可以實(shí)現(xiàn)單例模式

  BeanWrapper:提供統(tǒng)一的get及set方法

  ApplicationContext:提供框架的實(shí)現(xiàn),包括BeanFactory的所有功能

  4. spring中的核心類(lèi)有那些,各有什么作用?

  BeanFactory:產(chǎn)生一個(gè)新的實(shí)例,可以實(shí)現(xiàn)單例模式

  BeanWrapper:提供統(tǒng)一的get及set方法

  ApplicationContext:提供框架的實(shí)現(xiàn),包括BeanFactory的所有功能

3155606