前言
群里的一个小伙伴,工作半年就拿到了 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 的配置用于治理事务。