SSM(1)面试题

1. JDBC 跟 Mybatis的区别?
答案:
1. Mybatis是一种支持SQL的持久层框架,底层仍然是jdbc。
2. Mybatis相对于直接使用JDBC, 代码大大简化,比如能够直接将ResultSet中的数据转换成所需要的Java bean对象等。
3. MyBatis对SQL统一放到配置文件中进行管理,不用将SQL语句分散在各个java类中,方便代码的维护。
4. JDBC代码相对繁琐但访问速度更快,比如使用JDBC批处理等方式效率比Mybatis要高。
2. 简述一下事务以及事务的特性?
答案:
1. 事务:事务是一系列操作组成的业务单元,该业务单元内的操作是不可分割的,即:要么所有操作都做,要么所有操作都不做。
2. 事务具有4个特性,缺一不可,即:ACID(原子性、一致性、隔离性和持久性)
3. 原子性:事务是不可分割的最小业务单元,事务内的操作要么全部都做,要么全部都不做。
4. 一致性:事务执行时,是从一个一致状态变成另一个一致状态。
5. 隔离性:一个事务的执行,不受其他事务(进程)的干扰。
6. 持久性:事务一旦提交,对数据库的改变是持久的。
3. 简述Spring事务注解配置过程?
答案:
1. 正确配置数据库数据源
2. 配置事务管理器
3. 配置注解驱动事务
4. 在需要事务支持的方法上使用事务注解@Transactional
4. 简述Spring中BeanFactory和ApplicationContext作用?
答案:
1. ApplicationContext 是 BeanFactory接口的子接口
2. BeanFactory 采用的是延迟加载,第一次getBean的时候才会初始化Bean
3. ApplicationContext是对BeanFactory的扩展,提供了更多的功能
o 国际化处理
o 事件传递
o Bean自动装配
o 各种不同应用层的Context实现
4. 结论:开发中尽量使用ApplicationContext 就可以了
5. Spring框架的优点都有什么?
答案:
1. 简化编程:Spring对JavaEE中的一些比较繁琐的API做了简化和封装,使用封装之后的API不仅代码更简洁,而且质量更高。
2. 解耦:对象之间的依赖关系由容器来统一管理、降低了对象之间的耦合度、方便代码的维护,同时也实现了资源的统一调度和管理。
3. 支持面向切面编程AOP:可以方便对程序添加通用的服务,比如事务、权限管理等。
4. 集成其它框架:不发明重复的轮子,集成其它一些优秀框架、使开发者用统一的并且更加简洁的方式来使用这些框架。
5. 轻量:可以依赖项目的实际要求,有选择的使用Spring框架的全部或者一部分。
6. 构造器注入和 setter 依赖注入,那种方式更好,为什么?
答案:
1. 每种方式都有它的缺点和优点。
2. 构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖。
3. 如果使用 XML 来描述依赖,Setter 注入的可读写会更强。
4. 经验法则是强制依赖使用构造器注入,可选依赖使用setter注入。
5. 一般情况下尽量使用setter就可以了。
7. 依赖注入和工厂模式之间有什么不同?
答案:
1. 虽然两种模式都是将对象的创建从应用的逻辑中分离,但是依赖注入比工厂模式更清晰。
2. 通过依赖注入,你的类就是 POJO,它只知道依赖而不关心它们怎么获取。
3. 使用工厂模式,你的类需要通过工厂来获取
8. 列出IOC的3种主要注入方式?
答案:
1. 构造方法注入;
2. setter属性注入;
3. 接口注入。
9. 简述Spring中常用的几种Advice注解?
答案:
1. @Before:在方法执行前处理
2. @AfterReturning:在方法正常执行后处理
3. @AfterThrowing:在方法执行期间抛出异常时处理
4. @After:在方法执行前后无论是否有异常也处理
5. @Around:在方法前后进行处理
10. 什么是Spring 的AOP,AOP的工作原理是什么?
答案:
1. 面向切面编程简称AOP
2. Spring AOP 是使用动态代理在运行期间植入增强的功能代码。
3. Spring的一个关键的组件就是AOP,其中最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上。
4. 允许用户实现自定义切面,用AOP来完善OOP的使用,可以把Spring AOP看作是对Spring的一种增强
11. 什么是IOC/DI,实现原理是什么?
答案:Spring 可以创建对象,称为Spring控制对象,也称为IOC控制反转。
1. IOC Inverse of Control 反转控制的概念,指的是对象之间的依赖关系交由容器(第三方)来管理。
2. DI:Dependency Injection 依赖注入,指容器通过调用构造器或者set方法来建立对象之间的依赖关系。
12. 简述Spring中常用注解?
答案:
1. @Component :标准一个普通的spring Bean类。
2. @Repository:标注一个DAO组件类。
3. @Service:标注一个业务逻辑组件类。
4. @Controller:标注一个控制器组件类。
5. @Resource:注入组件
13. 简述SpringMVC的请求流程?
答案:
1. 用户发送请求至前端控制器DispatcherServlet
2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5. 执行处理器(Controller,也叫后端控制器)。
6. Controller执行完成返回ModelAndView
7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9. ViewReslover解析后返回具体View
10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11. DispatcherServlet响应用户
14. 简述什么是MVC?
答案:
1. MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。
2. 将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
3. Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。
4. View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
5. Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
15. 简单的说一下spring的生命周期?
答案:
1. 实例化BeanFactoryPostProcessor实现类
2. 执行BeanFactoryPostProcessor的postProcessBeanFactory方法
3. 实例化BeanPostProcessor实现类
4. 实例化InstantiationAwareBeanPostProcessBeforeInstantiantion方法
5. 执行Bean的构造器
6. 执行InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法
7. 为Bean注入属性
8. 调用BeanNameAware的setBeanName方法
9. 调用BeanFactoryAware的setBeanFactory方法
10. 执行BeanPostProcessor的postProcessBeforeInitialization方法
11. 调用InitializingBean的afterPropertiesSet方法
12. 调用的init-method属性指定的初始化方法
13. 执行BeanPostProcessor的postProcessAfterInitialization方法
14. 执行InstantiationAwareBeanPostProcessor的postProcessAfterInitialization方法
15. 容器初始化成功,执行正常调用后,下面销毁容器
16. 调用DiposibleBean的destory方法
17. 调用的destroy-method属性指定的初始化方法
 

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值