面试问题:对框架的理解
1.谈谈你对spring的理解?
关键词:bean容器,核心ioc,aop
如果我是面试官,我问的这个问题其实是想让你系统的介绍一下你所掌握的Spring的知识和应用情况。 1.个人觉得spring就是一个容器,这个容器用于生产bean对象,并对其管理。
2.说到spring 我们有必提一下他其中网们经常用到的核心配件,ioc 和 aop ,ioc(控制反转),
我们都知道他是把为们之前手动new对象的过程和管理对象的过程交给了spring,也就是控制权的转换,这样减轻了我们程序员的代码量,提高了开发效率,
aop技术是建立在java语言的反射机制与动态代理上的,他有两种动态代理 方式,分别是java自身的动态代理和cglib代理,
因为我们一般都是将事物切进service层的所以一般采用的是java自身的动态代理,实现一个 InvocationHandler接口创建自己的调用处理器,
通过proxy类来指定classloader对象和一组interface创建动态代理类通过反射机制来获取动态代理的构造函数,其唯一参数类型是调用处理器接口类型,
通过构造函数来创建动态代理实例,构造调用时处理器对象作为参数传入。cglib的话一般使用是目标对象没有实现接口,
比如说我们的controller 实现层一般不写接口 这个时候我们就需要用到cglib了。
2.谈谈你对struts2的理解?
关键词:mvc框架,运行流程
struts首先是MVC框架,MVC是一种设计模式,将应用程序分成了视图、模型、控制器三部分,使代码逻辑清晰,同时提高移植性 M与V之间--观察者模式 V与C之间--策略模式
MVC的工作流程 请求----控制器调用模型处理,返回数据-----控制器用相应的视图格式化模型返回的数据完成相应 Struts2在以上流程中解决了三个问题: 1. 控制器如何根据用户的请求决定调用哪个模型(具体是模型中的Action组件)进行处理 2. 如何在业务逻辑处理器与serv let API 分离的情况下使处理器获得请求参数,并得以执行 3. 如何将处理后返回的数据传给相应的视图生成动态网页响应给用户 结合Struts的请求流程加以说明 客户端请求----经三个过滤器(ActionContextCleanUp,其他过滤器,到FilterDispatcher核心控制器) FilterDispatcher询问ActionMapper是否需要调用Action来处理,如果ActionMapper决定调用,FilterDispatcher就把对请求的处理交给了ActionProxy ActionProxy通过Configuration Manager 询问框架的配置文件,找到需要调用的Action类 ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,但在调用之前ActionInvocation会根据配置加载Action相关的拦截器,
每执行完一个拦截器,会调用invocation的invoke方法,把请求传给下个Interceptor,所有的Interceptor执行完以后,会执行Action Action执行根据后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果 这个返回结果可能是一个 需要表示为JSP或FreeMarker的模板,或者是另一个Action链 如果是前者,表示的过程中可以使用struts2的标签,生成动态网页后返回给用户 如果是后者,则再把上述过程执行一遍
3.谈谈你对hibernate的理解?
关键词:orm框架,jdbc的轻量级封装,java操作数据库数据
首先Hibernate不是MVC框架,准确来说是ORM框架。是持久层框架。
Hibernate工作就是将数据库中的关系型数据映射成Java对象,
说白了就是方便开发者使用Java来对关系型数据库进行操作的
我从不相信什么懒洋洋的自由,
我向往的自由是通过勤奋和努力实现更广阔的人生,那样的自由才是珍贵的、有价值的。
我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。
做一个自由又自律的人,靠势必实现的决心认真地活着。
我向往的自由是通过勤奋和努力实现更广阔的人生,那样的自由才是珍贵的、有价值的。
我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。
做一个自由又自律的人,靠势必实现的决心认真地活着。
[山本耀司]
本文转载请注明出处