前言
群里的一个小伙伴,工作半年就拿到了25k的offer,真是慕了慕了。
当初的敌人,真的是一个比一个凡尔赛,尽管我很菜,然而我月薪25k。。。
当然这位小伙伴能拿到了25k的月薪,靠的必定是他私下的致力,在小编的诘问下,小伙伴跟我分享了他的学习材料和遇到的spring面试题,小编这里给大家分享一下,心愿能够对大家有所帮忙。
spring面试题
1、什么是spring?
Spring实质上是一个轻量级的集成框架,可用于用Java开发企业应用程序。
2、命名Spring框架的不同模块
一些重要的Spring Framework模块是:
- Spring Context –用于依赖注入
- Spring AOP –用于面向方面的编程
- Spring DAO –应用DAO模式进行数据库操作
- Spring JDBC –用于JDBC和DataSource反对
- Spring ORM –对ORM工具的反对,例如Hibernate
- Spring Web Module –用于创立Web应用程序
- Spring MVC –用于创立Web应用程序,Web服务等的Model-View-Controller实现
3、列出基于正文的Spring配置中的一些重要正文
重要的正文是:
- @Required
- @Autowired
- @Qualifier
- @Resource
- @PostConstruct
- @PreDestroy
4、在Spring中解释Bean并列出Spring Bean的不同范畴
Bean是形成Spring应用程序骨干的对象。它们由Spring IoC容器治理。换句话说,bean是一个由Spring IoC容器实例化,组装和治理的对象。
Spring bean中定义了五个范畴。
Singleton: 将为每个容器创立一个bean实例。这是spring bean的默认范畴。在应用此范畴时,请确保spring bean没有共享的实例变量,否则可能会导致数据不统一问题,因为它不是线程平安的
原型: 每次申请bean时都会创立一个新实例
申请: 这与原型范畴雷同,然而利用于Web应用程序。将为每个HTTP申请创立一个新的bean实例
会话: 容器将为每个HTTP会话创立一个新bean
Global-session: 这用于为Portlet应用程序创立全局会话Bean
5、解释DispatcherServlet和ContextLoaderListener的角色
DispatcherServlet基本上是Spring MVC应用程序中的前端控制器,因为它加载了Spring bean配置文件并初始化所有已配置的bean。如果启用了正文,它还将扫描软件包以配置任何应用@ Component,@ Controller,@ Repository或@Service正文进行正文的bean。
另一方面,ContextLoaderListener是在Spring根目录中启动和敞开WebApplicationContext的侦听器。它的一些重要性能包含将Application Context的生命周期与ServletContext的生命周期绑定在一起,并主动创立ApplicationContext。
6、构造函数注入和setter注入之间有什么区别?
7、spring的主动注入模式是什么?什么是主动拆卸模式?
主动拆卸使程序员可能主动注入Bean。咱们不须要编写显式的注入逻辑。 让咱们看看应用依赖注入来注入bean的代码。
`<bean id = “ emp” class = “ com.javatpoint.Employee” autowire = “ byName” />` * 1
主动拆卸模式如下:
8、如何在Spring MVC Framework中解决异样?
Spring MVC Framework提供了以下办法来帮忙咱们实现牢靠的异样解决。
基于控制器:
咱们能够在控制器类中定义异样处理程序办法。咱们所须要做的就是应用@ExceptionHandler正文对这些办法进行正文。
全局异样处理程序:
异样解决是一个跨畛域的问题,Spring提供了@ControllerAdvice批注,咱们能够将其与任何类一起应用来定义全局异样处理程序。
HandlerExceptionResolver实现:
对于个别的异样,大多数时候咱们提供动态页面。Spring Framework提供了HandlerExceptionResolver接口,咱们能够通过该接口来创立全局异样处理程序。这种定义全局异样处理程序的其余办法背地的起因是,Spring框架还提供了默认实现类,咱们能够在咱们的Spring bean配置文件中定义这些默认实现类,以取得Spring框架异样解决的益处。
9、您应用了哪些重要的Spring批注?
我在我的项目中应用的一些Spring正文是:
@Controller –用于Spring MVC我的项目中的控制器类。
@RequestMapping –用于在控制器处理程序办法中配置URI映射。这是一个十分重要的正文,因而您应该浏览Spring MVC RequestMapping正文示例
@ResponseBody –用于发送对象作为响应,通常用于发送XML或JSON数据作为响应。
@PathVariable –用于将动静值从URI映射到处理程序办法参数。
@Autowired –用于主动拆卸Spring bean中的依赖项。
@Qualifier –带有@Autowired正文,以防止在存在多个bean类型的实例时造成混同。
@Service –用于服务类。
@Scope –用于配置Spring bean的范畴。
@ Configuration,@ ComponentScan和@Bean –用于基于Java的配置。
AspectJ正文,用于配置方面和倡议,@ Aspect,@ Before,@ After,@ Around,@ Pointcut等。
10、如何集成Spring和Hibernate框架?
如果您应用的是SessionFactory提供以后会话的Hibernate 3+,那么咱们能够应用Spring ORM模块来集成Spring和Hibernate框架,那么您应该防止应用HibernateTemplate或HibernateDaoSupport类,而最好应用带有依赖项注入的DAO模式进行集成。
另外,Spring ORM还提供了对应用Spring申明式事务管理的反对,因而您应该利用它,而不是应用休眠的样板代码进行事务管理。
11、命名Spring反对的事务管理的类型
Spring反对两种类型的事务管理。他们是:
程序化事务管理: 在这种状况下,借助编程来治理事务。它为您提供了极大的灵活性,然而很难保护。
申明式事务管理: 在此,事务管理与业务代码离开。仅正文或基于XML的配置用于治理事务。