国产精品亚洲综合久久系列,一本大道香蕉青青久久,播放高清的播放器,国产在线观看无码不卡

蜜蜂職場(chǎng)文庫(kù) > 面試技巧 >

三大框架面試題

時(shí)間: 小龍 面試技巧

  三大框架面試題目有哪些呢?面試前對(duì)面試題目做好準(zhǔn)備對(duì)面試很有利,以下是小編幫你們整理的三大框架面試題,一起來(lái)學(xué)習(xí)啦。

  三大框架面試題篇一

  一、Spring依賴注入的3種實(shí)現(xiàn)方式是什么?

  依賴注入的3種實(shí)現(xiàn)方式分別是:接口注入(interface injection)、Set注入(setter injection)和構(gòu)造注入(constructor injection)。接口注入指的就是在接口中定義要注入的信息,并通過(guò)接口完成注入。其具體步驟包括(1)編寫一個(gè)接口,各種數(shù)據(jù)的注入將通過(guò)這個(gè)接口進(jìn)行。(2)任何想要使用數(shù)據(jù)的類都必須實(shí)現(xiàn)這個(gè)接口 。Set注入指的就是在接受注入的類中定義一個(gè)Set方法,并在參數(shù)中定義需要注入的元素。構(gòu)造注入指的就是在接受注入的類中定義一個(gè)構(gòu)造方法,并在參數(shù)中定義需要注入的元素。

  二、SSH 框架配置流程是什么?

  1.創(chuàng)建java web項(xiàng)目:添加struts包:freemarker,ognl,struts2-core,struts2-spring-plugin,xwork-core,commons-fileupload、commons-io、 commons-lang等 ;添加spring包:spring-aop、spring-aspects、spring-beans、spring-context、spring-core、spring-jdbc、spring-orm、spring-web等;添加hibernate包:hibernate-core等;添加其他包:ojdbc等

  2.配置struts(1)配置struts核心過(guò)濾器。打開(kāi)web.xml,配置struts核心過(guò)濾器和過(guò)濾器映射。(2)建立Action,繼承ActionSupport類。(3)配置action。在struts.xml文件中,添加對(duì)Action的配置。包含等元素的配置(4)新建視圖頁(yè)面

  3.配置hibernate:(1)建立數(shù)據(jù)庫(kù)與數(shù)據(jù)表(2)創(chuàng)建持久層實(shí)體類及映射文件(3)編寫數(shù)據(jù)訪問(wèn)類,集成HibernateDaoSupport父類

  4.配置spring:(1)配置applicationContext.xml文件,配置spring會(huì)話工廠bean,數(shù)據(jù)訪問(wèn)bean ,業(yè)務(wù)bean和action bean等。(2)引入aop和tx命名空間,配置聲明式事務(wù)(3)配置web.xml,添加Spring監(jiān)聽(tīng)器和context-param初始化參數(shù),告知監(jiān)聽(tīng)器applicationContext.xml的位置。

  三、Struts的運(yùn)行機(jī)制是什么

  1、客戶端初始化一個(gè)指向Servlet容器(例如Tomcat)的請(qǐng)求;

  2、這個(gè)請(qǐng)求經(jīng)過(guò)一系列的過(guò)濾器(Filter)(這些過(guò)濾器中有一個(gè)叫做ActionContextCleanUp的可選過(guò)濾器,這個(gè)過(guò)濾器對(duì)于Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin);

  3、接著StrutsPrepareAndExecuteFilter被調(diào)用,StrutsPrepareAndExecuteFilter詢問(wèn)ActionMapper來(lái)決定這個(gè)請(qǐng)求是否需要調(diào)用某個(gè)Action

  4、如果ActionMapper決定需要調(diào)用某個(gè)Action,StrutsPrepareAndExecuteFilter把請(qǐng)求的處理交給ActionProxy;

  5、ActionProxy通過(guò)Configuration Manager詢問(wèn)框架的配置文件,找到需要調(diào)用的Action類;

  6、ActionProxy創(chuàng)建一個(gè)ActionInvocation的實(shí)例。

  7、ActionInvocation實(shí)例使用命名模式來(lái)調(diào)用,在調(diào)用Action的過(guò)程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。

  8、一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對(duì)應(yīng)的返回結(jié)果。返回結(jié)果通常是 (但不總是,也可能是另外的一個(gè)Action鏈)一個(gè)需要被表示的JSP或者FreeMarker的模版。在表示的過(guò)程中可以使用Struts2 框架中繼承的標(biāo)簽。在這個(gè)過(guò)程中需要涉及到ActionMapper。

  四、說(shuō)說(shuō)IOC和AOP的概念以及在Spring中是如何應(yīng)用的

  1.控制反轉(zhuǎn)(Inversion of Control,英文縮寫為IoC)是一個(gè)重要的面向?qū)ο缶幊痰姆▌t來(lái)削減計(jì)算機(jī)程序的耦合問(wèn)題,也是輕量級(jí)的Spring框架的核心。 控制反轉(zhuǎn)一般分為兩種類型,依賴注入(Dependency Injection,簡(jiǎn)稱DI)和依賴查找(Dependency Lookup)。依賴注入應(yīng)用比較廣泛。

  2.AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。AOP是OOP的延續(xù)。利用AOP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時(shí)提高了開(kāi)發(fā)的效率。

  3.IOC是典型的工廠模式,而AOP則是典型的代理模式的體現(xiàn)。spring的IoC容器是spring的核心,spring AOP是spring框架的重要組成部分

  4.在spring中ioc最典型的應(yīng)用就是整合并管理各個(gè)組件,如整合ssh時(shí),spring可以管理datasource,sessionfactory,dao,service,action等bean,這些傳統(tǒng)開(kāi)發(fā)方式中均是由硬編碼的方式實(shí)現(xiàn);而aop則在spring中表現(xiàn)為各種通知,spring提供了諸如MethodBeforeAdvice,AfterReturningAdvice,AfterThrowingAdvice等API,并在spring提供的聲明式事務(wù)中也提供了相應(yīng)的tx命名空間,利用aop簡(jiǎn)化事務(wù)配置

  三大框架面試題篇二

  一、Struts中mvc中分別使用的什么技術(shù)?

  1.在Action的實(shí)現(xiàn)方面,而Struts2中可以是一個(gè)POJO。Struts2支持通過(guò)攔截器堆棧為每一個(gè)Action創(chuàng)建不同的生命周期,其中攔截器在AOP(Aspect-Oriented Programming)中用于在某個(gè)方法或字段被訪問(wèn)之前或之后加入某些操作

  2.線程模型方面,Struts2的Action是一個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)實(shí)例(每次請(qǐng)求時(shí)都新new出一個(gè)對(duì)象),沒(méi)有線程安全方面的問(wèn)題。

  3.Servlet依賴方面,Struts2中的Action不再依賴于Servlet API,有利于測(cè)試,并且實(shí)現(xiàn)TDD。

  4.封裝請(qǐng)求參數(shù),Struts2可以選擇使用POJO類來(lái)封裝請(qǐng)求的參數(shù),或者直接使用Action的屬性。

  5.表達(dá)式語(yǔ)言方面,Struts2整合了OGNL(Object Graph NavigationLanguage)。

  6.綁定值到視圖技術(shù),Struts2使用“ValueStack”技術(shù)。

  7.類型轉(zhuǎn)換,Struts2中使用OGNL進(jìn)行轉(zhuǎn)換,可以更方便的使用。

  8.Struts2支持重寫validate方法或者使用XWork的驗(yàn)證框架。同時(shí)也很好的使用了Java的國(guó)際化機(jī)制

  二、Spring是怎么實(shí)現(xiàn)事務(wù)處理的?

  Spring 提供兩種事務(wù)處理方式,一種是編程式事務(wù)處理;一種是聲明式事務(wù)處理。其中編程式事務(wù)處理使用TransactionTemplate進(jìn)行事務(wù)處理(Spring進(jìn)行commit和rollback)。而Spring 的聲明式事務(wù)處理,可以說(shuō)是 Spring AOP的一種實(shí)現(xiàn)。

  因?yàn)槭聞?wù)處理是所謂方面( Aspect )的一個(gè)子集。因此默認(rèn)情況下,事務(wù)處理是利用 Java動(dòng)態(tài)代理機(jī)制實(shí)現(xiàn)的,這樣就必須先定義一個(gè)接口,然后再編寫實(shí)現(xiàn);而對(duì)于沒(méi)有接口的 Javabean ,則通過(guò) CGLIB 實(shí)現(xiàn)。這部分是 SpringAOP 部分的內(nèi)容。

  其實(shí)就是在執(zhí)行某個(gè)業(yè)務(wù)方法之前添加了tx.beginTran()事務(wù)開(kāi)啟,若沒(méi)有異常,業(yè)務(wù)方法執(zhí)行完畢后添加了tx.commitTran()事務(wù)提交。若有異常拋出,則添加了tx.rollbackTran();事務(wù)回滾。

  使用Spring?AOP進(jìn)行事務(wù)控制需要具備一定的規(guī)則,若是開(kāi)發(fā)人員的業(yè)務(wù)Service或者說(shuō)業(yè)務(wù)Service中的業(yè)務(wù)方法命名不按照事前定義好的規(guī)則進(jìn)行命名的話,AOP是攔截不到的。

  三、談?wù)凥ibernate的緩存機(jī)制

  Hibernate的緩存包括Session的緩存和SessionFactory的緩存,其中SessionFactory的緩存又可以分為兩類:內(nèi)置緩存和外置緩存。Session的緩存是內(nèi)置的,不能被卸載,也被稱為Hibernate的第一級(jí)緩存。

  SessionFactory的內(nèi)置緩存和Session的緩存在實(shí)現(xiàn)方式上比較相似,前者是SessionFactory對(duì)象的一些集合屬性包含的數(shù)據(jù),后者是指Session的一些集合屬性包含的數(shù)據(jù)。SessionFactory的內(nèi)置緩存中存放了映射元數(shù)據(jù)和預(yù)定義SQL語(yǔ)句,映射元數(shù)據(jù)是映射文件中數(shù)據(jù)的拷貝,而預(yù)定義SQL語(yǔ)句是在Hibernate初始化階段根據(jù)映射元數(shù)據(jù)推導(dǎo)出來(lái),SessionFactory的內(nèi)置緩存是只讀的,應(yīng)用程序不能修改緩存中的映射元數(shù)據(jù)和預(yù)定義SQL語(yǔ)句,因此SessionFactory不需要進(jìn)行內(nèi)置緩存與映射文件的同步。

  SessionFactory的外置緩存是一個(gè)可配置的插件。在默認(rèn)情況下,SessionFactory不會(huì)啟用這個(gè)插件。外置緩存的數(shù)據(jù)是數(shù)據(jù)庫(kù)數(shù)據(jù)的拷貝,外置緩存的介質(zhì)可以是內(nèi)存或者硬盤。SessionFactory的外置緩存也被稱為Hibernate的第二級(jí)緩存。

  四、MyBatis和Hibernate有什么區(qū)別

  1)MyBATIS非常簡(jiǎn)單易學(xué),Hibernate相對(duì)較復(fù)雜,門檻較高。

  2) 二者都是比較優(yōu)秀的開(kāi)源產(chǎn)品。但Hibernate現(xiàn)在已經(jīng)是主流O/R Mapping框架,從文檔的豐富性,產(chǎn)品的完善性,版本的開(kāi)發(fā)速度都要強(qiáng)于MyBatis。

  3) 當(dāng)系統(tǒng)屬于二次開(kāi)發(fā),無(wú)法對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)做到控制和修改,那MyBatis的靈活性將比Hibernate更適合。

  4) 系統(tǒng)數(shù)據(jù)處理量巨大,性能要求極為苛刻,在這種情況下MyBatis會(huì)有更好的可控性和表現(xiàn)。因?yàn)镸yBatis比Hibernate更容易進(jìn)行sql的優(yōu)化。

  5) MyBatis 可以進(jìn)行細(xì)粒度的優(yōu)化,減少與數(shù)據(jù)庫(kù)的交互,對(duì)于性能的提升是非常重要。

  6) MyBatis需要手寫sql語(yǔ)句,也可以生成一部分,Hibernate則基本上可以自動(dòng)生成,偶爾會(huì)寫一些Hql。如果涉及到數(shù)據(jù)庫(kù)字段的修改,Hibernate修改的地方很少。

  7) 開(kāi)發(fā)方面:開(kāi)發(fā)效率上,兩者差不多 ;可維護(hù)性方面,MyBatis更好一些。

  8) 運(yùn)行效率:在不考慮cache的情況下,MyBatis應(yīng)該會(huì)比hibernate快一些或者很多(根據(jù)實(shí)際情況會(huì)有所不同)。

  9) 對(duì)不同數(shù)據(jù)庫(kù)類型的支持。MyBatis對(duì)不同數(shù)據(jù)庫(kù)類型的支持不夠好,如果你要開(kāi)發(fā)的系統(tǒng)是要在對(duì)中數(shù)據(jù)間移植,那可能用hibernate比較好。

  10)對(duì)缺省的cache支持。MyBatis對(duì)缺省的cache支持不夠好,但是hibernate的cache支持其實(shí)也不是很好,而且很復(fù)雜。尤其是對(duì)于大并發(fā)量的應(yīng)用。

  五、Hashmap和Hashtable的區(qū)別

  1 HashMap不是線程安全的,hastmap是將鍵映射到值的對(duì)象,其中鍵和值都是對(duì)象,并且不能包含重復(fù)鍵,但可以包含重復(fù)值。HashMap允許null key和null value,而hashtable不允許。

  2 .HashTable是線程安全的一個(gè)Collection。HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。

  HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許。

  HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。

  Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)。

  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須為之提供外同步。

  Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異

  三大框架面試題篇三

  1.你對(duì)spring的理解是什么?

  1)開(kāi)源框架

  2)IoC(控制反轉(zhuǎn)),將類的創(chuàng)建和依賴關(guān)系寫在配置文件里,由配置文件注入,實(shí)現(xiàn)了松耦合

  3)AOP 將安全,事務(wù)等于程序邏輯相對(duì)獨(dú)立的功能抽取出來(lái),利用spring的配置文件將這些功能插進(jìn)去,實(shí)現(xiàn)了按照方面編程,提高了復(fù)用性。

  或者答概念Spring是一個(gè)輕型容器(light-weight container),其核心是Bean工廠(Bean Factory),用以構(gòu)造我們所需要的M(Model)。在此基礎(chǔ)之上,Spring提供了AOP(Aspect-Oriented Programming, 面向?qū)用娴木幊?的實(shí)現(xiàn),用它來(lái)提供非管理環(huán)境下申明方式的事務(wù)、安全等服務(wù);對(duì)Bean工廠的擴(kuò)展ApplicationContext更加方便我們實(shí)現(xiàn)J2EE的應(yīng)用;DAO/ORM的實(shí)現(xiàn)方便我們進(jìn)行數(shù)據(jù)庫(kù)的開(kāi)發(fā);Web MVC和Spring Web提供了Java Web應(yīng)用的框架或與其他流行的Web框架進(jìn)行集成。

  2.Spring框架有哪幾部分組成?

  Spring 核心容器(Core):提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,她是工廠模式的實(shí)現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(Ioc)模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用代碼程序分開(kāi)。

  Spring AOP:通過(guò)配置管理特性,Spring AOP模塊直接面向方面的編程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何對(duì)象支持 AOP。Spring AOP模塊為基于Spring的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。通過(guò)使用Spring AOP,不用依賴于EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。

  Spring ORM:Spring框架集成了若干ORM框架,從而提供了ORM的對(duì)象關(guān)系工具,其中包括 JDO、Hibernate、iBatis和TopLink。所有這些都遵從Spring的通用事務(wù)和DAO異常層結(jié)構(gòu)。 Spring DAO:JDBC DAO抽象層提供了有意義的異常層次的結(jié)構(gòu),可用該結(jié)構(gòu)來(lái)管理異常處理和不同數(shù)據(jù)供應(yīng)商拋出的異常錯(cuò)誤信息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且大大的降低 了需要編寫的異常代碼數(shù)量(例如,打開(kāi)和關(guān)系連接)。Spring DAO的面向JDBC的異常遵從通用的DAO異常層結(jié)構(gòu)。

  Spring WEB:Web上下文模塊建立在上下文模塊(Context)的基礎(chǔ)之上,為基于Web服務(wù)的應(yīng)用程序提供了上下文的服務(wù)。所以Spring框架支持 Jakarta Struts的集成。Web模塊還簡(jiǎn)化了處理多部分請(qǐng)求及將請(qǐng)求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?/p>

  Spring上下文(Context):Spring上下文是一個(gè)配置文件,向Spring框架提供上下文信息。Spring上下文包括企業(yè)服務(wù),例如 JNDI、EJB、電子郵件、國(guó)際化校驗(yàn)和調(diào)度功能。

  Spring MVC:Spring的MVC框架是一個(gè)全功能的構(gòu)建Web應(yīng)用程序的MVC實(shí)現(xiàn)。通過(guò)策略接口,MVC框架變成為高度可配置的,MVC容納的大量視圖技術(shù),包括JSP、Velocity、Tiles、iText和Pol

  3.IOC的優(yōu)點(diǎn)是什么?

  IOC 或依賴注入把應(yīng)用的代碼量降到最低。它使應(yīng)用容易測(cè)試,單元測(cè)試不再需要單例和JNDI查找機(jī)制。最小的代價(jià)和最小的侵入性使松散耦合得以實(shí)現(xiàn)。IOC容器支持加載服務(wù)時(shí)的餓漢式初始化和懶加載。

50060