JAVA面试题整理(框架部分)

1.你了解的框架有哪些
Ajax,jQuery,Spring,MyBatis(iBatis),Struts2,Hibernate
2.**技术原理?为什么使用?
a.Ajax技术原理?为什么使用?
Ajax是一个综合技术应用,可以异步方式与服务器交互.
技术体系涉及XMLHttpRequest,JavaScript,CSS,
HTML,XML/JSON
--利用XMLHttpRequest对象异步发送请求,接收响应结果
--以XML/JSON当做数据交换格式
--以JavaScript语言为基础
--采用HTML和CSS等技术进行数据渲染

优点:在页面不刷新时,局部改变页面内容(局部刷新)
异步的请求处理,增强用户体验
有效地利用网络带宽资源
缺点:开发复杂,不易调试
不支持浏览器后退按钮处理
不能使用框架提供的全局异常处理机制
不能使用框架提供的校验机制

b.jQuery原理,为什么使用
js框架,好处是简化js和Ajax编程.将js和HTML分离

原理:将原有DOM对象做了封装,然后扩展出了大量API函数.
例如选择器,事件处理,属性处理,样式处理,ajax处理等
为了增强浏览器兼容性和元素的批量处理.
jQuery对象就是DOM对象的集合.

缺点:从新学习熟悉大量API函数
遇到js库有错误,需要替换版本或者修改js错误

c.Spring原理,为什么使用
IOC和AOP原理:
IOC原理:改变对象的获取方式,由原有new方式
改为第三方创建注入的方式.实现原理采用的是DI依赖注入技术.
DI又分为setter方式和构造器方式.(解析XML,利用反射创建实例
调用注入方法)
AOP原理:面向切面编程,将一个共通组件动态切入到
目标组件方法上.实现原理采用的是动态代理技术.使用了AOP后
容器返回的Bean是一个动态生成类型,该类去调用目标方法和
方面组件处理.(继续介绍Spring两种不同的代理生成方式,
参考课程文档)

IOC和AOP优点:降低程序组件之间的耦合度,结构灵活

Spring Web MVC原理:
--如何实现MVC结构
控制器部分:DispatcherServlet,Controller,HandlerMapping
模型:Model,ModelAndView,实体类
视图:ViewResolver
--处理流程
客户请求给DispatcherServlet主控制器
主控制器调用Hanldermapping根据请求找相应Controller处理
执行Controller约定方法,可以调用其他业务组件,例如DAO等
将结果数据放入Model对象,处理完返回一个视图名
主控制器调用ViewResolver根据Controller返回的视图名
去调用相应的视图组件JSP生成响应信息

优点:符合MVC结构,简单方便,与Spring无缝集成


d.MyBatis原理,为什么使用
封装了JDBC操作,将SQL查询结果映射为对象,
将对象属性值映射到SQL.
具体实现可以分为以下过程:
--首先解析SqlMapConfig.xml和SqlMap.xml(定义SQL)
--将

解析出的SQL生成MappedStatement(预编译Statement)
--将传入的SQL参数给Statement绑定,参数类型可以为
java对象,Map类型,int,String类型
--执行mappedstatement,返回sql结果
--将返回的SQL结果转为Java对象,Map,int,String类型返回

优点:简化数据库访问操作,便于实现DAO操作

e.Struts2原理,为什么使用
Struts2如何实现MVC
控制器部分:StrutsPrepareAndExecuteFilter,Action
模型:ValueStack(结构原理),Interceptor拦截器
视图:Result
Struts2的工作流程
客户发送请求,请求给Filter主控制器
主控制器判断请求类型是否为Action请求,(/login.action,/login)
如果是Action请求,创建一个ValueStack,将ValueStack实例化
依次调用拦截器,Action,Result(调用视图)组件处理
将生成的响应信息给客户返回.

优点:符合MVC结构,便于扩展和维护.快速开发MVC程序
缺点:容易受到表达式注入攻击

==============================
ValueStack原理(体系结构,生成周期)
==============================

f.Hibernate原理,为什么使用
Hibernate是JDBC封装,采用ORM思想.
实现Hibernate需要以下技术:
--解析XML(将实体类和表之间的映射信息提取)
--根据提取的映射生成SQL操作语句
--根据提取的映射信息将查询结果映射成实体对象
--基于反射技术创建实体对象,调用属性setter设置值

优点:简化实现数据库访问操作
自动生成SQL
便于数据库一致(分页相同写法)

==========================
Hibernate缺点有哪些?
--封装了SQL操作,有时候不灵活,效率低(级联删除)
--对JDBC封装,便于使用,但是效率会有所降低
--当遇到数据量比较大,表关系比较多,基于关系操作变得复杂
Hibernate如何调优?
--关联映射操作时,使用延迟加载机制
--抓取策略,join fetch一起加载,单独发送select加载关系数据
--查询时调整fetch_size数量,每次返回的记录条数
--数据量大时,慎用List/Iterator,get,load
--大量数据操作时,尽量减少与数据库的交互次数.
delete from Emp where empno=?//写一个HQL删除语句
update Emp set sal=? where empno=?//HQL
打开show_sql控制输出参数,根据输出情况调整
--适当采用缓存机制,一级缓存,二级缓存,查询缓存
--HQL优化, join fetch

from Dept d join fetch d.emps;//采用关联查询同时加载
dept及emps属性值

Hibernate一级缓存,二级缓存区别?
一级缓存是Session级别,Session独享,一个Session一个.
二级缓存是SessionFactory级别,多个Session共享.
这些缓存只能存储单个实体对象.如果是结果集需要采用
查询缓存才可以.
===========思考题===============
g.Struts2和Spring Web MVC相比各自优缺点
h.JDBC,MyBati

s,Hibernate各自优缺点
i.框架使用中的一些常见异常,解决方法



相关文档
最新文档