面试重点

1.谈谈对Spring的理解

  首先Spring它是一个很大的体系,在Spring这个体系里面包含了很多产品,例如:framework、spring boot、spring data 等等

当然,我在开发当中用的最多的 还是spring framework 和spring boot,spring framework 当中最主要的两大核心为 spring IOC和spring AOP

spring IOC 。控制反转他只是一个概念性的东西 而实现这个概念有很多方法;比如DI(Dependency Injection)“依赖注入”。spring 就是使用的DI来实现的;ioc 和 DI 好比  一个是概念 一个是手段  比如 “浪漫”,浪漫是一个概念,而实现这个浪漫 我们可以用很多手段,比如 看电影啊,一起逛街等等;

而实现DI 则有三种方法

1、通过构造方法注入,

2、通过set方法注入

3、自动装配注入  他的注入方式有 byType、byName、default等等

其实spring IOC 它就好比如一个很大的容器,用来管理我们程序中的各个bean,在spring初始化的时候,它会把所有配置文件当中的bean以及配置的扫描包下的所有加了@component,@service.@repository、@Controller的类放到我们的这个容器中来,并管理着他们之间的依赖、生命周期、作用域等,当然 我们配置的扫描包是可以添加条件的,比如踢除哪些annotation不去扫描它。在我们的spring 和springmvc结合使用的时候经常用到这种办法,他需要踢除加了@Controller的类。不然可能导致我们配置的 的aop和事务管

理失效;

 

spring AOP面向切面编程的意思;那么与之相对应的也就是 OOP  "面向对象编程”;那么在我们的面向对象编程的开发法则是至上而下式的。就比如我们的一个登陆模块,首先是客户端请求到Controller,Controller调用service,service再调用Dao,然后再是Dao返回service,service返回Controller,Controller再响应到客户端,那么这一整个流程是至上而下的;那么在我们这整个流程中可能会产生一些横切性的问题,

比如:

日志的记录,

权限的验证,

事务的管理,那么这些横切性的问题是和我们主体流程无关的;如果说处理这些横切问题的代码也写在我们的主业务逻辑里面的话,会造成大量冗余的代码,也不利于各个模块的重用和维护;那么面向切面编程就是为了来解决这些问题的,他可以将一些重复的非主逻辑的横切性代码抽象出来成为一个切面,然后我们可以为其指定切入点 比如 在执行之前切入  之后切入,环绕切入,出异常后切入等等;那么spring AOP的话 它是基于aspectJ来的;他底层默认是使用的jdk动态代理,当然我们也可以换成CGLIB。

2.List   Set  HashMap

  List : 特点:可以添加重复的数据,有顺序的   

          实现类:ArrayList:查询速度快,增删改速度慢

                        LinkeList:在项目中查询数据的慢,但是增删改速度快

 Set:特点:不保存重复的数据,没有顺序

          实现类:HashSet:速度快

                        TreeSet:排序

                        LinkeList:顺序

 Queue:消息队列

 

Map:特点:键值对关系,查询速度快

3.Arrays和ArrayList什么区别

   一个是数组,一个是集合,一个存储有限的数据,一个是无限的数据,一个只能存储一种类型,一种类型可变

4.MyBatis和Hibernate的区别

 一个是半封装的ORM框架,一个是全封装的ORM框架。一个是轻量的框架,一个是重量级的框架。Hibernate加快系统开发,因为SQL已经封装,但是SQL优化差,Mybatis属于半自动化,SQL优化好

5.SpringMVC和Struts2的区别

  SpingMVC的入口是Servlet

  开发效率,和性能方面,SpringMVC

  Struts是通过Action找到类,在于类找到方法

  SpringMVC直接找方法,性能比Struts快

 

 6.问到SSM和SSH的区别

 从2个方面答:1.SpringMVC和Struts的区别

                          2.Mybatis和Hibernate的区别

 7.Mybatis缓存

    一级缓存:默认开启一级缓存:SQLSession

   二级缓存:SQLSessioinFoXX'

8.Hibernate的工作原理

通过Configuration config = new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件
由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息
通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory
Session session = sf.openSession();//打开Sesssion
Transaction tx = session.beginTransaction();//创建并启动事务Transation
persistent operate操作数据,持久化操作
tx.commit();//提交事务
关闭Session
关闭SesstionFactory
 

9.Hibernate的优缺点

1.全封装JDBC

2.非入侵

3.开发效率高

4.缓存

缺点:

1.SQL优化难

2.配置过于复杂

3不支持批量删除

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值