IT小站汇总精选40个Spring框架面试问题的学习指南和答案

作者 : IT 大叔 本文共9625个字,预计阅读时间需要25分钟 发布时间: 2020-08-26

Spring框架使J2EE(Java 2平台企业版)的开发更加容易,并用于创建可测试的,高性能的,可重用的代码。由于其模块化和依赖注入特性,Spring通常应用于信息技术和金融领域。

对于希望在像MIT,Accenture或Visa这样的公司而不是Java EE的公司工作的开发人员来说,金融技术是一个令人兴奋且不断发展的领域。这些公司正在寻找像您一样具有Spring Framework经验的开发人员来帮助数字化他们的企业需求。

但是,您如何知道是否准备好面试呢?您如何准备?

今天,我们将阅读有关40个Spring面试问题的学习指南,以确保您准备好应对Spring Framework面试。

这是我们今天要介绍的内容:

  • 什么是Spring Framework?
  • Spring框架访谈会带来什么
  • Spring框架的前40个问题
  • 总结以及接下来要学习的内容

什么是Spring Framework?

Spring Framework是一个开源应用程序框架,并且是用Java编写的Inversion of Control容器。它旨在通过自动处理低级功能来简化应用程序设计。反过来,这使开发人员可以专注于其应用程序的业务逻辑。Spring还具有许多扩展模块,可以很好地适应这些扩展模块,这些扩展模块可以提高框架处理不同任务的能力。

尽管Spring没有强加特定的编程模型,但它作为Java Java Enterprise Models模型(EJB)的补充在Java社区中获得了广泛普及。这部分是由于Spring独特的功能选择,例如控制反转和面向方面的编程(AOP),这些功能非常适合使用bean。

该框架因其速度,安全性和易于构建的交易系统而特别适合企业和金融应用程序。与Java EE或其他基于Java的框架相比,Spring框架具有许多优势,例如:

  • Spring使您能够使用POJO开发企业级应用程序,因此您不需要其他EJB容器产品。
  • Spring为本地事务和全局事务提供了一致的,可伸缩的事务管理界面。
  • Spring以模块化的方式组织。它的Web框架是一个轻量级的Web MVC框架。
  • Spring充分利用了现有技术,例如ORM框架,JEE和JDK计时器。
  • 在Spring中测试应用程序很容易。而且,由于有了JavaBeanstyle POJO,Spring使使用依赖注入变得更加容易。
  • Spring提供了出色的API,因此可以轻松处理特定于技术的异常。

Spring框架会带来什么

寻求Spring Framework专业知识的大多数公司都是金融公司,例如银行和投资公司。春季申请人的一些顶级雇主包括花旗银行,eBay,Visa和JP Morgan。

这些公司对使用Spring的独特功能来保护和优化其会计和销售堆栈感兴趣。因此,大多数问题将测试您对这些功能的知识,例如依赖项注入,面向方面的编程和MVC。

还有一些一般性问题,以确保您完全了解Spring的各个部分,例如命名Web应用程序开发或数据库连接中使用的模块。

最后,您肯定会被问到关于为什么使用Spring及其带来的好处的总体问题。

为了帮助您做好准备,我们收集了40个面试重点问题,以使您对这些类别的知识有所了解。

让我们开始吧!

Spring框架的前40个问题:

1. Spring有什么好处?

  • 轻量级: Spring在资源使用方面是轻量级的,基本的Spring Framework仅消耗2MB的存储空间。
  • 可扩展: Spring的事务管理界面可以扩展为使用JTA模块将单个数据库上的本地事务扩展为全局事务
  • 异常处理:得益于用于处理每个模块中异常的大量API资源,异常处理非常容易。
  • 分层体系结构:允许您使用程序中需要的部分,并丢弃其余部分。
  • 启用POJO:普通的Java对象编程允许您进行持续的可测试性和集成。
  • 开源:所有人免费,没有供应商锁定。
  • 控制反转(IOC):通过允许对象将其依存关系提供给其他对象,而无需依赖对象,从而通过IOC实现松散耦合。
  • 面向方面(AOP): Spring支持面向方面的编程,这是一种将应用程序业务逻辑与系统服务分开的范例。

2. Spring的配置文件是什么?

Spring的配置文件是一个XML包含项目类信息的文件。它们描述了每个类的配置,如何将它们引入其他类以及整个程序的依赖关系。

3. Spring框架有哪些不同的模块?

总共大约有20个模块,分为核心容器,数据访问/集成,Web,AOP(面向方面​​的编程),检测和测试等层。

  • 核心容器: Spring框架的核心包含4个模块。
    • Spring Core
    • Spring Bean
    • SpEL (Spring Expression Language)
    • Spring Context
  • 数据访问/集成:支持与5个模块的数据库交互。
    • JDBC(Java数据库连接)
    • ORM(对象关系映射)
    • OXM(对象XML映射器)
    • JMS(Java消息服务)
    • 交易
  • Web:添加了对使用4个模块创建Web应用程序的支持。
    • 网页
    • 网络– MVC
    • Web –插座
    • Web – Portlet
  • 面向方面的编程:该层使您可以使用建议和切入点功能解耦代码。
  • 工具:这一层增加了对类工具和类加载器实现的支持。
  • 测试:增加了对使用Junit和TestNG进行测试的支持。
  • 其他:在这些层类别之外还存在2个模块。
    • Aspects:允许Spring与Aspect集成。
    • 消息传递:添加对STOMP(注释编程模型)的支持,并允许您从WebSocket客户端路由STOMP消息。

4. Spring应用程序有哪些不同的组件?

Spring应用程序包含5个组件:

  • 界面:定义程序功能。
  • Bean类:包含属性,用于访问Bean的setter和getter方法以及特定的函数等。
  • Spring面向方面的编程(AOP):包括横切关注点功能,而在面向对象的编程中不支持。
  • Bean配置文件:包含类的信息,如何配置它们以及定义它们之间的关系。
  • 用户程序:在整个程序中调用函数

5.什么是依赖注入?

依赖注入(DI)是定义如何连接多个类的概念。这是控制反转的一个例子。使用依赖注入时,无需在代码中显式连接服务和组件。而是在XML配置文件中描述每个组件所需的服务,并允许IOC容器自动连接它们。

IT小站汇总精选40个Spring框架面试问题的学习指南和答案插图

6.什么是Spring IoC容器?

IoC容器创建,配置和连接对象,同时还管理对象的生命周期。容器从用户给定的配置元数据中获取有关这些区域的指令。

7. IoC的类型是什么?

  • BeanFactory容器:此工厂类包含预包装的bean集合,这些bean在被客户端调用时实例化。这是支持DI的最基本的容器。
  • ApplicationContext容器:在BeanFactory容器的基础上,此容器提供了其他针对企业的功能。例如,ApplicationContext容器授予解析文本消息和发布应用程序事件的功能。

8.什么是面向方面的编程(AOP)?

AOP是一种编程技术,它允许程序员对行为进行模块化,该行为用于面向对象编程中的典型职责划分。核心AOP结构方面是适用于整个类的行为。从各个bean的各个方面提取这些行为,可以轻松地重用它们。

9.什么是春豆?

Bean是在传递给IOC容器时从配置元数据创建的对象。它们构成了所有Spring程序的基础。IOC容器实例化,配置,连接和管理每个bean。

10. ApplicationContext的常见实现是什么?

3个最受欢迎的容器是:

  • FileSystemXmlApplicationContext:使构造函数从XML配置文件加载Bean定义。必须使用完整的文件路径指向。
  • ClassPathXmlApplicationContext:此容器与以上操作相同,但不需要完整的文件路径。相反,您设置CLASSPATH属性并允许容器在XMLat 找到CLASSPATH
  • WebXmlApplicationContext:XML文件将所有bean定义加载到Web应用程序。

11. BeanFactory和ApplicationContext有什么区别?

BeanFactory是一个基本的,节省空间的容器,功能有限。它最适合用于简单任务或使用资源不足的计算机。

ApplicationContext是具有扩展接口和其他功能(如AOP)的高级,密集型容器。当您需要比BeanFactory更多的功能并且机器上有足够的资源时,最好使用此容器。

12.如何在Spring应用程序中添加bean?

我们必须注释一个方法:@Beanannotation。当JavaConfig遇到此方法时,它将执行该方法并将返回值注册为BeanFactory中的Bean。

package io.educative;
 
  public class User {
  
     private String name;
     private String address;
  
     public String getName() {
        return name;
     }
     public void setName(String name) {
        this.name = name;
     }
     public String getAddress() {
        return address;
     }
     public void setAddress(String address) {
        this.address = address;
     }
  }
 

13. Spring支持哪些bean范围?

Spring支持bean的5个作用域:

  • Singleton:将bean定义的范围限制为每个Spring IoC容器一个实例
  • 原型:作用域单个bean以启用任意数量的实例。
  • 请求:将bean定义的作用域限定为ApplicationContext中的单个HTTP请求
  • 会话:将bean定义的作用域限定为ApplicationContext中的HTTP会话
  • 全局会话:将bean定义的作用域限定为全局HTTP

14. Bean生命周期的步骤是什么?

IT小站汇总精选40个Spring框架面试问题的学习指南和答案插图(2)

Bean生命周期有7个步骤:

  1. 实例化: Bean由Spring容器使用XML配置文件中的Bean定义进行实例化。
  2. 填充属性: Spring XML使用依赖注入从文件中填充所有定义的属性。
  3. 设置Bean名称: Spring将Bean的标识符传递给setBeanName()方法(如果Bean使用BeanNameAware接口)。
  4. 设置Bean工厂:如果将Bean配置为使用接口,则 Spring将传递beanfactorysetBeanFactory()方法BeanFactoryAware
  5. 预初始化: Spring BeanPostProcessors使用该postProcessorBeforeInitialization()方法调用与bean关联的任何对象。
  6. 初始化:然后将Bean初始化。init-method遵循中指定的任何特殊初始化过程。
  7. 初始化后:postProcessAfterInitialization()调用所有定义的方法。现在,bean完成了。作业完成后,DisposableBean将使用来删除实现的Bean destroy()

15.内部bean。

内部bean用作另一个bean的属性。可以在配置XML文件中的<property>or <constructor-arg>元素下定义内部bean 。所有内部bean的作用域始终为,prototype并且没有标识符。

16.什么是bean自动接线?

这是一种Spring功能,它允许Spring容器通过查看BeanFactory来自动设置协作bean之间的依赖关系。可以设置自动装配以使用bean的名称或类型甚至是类构造函数来定义这些关系。

17.如何在Spring中注入Java Collection?

Java集合可以通过4种不同的方式注入:

  • <list> 帮助您连接一组值(如列表),同时允许重复。
  • <set>帮助您连接一组值,同时避免重复。
  • <map>允许您注入任何数据类型的键值对的集合。
  • <props> 允许您注入键值类型为的键值对集合String

18.什么是联接点?

连接点代表程序中执行操作的任何点。连接点的示例包括在处理异常或执行方法时。使用AOP时,只有方法执行是连接点。

19.春季的建议是什么?

建议是在给定的连接点处执行的操作。在方法执行完成之前,AOP使用Advice作为拦截器。

20. Spring框架的建议类型是什么?

  • 之前:这些是在连接点方法之前执行的建议。它们使用@Before注释标记进行标记。
  • 返回之后:它们在联接点的方法完成执行而没有问题之后执行。它们使用@AfterReturning注释标记进行标记。
  • 抛出后: 仅当joinpoint方法以抛出异常结束时执行。它们使用@AfterThrowing注释标记进行标记。
  • 之后:它们在联接点方法之后执行,无论它如何完成。它们使用@After注释标记进行标记。
  • 围绕:它们在连接点之前和之后执行,并使用@Around注释标记进行标记。

21.什么是编织?

在Spring中进行编织是将元素链接到其他应用程序类型或对象以创建建议对象的过程。这是在运行时完成的。

22.描述Spring DAO支持。

数据访问对象(DAO)支持是一组工具,使使用Hibernate和JDO之类的数据访问技术更容易且具有更高的一致性。它还会自动捕获特定于技术的错误。这些都使DAO易于使用,并允许您在持久性技术之间切换而不会出错。

23.什么是JDBC?Spring JDBC API中存在哪些类?

JDBC代表Java数据库连接。它是Java中的应用程序编程接口,用于定义程序如何访问数据库。JDBC API包含:

  • JdbcTemplate
  • NamedParameterJdbcTemplate
  • SimpleJdbcCall
  • SimpleJdbcInsert
  • SimpleJdbcTemplate

24.什么是Spring Model-View-Controller(MVC)框架?

Spring MVC框架提供了用于开发松耦合Web应用程序的模型视图控制器体系结构和预制组件。使用MVC,您可以分离程序的不同方面,例如业务,输入和UI逻辑,同时彼此之间仍然保持松散耦合。这使您的Web应用程序具有更大的灵活性。

IT小站汇总精选40个Spring框架面试问题的学习指南和答案插图(4)

25. Spring MVC框架有哪些部分?

MVC的3个主要部分是:

  • DispatcherServlet: MVC的这一部分管理所有HTTP请求以及与程序交互的响应。所述DispatcherServlet第一从配置文件接收相关的处理程序映射,然后通过关闭请求到控制器。这DispatcherServlet是Spring Web MVC框架最重要的部分。
  • WebApplicationContext:这是普通ApplicationContext的扩展,具有Web应用程序所需的额外功能。它可以唯一地解析主题,并自动确定与之关联的servlet。
  • 控制器:这些是内的Bean DispatcherServlet,充当用户输入和应用程序响应之间的过滤器。控制器接受用户输入,决定是否应该将其转换为View或Model,最后将转换后的输入返回给View Resolver进行审查。

26. DispatcherServlet的不同部分是什么?

  1. 处理程序映射:定义处理程序和请求对象之间的映射的接口。可用于创建自定义映射策略。
  2. 控制器:通过按输入请求的期望结果对它们进行排序,确定应用对用户输入的响应。输入可以立即通过View返回,也可以在传递给View-Resolver之前转换为Model。
  3. View-Resolver:通过在视图名称和实际视图之间进行映射,从控制器获取并渲染模型。

27.如何在Spring中打开注释布线?

要允许注释连接,请包含 <context:annotation-config/>' in your XML配置文件:

<beans
    //...
    xmlns:context="http://www.springframework.org/schema/context"
    //...
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    //...
 
    <context:annotation-config /> //annotation wiring enabled here
    //...
</beans>
 

28.什么是Spring Boot?

Spring Boot是用于创建微服务的开源Java框架。这是一个在Spring之上构建的项目,旨在简化部署Java应用程序的任务。它的两个主要组件是Spring框架和嵌入式HTTP服务器。Spring Boot用于:

  • 简化开发就绪的Spring应用程序的开发过程
  • 避免XML在Spring中进行配置
  • 通过减少所需的导入语句的数量来减少开发时间
  • 提供周到的开发方法

这些通常用于使Spring应用程序快速运行。

IT小站汇总精选40个Spring框架面试问题的学习指南和答案插图(6)

29.什么是反应式编程?

响应式编程是一种编程范例,它依赖于在事件上触发的已编程动作,而不是基于代码的时间顺序。响应式程序可以有效利用计算机资源,并且只需几个线程即可很好地扩展。它的非顺序形式使您可以避免堆栈阻塞并保持响应速度。

IT小站汇总精选40个Spring框架面试问题的学习指南和答案插图(8)

30.什么是Spring Webflux?

Webflux是一种反应式Web框架,可以替代MVC。Webflux提供了更好的可伸缩性并防止了堆栈阻塞。

IT小站汇总精选40个Spring框架面试问题的学习指南和答案插图(10)

资料来源:Prabu Subra on Medium

31. WebClient和Webtestclient有什么区别?

WebClient是从Web无框架,使得它更容易建立反应和无阻塞的Web应用程序的组件。

Webtestclient是一个版本的客户端与所有相同的功能,但是从现场的环境断开。测试客户端不需要HTTP服务器实时环境即可工作,这使其成为新应用程序的良好测试环境。它可以通过HTTP连接连接到任何服务器,也可以直接与WebFlux同步以应用模拟HTTP请求并生成响应对象。

32. Spring Boot可以在同一应用程序中允许Spring MVC或Spring WebFlux吗?

引导允许两个应用程序都在同一应用程序中,但一次只能应用一个。WebFlux是一个非阻塞框架,而MVC是一个阻塞框架,使它们无法兼容。

33. Spring 5是否可以与Jdk9模块化集成?

是的,Spring 5可以与Jdk9集成。方法如下:

  1. 创建一个新的班级
package com.hello;
public class HelloWorld {
    public String sayHello(){
        return "HelloWorld";
    }
}
  1. 创建一个新模块
module com.hello {
    export com.hello;
}
  1. 创建一个新的Java项目
module com.hello.client {
    requires com.hello;
}
  1. 测试新模块
public class HelloWorldClient {
    public static void main(String[] args){
        HelloWorld helloWorld = new HelloWorld();
        log.info(helloWorld.sayHello());
    }
}

34. Spring中的代理是什么?

代理是在将建议应用于目标对象之后创建的对象。代理用于执行元编程操作,例如拦截对象调用或更改对象的属性。

35.目标对象和代理对象什么时候相同?

这是一个“陷阱”问题,用于测试您是否知道不同的对象类型如何交互。

处理客户端对象时,目标和代理对象是相同的。

36.如何将配置元数据提供给Spring容器?

基于XML的配置:这种类型的配置将程序的所有Bean定义和依赖项存储在XML文件中。通过提供完整的文件路径来导入这些文件,例如下面的第1行。

<bean id="bean1" class="io.Educative.firstSpring.Bean1">
 <property name="name" value="Educative"></property>
</bean>

基于注释的配置:您可以在bean的类,方法或字段上创建注释,以将其放置在组件类中。

<beans>
<context:annotation-config/>
<!-- bean definitions go here -->
</beans>

基于Java的配置:这种配置类型使您可以跳过<bean>语法,而使用@Bean标记来实现相同的目的。您还可以使用@Configuration标记创建配置类,从而允许您通过调用其他@Bean类来在bean之间创建依赖关系。

@Configuration
public class BeanConfig
{ 
@Bean
public Bean1 myBean() 
{ return new Bean1(); }
}

37. Spring DAO类可能引发哪些异常?

  • DataAccessResourceFailureException
  • CleanUpFailureDataAccessException
  • InvalidDataAccessApiUsageException
  • InvalidDataAccessResourceUsageException
  • UncategorizedDataAccessException
  • DataIntegrityViolationException
  • DeadLockLoserDatAccessException
  • OptimisticLockingFailureEexception
  • IncorrectUpdateSemanticsDataAccessException
  • TypeMismatchDataAccessException
  • ObjectRetrievalFailureException
  • DataRetrievalFailureException

38.使用Spring可以通过什么方式访问Hibernate?

Hibernate ORM是Java的对象关系映射框架。它与Spring一起使用,以将面向对象的域模型映射到关系数据库。可以通过以下两种方式在Spring中访问Hibernate:

  1. 首先,扩展HibernateDAOSupport然后应用AOP拦截器节点
  2. 将控制反转与休眠模板和回调结构一起使用

39.指出春季AOP中关注点和跨领域关注点之间的区别吗?

一个问题是我们试图在应用程序的特定模块中实现的目标功能。

横切关注点是在整个应用程序中使用的关注点,而不仅仅是在特定模块中使用。

数据记录是横切关注点的一个很好的例子,因为无论它位于哪个模块中,记录都是有用且需要的。

40. Spring提供哪些事务管理类型?

声明式事务管理:此类型使用注释或XML配置来管理事务,以将事务管理与程序的业务代码分开。尽管易于维护,但这种样式的功能受到更多限制。

程序化交易管理:此类型使用专门制作的程序来管理交易。这些程序的自定义允许更灵活的管理,但是在过程中引入了更多的错误空间。

总结以及接下来要学习的内容

恭喜您完成了这40个Spring Framework访谈问题。与任何面试一样,Spring面试的成功取决于您的准备,进行各种面试问题的练习,Spring项目的经验以及对行为面试技巧的熟悉。

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » IT小站汇总精选40个Spring框架面试问题的学习指南和答案

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论