Java常见的一些经典面试题(附答案解析)( 三 )


二、spring优点1:方便解耦 , 简化开发;2:方便的对程序进行拦截、运行、监控等功能;3:提供声明式事物;4:属于一个万能的框架 , 跟很多框架都是百搭;
三、什么是IOC?什么是AOP?(1)IOC称为控制反转是指在程序运行时自动注入依赖对象;底层实现原理:反射机制(2)AOP称为面向切面编程 , 就是程序中有很多各不相干的方法 , 在这些方法中加入某种系统功能的代码;例如加入日志、加入异常处理、加入事物管理底层实现原理:动态代理
四、反射机制:在程序运行时根据指定的类名获取类的信息;主要作用:1.在运行时构造一个类的对象;2.判断一个类所具有成员变量和方法;3.调用一个对象的方法;4.生成动态代理;
五、动态代理:利用Java反射技术 , 在运行时创建一个实现某些给定接口的新类(又分为JDK动态代理和Cglib动态代理)主要作用:1.可以隐藏委托类(就是被代理类)的具体实现2.可以实现客户与委托类间的解耦 , 在不修改委托类代码的情况下能够做一些额外的处理JDK动态代理和Cglib动态代理的区别?JDK动态代理只能对实现了接口的类生成代理 , 为不能针对类Cglib动态代理是针对类实现代理 , 主要是对指定的类生成一个子类 , 覆盖其中的方法(集成)
六、什么是DI机制?依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念 , 具体的讲:当某个角色需要另外一个角色协助的时候 , 在传统的程序设计过程中 , 通常由调用者来创建被调用者的实例 。 但在spring中创建被调用者的工作不再由调用者来完成 , 因此称为控制反转 。 创建被调用者的工作由spring来完成 , 然后注入调用者 , 因此称为依赖注入;
七、Spring的Ioc注入方式有几种?一、Set注入二、构造器注入三、接口注入spring注入方便管理 , 依赖注入或者说是控制反转 , 说白了就是使用了配置文件 , 这种思想的唯一好处就是增加了模块的重用性灵活性 。
八、hibernate的工作原理1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打开Sesssion5.session.beginTransaction();//创建事务Transation6.persistent operate持久化操作7.session.getTransaction().commit();//提交事务8.关闭Session9.关闭SesstionFactory
九、hibernate优点:1.对JDBC访问数据库的代码做了封装 , 大大简化了数据访问层繁琐的重复性代码 。 2.Hibernate是一个基于JDBC的主流持久化框架 , 是一个优秀的ORM实现 。 他很大程度的简化DAO 层的编码工作3.hibernate使用Java反射机制 , 而不是字节码增强程序来实现透明性 。 4.hibernate的性能非常好 , 因为它是个轻量级框架 。 映射的灵活性很出色 。 它支持各种关系数据库 ,从一对一到多对多的各种复杂关系 。
十、SpringMvc运行流程1.用户发送请求到DispatchServlet2.DispatchServlet根据请求路径查询具体的Handler3.DispatchServlet调用HandlerAdapter适配器 , 适配器再调用具体的Handler处理业务4.Handler处理结束返回一个具体的ModelAndView给适配器 , 适配器将ModelAndView给 DispatchServlet5.DispatchServlet把视图名称给ViewResolver视图解析器6.ViewResolver视图解析器返回一个具体视图给DispatchServlet7.将渲染视图的展示给用户
十一、ssh和是ssm的区别SSH 通常指的是 struts2 做控制器(controller) , spring管理各层的组件 , hibernate 负责持久化层 。 SSM 则指的是 SpringMVC 做控制器(controller) , Spring 管理各层的组件 , MyBatis 负责持久化 层 。 共同点:1.Spring依赖注入DI来管理各层的组件 。 2.使用面向切面编程AOP管理事物、日志、权限等 。 不同点:1.struts2和springmvc的区别;2.hibernate和mybatis的区别;
十二、struts2和SpringMvc的区别?1.springmvc入口是一个servlet前段控制器 , struts2入口是一个filter过滤器;2.springmvc是基于方法开发的 , 传递参数通过方法的形参来传递;struts2是基于类开发的 , 传递参 数通过类的属性来传递;3.SpringMvc通过参数绑定期将request请求内容解析 , 并给方法形参赋值;struts2采用值栈存储 请求和响应数据 , 通过OGNL存储数据;
十三、hibernate和Mybatis的区别?屏蔽jdbc的底层访问细节 , 使我们不与jdbc api打交道 , 就可以访问数据;jdbc api编程流程固定 , 还将sql语句与java代码混杂在了一起 , 经常需要拼凑sql语句 , 细节很繁 琐;iBatis提供了自动将结果集封装成实体对象和对象集合的功能 , queryForList返回对象集合 , 用queryForObject返回单个对象 , 提供了将实体对象的属性传递给sql语句的参数;Hibernate是一个全自动的orm映射工具 , 他可以自动生成sql语句 , ibatis需要我们自己在xml配置文件中写sql语句 , hibernate要不ibatis负责功能强大很多 。 因为hibernate自动生成sql语句 , 不能写高效率的sql语句 , 对于一些不太复杂的sql查询hibernate可以很好的帮我们完成 , 特别复杂查询ibatis就比较合适了;