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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值