蜜蜂职场文库 > 面试技巧 >

三大框架面试题

时间: 小龙 面试技巧

  三大框架面试题目有哪些呢?面试前对面试题目做好准备对面试很有利,以下是小编帮你们整理的三大框架面试题,一起来学习啦。

  三大框架面试题篇一

  一、Spring依赖注入的3种实现方式是什么?

  依赖注入的3种实现方式分别是:接口注入(interface injection)、Set注入(setter injection)和构造注入(constructor injection)。接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入。其具体步骤包括(1)编写一个接口,各种数据的注入将通过这个接口进行。(2)任何想要使用数据的类都必须实现这个接口 。Set注入指的就是在接受注入的类中定义一个Set方法,并在参数中定义需要注入的元素。构造注入指的就是在接受注入的类中定义一个构造方法,并在参数中定义需要注入的元素。

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

  1.创建java web项目:添加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核心过滤器。打开web.xml,配置struts核心过滤器和过滤器映射。(2)建立Action,继承ActionSupport类。(3)配置action。在struts.xml文件中,添加对Action的配置。包含等元素的配置(4)新建视图页面

  3.配置hibernate:(1)建立数据库与数据表(2)创建持久层实体类及映射文件(3)编写数据访问类,集成HibernateDaoSupport父类

  4.配置spring:(1)配置applicationContext.xml文件,配置spring会话工厂bean,数据访问bean ,业务bean和action bean等。(2)引入aop和tx命名空间,配置声明式事务(3)配置web.xml,添加Spring监听器和context-param初始化参数,告知监听器applicationContext.xml的位置。

  三、Struts的运行机制是什么

  1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;

  2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);

  3、接着StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action

  4、如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy;

  5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

  6、ActionProxy创建一个ActionInvocation的实例。

  7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

  8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是 (但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper。

  四、说说IOC和AOP的概念以及在Spring中是如何应用的

  1.控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。

  2.AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

  3.IOC是典型的工厂模式,而AOP则是典型的代理模式的体现。spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分

  4.在spring中ioc最典型的应用就是整合并管理各个组件,如整合ssh时,spring可以管理datasource,sessionfactory,dao,service,action等bean,这些传统开发方式中均是由硬编码的方式实现;而aop则在spring中表现为各种通知,spring提供了诸如MethodBeforeAdvice,AfterReturningAdvice,AfterThrowingAdvice等API,并在spring提供的声明式事务中也提供了相应的tx命名空间,利用aop简化事务配置

  三大框架面试题篇二

  一、Struts中mvc中分别使用的什么技术?

  1.在Action的实现方面,而Struts2中可以是一个POJO。Struts2支持通过拦截器堆栈为每一个Action创建不同的生命周期,其中拦截器在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前或之后加入某些操作

  2.线程模型方面,Struts2的Action是一个请求对应一个实例(每次请求时都新new出一个对象),没有线程安全方面的问题。

  3.Servlet依赖方面,Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。

  4.封装请求参数,Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。

  5.表达式语言方面,Struts2整合了OGNL(Object Graph NavigationLanguage)。

  6.绑定值到视图技术,Struts2使用“ValueStack”技术。

  7.类型转换,Struts2中使用OGNL进行转换,可以更方便的使用。

  8.Struts2支持重写validate方法或者使用XWork的验证框架。同时也很好的使用了Java的国际化机制

  二、Spring是怎么实现事务处理的?

  Spring 提供两种事务处理方式,一种是编程式事务处理;一种是声明式事务处理。其中编程式事务处理使用TransactionTemplate进行事务处理(Spring进行commit和rollback)。而Spring 的声明式事务处理,可以说是 Spring AOP的一种实现。

  因为事务处理是所谓方面( Aspect )的一个子集。因此默认情况下,事务处理是利用 Java动态代理机制实现的,这样就必须先定义一个接口,然后再编写实现;而对于没有接口的 Javabean ,则通过 CGLIB 实现。这部分是 SpringAOP 部分的内容。

  其实就是在执行某个业务方法之前添加了tx.beginTran()事务开启,若没有异常,业务方法执行完毕后添加了tx.commitTran()事务提交。若有异常抛出,则添加了tx.rollbackTran();事务回滚。

  使用Spring?AOP进行事务控制需要具备一定的规则,若是开发人员的业务Service或者说业务Service中的业务方法命名不按照事前定义好的规则进行命名的话,AOP是拦截不到的。

  三、谈谈Hibernate的缓存机制

  Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。

  SessionFactory的内置缓存和Session的缓存在实现方式上比较相似,前者是SessionFactory对象的一些集合属性包含的数据,后者是指Session的一些集合属性包含的数据。SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的拷贝,而预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来,SessionFactory的内置缓存是只读的,应用程序不能修改缓存中的映射元数据和预定义SQL语句,因此SessionFactory不需要进行内置缓存与映射文件的同步。

  SessionFactory的外置缓存是一个可配置的插件。在默认情况下,SessionFactory不会启用这个插件。外置缓存的数据是数据库数据的拷贝,外置缓存的介质可以是内存或者硬盘。SessionFactory的外置缓存也被称为Hibernate的第二级缓存。

  四、MyBatis和Hibernate有什么区别

  1)MyBATIS非常简单易学,Hibernate相对较复杂,门槛较高。

  2) 二者都是比较优秀的开源产品。但Hibernate现在已经是主流O/R Mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于MyBatis。

  3) 当系统属于二次开发,无法对数据库结构做到控制和修改,那MyBatis的灵活性将比Hibernate更适合。

  4) 系统数据处理量巨大,性能要求极为苛刻,在这种情况下MyBatis会有更好的可控性和表现。因为MyBatis比Hibernate更容易进行sql的优化。

  5) MyBatis 可以进行细粒度的优化,减少与数据库的交互,对于性能的提升是非常重要。

  6) MyBatis需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。如果涉及到数据库字段的修改,Hibernate修改的地方很少。

  7) 开发方面:开发效率上,两者差不多 ;可维护性方面,MyBatis更好一些。

  8) 运行效率:在不考虑cache的情况下,MyBatis应该会比hibernate快一些或者很多(根据实际情况会有所不同)。

  9) 对不同数据库类型的支持。MyBatis对不同数据库类型的支持不够好,如果你要开发的系统是要在对中数据间移植,那可能用hibernate比较好。

  10)对缺省的cache支持。MyBatis对缺省的cache支持不够好,但是hibernate的cache支持其实也不是很好,而且很复杂。尤其是对于大并发量的应用。

  五、Hashmap和Hashtable的区别

  1 HashMap不是线程安全的,hastmap是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

  2 .HashTable是线程安全的一个Collection。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

  HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

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

  Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

  Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异

  三大框架面试题篇三

  1.你对spring的理解是什么?

  1)开源框架

  2)IoC(控制反转),将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合

  3)AOP 将安全,事务等于程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性。

  或者答概念Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。

  2.Spring框架有哪几部分组成?

  Spring 核心容器(Core):提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。

  Spring AOP:通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。

  Spring ORM:Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。 Spring DAO:JDBC DAO抽象层提供了有意义的异常层次的结构,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低 了需要编写的异常代码数量(例如,打开和关系连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层结构。

  Spring WEB:Web上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。

  Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。

  Spring MVC:Spring的MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol

  3.IOC的优点是什么?

  IOC 或依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。

50060