35 大春季面试问答:2022 年终极指南

已发表: 2021-01-08

有即将到来的与 Spring Framework 相关的面试吗? 也许您登陆此页面是因为您正在寻找最热门的 Spring Framework 面试问题 在我们的博客中,我们将讨论春季面试中被问到最多的问题和答案。

如果你经历了这些,你很可能会在面试中表现出色。 在我们开始之前,让我们简要介绍一下当前市场对 Spring Framework 的整体需求。

阅读:印度的全栈开发人员需求

Spring 使 Java 编程语言更快、更简单、更安全。 它的主要重点是速度,但它既简单又高效。 因此,它已成为全球最受欢迎的 Java 框架之一。 这些库灵活可靠。 它被用于很多地方,如在线购物、联网汽车和更多创新技术。

它还吹嘘自己对亚马逊、谷歌和阿里巴巴等大巨头的贡献。 此外,Spring 社区非常庞大。 它包括所有年龄组,并且非常多样化。 您会在网上找到大量资源和支持,让您的旅程更轻松。

如果您是 Java 程序员,那么 Spring Framework 对您来说至关重要。 许多公司确实要求程序员了解 Spring Framework 或至少了解其中的一些模块。

这里有一些春季面试的热门问题和答案,你可以期待你的面试官问。

目录

2020年春季面试问答

Q.1 Spring Framework 有哪些不同的版本,它们的主要特点是什么?

这三个版本分别是 Spring 2.5、Spring 3.0 和 Spring 4.0。

Spring 2.5 是第一个支持注解的版本。 它于 2007 年发布。Spring 3.0 使用了 Java5 的升级,并进一步为 JEE6 提供了帮助。 它于两年后的 2009 年发布。Spring 4.0 是为 Java 8 提供全面支持的主要变体。它于 2013 年发布。

Q.2 描述或定义 Spring Framework

它是一个开源的 Java 平台。 它被用作重型企业 Java 技术的一个选项。 简单来说,它简化了 Java 开发,因为它是轻量级的。 开发人员可以使用 Spring Framework 开发应用程序,甚至可以在 CPU 内存和资源受限的计算机上进行部署。 此外,它还支持各种其他框架,包括但不限于 Tapestry、JSF、EJB、Hibernate、Struts 等。

阅读:全栈项目理念和主题

Q.3 Spring 框架有哪些优势?

  • Spring Framework 是开源的,没有任何供应商锁定。
  • 由于它使用的分层架构,您只能使用您真正需要的东西。
  • Spring Framework 使用 POJO,这使得应用程序测试变得更加容易。
  • 您可以将它与 Spring 框架的所有其他 Java 框架一起使用。 它不施加任何限制或限制。
  • Spring Framework 是一个模块化框架。 它非常灵活。

Q.4 Spring Framework 的各种特性是什么?

  • 轻量级:当我们谈论它的透明度和大小时,Spring Framework 是轻量级的。
  • 控制反转:是程序的控制流被翻转的原理。 在这里,服务、框架和其他组件等外部资源控制程序的流程,而不是程序员。
  • 面向方面编程:Spring 中的面向方面编程通过将系统服务与应用程序业务逻辑分离来支持绑定开发。
  • 容器:容器是 Spring Framework 的核心,它是创建对象、绑定对象、配置对象并负责其从创建到结束的完整生命周期的容器。
  • MVC 框架:Spring 框架的 MVC Web 应用程序框架易于使用,并且是可配置的。 您可以使用其他框架而不是选择 Spring MVC 框架。
  • 事务管理:Spring Framework 使用通用抽象层进行事务管理。 您可以在容器较少的环境中使用 Spring 的事务支持。
  • JDBC 异常处理:您不需要显式处理任何与数据库相关的异常。 Spring JDBC Framework 使用 JDBC 异常处理来处理它。

阅读:全栈开发人员面试问题

Q.5 你能在 Spring Framework 中找到多少个模块? 命名它们。

您可以找到 20 个模块,这些模块分为核心容器、Web、数据访问/集成、AOP(面向方面​​编程)、仪器和测试。

Spring Core Container:顾名思义,就是Spring Framework的核心容器。 它包括

  • 弹簧芯
  • 春豆
  • 春季表达语言
  • 弹簧上下文

Web:该层支持创建 Web 应用程序。 它由以下模块组成:

  • 网络
  • 网络——MVC
  • 网络 - 套接字
  • 网页 – Portlet

数据访问/集成:这一层支持与数据库通信。 它由以下模块组成:

  • Java 数据库连接 – JDBC
  • 对象关系映射——ORM
  • 对象 XML 映射器 – OXM
  • Java 消息服务 – JMS
  • 交易

Aspect-Oriented Programming:在这一层,开发人员可以使用切入点、建议等方式来解耦代码。

Instrumentation:这一层支持类加载器实现和类检测。

测试:这一层支持使用 TestNG 和 Junit 进行测试。

您还可以找到其他杂项节点,例如:

消息传递:此模块为 STOMP 提供帮助。 它还有助于作为注解编程模型,用于路由和处理来自 WebSocket 客户端的 STOMP 消息。

Aspects:此模块提供与 AspectJ 集成的支持。

Q.6 什么是 Spring 配置文件?

它基本上是一个 XML 文件。 您可以在此文件中找到有关类的所有信息。 它进一步描述了这些类是如何配置和相互了解的。 XML 配置文件很详细,因此需要保持干净。 否则,如果您的项目很大,管理它们就会变得困难。

Q.7 描述 Spring 应用程序的不同组件。

通常,一个 Spring 应用程序由以下组件组成:

  • 接口:所有功能都在接口中定义。
  • Bean 类:您可以在这里找到属性以及 set 和 get 函数。
  • Spring Aspect-Oriented Programming (AOP):它提供了横切关注点的功能。
  • Bean 配置文件:此文件包含类的详细信息以及如何配置它们。
  • 用户程序:用户程序使用该功能。

Q.8 解释使用 Spring Framework 的各种方式

Spring Framework 可以通过多种方式使用,例如:

  • Spring Framework 可以用作全面的 Spring Web 应用程序。
  • Spring Framework 可以用作第三方 Web 框架,使用 Spring Frameworks 中间层。
  • Spring Framework 可用于远程使用。
  • Spring Framework 可以用作 Enterprise Java Bean,它可以包装现有的 POJO。

Q.9 什么是 Spring IOC 容器?

容器是 Spring Framework 的核心。 是容器创建对象、绑定对象、配置对象,并负责它们从创建到结束的完整生命周期。

Spring 容器使用依赖注入来管理创建应用程序的组件。 容器通过读取由 Java 注释、Java 代码或 XML 给出的配置元数据来获取创建、设置和调用哪些对象的指示。

Q.10 什么是依赖注入?

在依赖注入中,您无需创建对象,而是简单地描述如何创建对象。 开发人员需要在配置文件中描述特定组件需要哪些服务。 无需将服务直接连接到代码中的组件。 它们通过 Spring IoC 容器连接在一起。

Q.11 一个人可以在多少种方法中进行依赖注入?

依赖注入有以下三种方式:

  • 构造函数注入
  • 二传手注入
  • 接口注入

但是,在 Spring Framework 中,只使用了构造函数注入和 setter 注入。

Q.12 是什么让构造函数注入与 setter 注入不同。

构造函数注入二传手注入
没有不完全或有限的注射。 可能存在不完全或有限的注射。
它不会覆盖 setter 属性。 它覆盖了构造函数属性。
如果完成任何更改,它会创建一个新实例。 如果进行更改,它不会创建任何新实例。
它适用于许多属性。 它适用于较少的属性。

Q.13 Spring 提供了多少种 IOC 容器?

您通常可以找到两个 IOC 容器,即:

  1. BeanFactory:BeanFactory 是一种包含一组 bean 的工厂类。 它在客户需要时实例化 bean。
  2. ApplicationContext:ApplicationContext 接口是在 BeanFactory 接口之上创建的。 除了 BeanFactory 提供的功能之外,它还提供了一些额外的功能。

Q.14 告诉我们 BeanFactory 和 ApplicationContext 之间的一些区别。

豆厂应用程序上下文
它是 org.springframework.beans.factory.BeanFactory 中解释的接口它是 org.springframework.context.ApplicationContext 中解释的接口
它使用延迟初始化它使用积极的初始化
它使用语法显式地给出一个资源对象它自己构建和管理资源对象
它无助于国际化它有助于国际化
它不支持基于注释的依赖它有助于基于注释的依赖

Q.15 IoC 有哪些好处?

IoC 的一些好处是:

  • 它将减少应用程序中所需的代码量。
  • 您的应用程序更容易测试,因为它在单元测试用例中不需要任何单例或 JNDI 查找机制。
  • 它鼓励以最小的努力和最少的侵入机制进行松散耦合。
  • 它有助于服务的急切实例化和延迟加载。

Q.16 什么是 Spring Bean?

Spring Bean 是充当用户应用程序主干的对象。 Bean 由 Spring IoC 容器控制。 通过控制它意味着,它们由 Spring IoC 容器实例化、配置、连接和管理。 使用用户提供给容器的配置元数据创建 Bean。

Q.17 配置元数据如何提供给 Spring 容器?

可以通过以下方式之一将配置元数据提供给 Spring 容器:

  • 基于注释的配置:可以使用相关类上的注释来描述 bean 连接到组件类本身。 它不是默认设置。 因此,如果您想使用它,您必须在 Spring 配置文件中启用它才能使用它。
  • 基于 XML 的配置:配置文件中提到了 bean 所需的依赖项和服务。 这些是 XML 格式。 它们由许多 bean 定义和特定于应用程序的配置选项组成。 它们通常以 bean 标签开头。
  • 基于 Java 的配置:Spring Framework 新的 Java 配置支持的主要特性是 @Bean 注解的方法和 @Configuration 注解的类。

Q.18 Spring 支持多少个 bean 作用域?

它支持五个范围:

  • Singleton:这为每个 Spring IoC 容器的单个实例提供了 bean 定义的范围。
  • 原型:这为单个 bean 定义提供了具有任意数量的对象实例的范围。

仅当用户使用 Web 感知 ApplicationContext 时,以下范围才可用。

  • 请求:这为 HTTP 请求提供了 bean 定义的范围。
  • 会话:这为 HTTP 会话提供了 bean 定义的范围。
  • 全局会话:这为全局 HTTP 会话提供了 bean 定义的范围。

Q.19 解释 Spring Bean Factory Container 中的 Bean 生命周期

  1. Spring 容器首先从 XML 文件中的 bean 定义实例化 bean。
  2. Spring 使用依赖注入填充所有属性。
  3. 如果 bean 执行 BeanNameAware 接口,工厂会通过提供 bean 的 ID 来调用 setBeanName()。
  4. 如果 bean 执行 BeanFactoryAware 接口,工厂会通过创建自己的实例来调用 setBeanFactory()。
  5. 如果有任何与 bean 相关的 BeanPostProcessor,则调用 preProcessBeforeInitialization() 方法。
  6. 如果 bean 指定了 init 方法,则调用它。
  7. 如果有任何与 bean 相关的 BeanPostProcessor,则调用 preProcessAfterInitialization() 方法。

Q.20 解释 Bean 接线

Bean 连接是指所有 bean 在 Spring 容器内组合在一起。 Spring 容器必须了解需要哪些 bean,以及它应该如何使用依赖注入将 bean 链接在一起。

Q.21 什么是自动布线以及自动布线的不同模式的名称?

Spring 容器能够自动连接连接 bean 之间的关系。 Spring 可以通过查看 BeanFactory 的内容自动为您的 bean 解析协作者。

bean 自动装配的不同模式是:

  1. no:这是预选的选项,表示不自动接线。 您需要使用显式 bean 引用进行接线。
  2. byName:根据 bean 的名称注入对象依赖。 它将其属性与 XML 文件中的确切名称解释的 bean 配对和连接。
  3. byType:顾名思义,就是根据类型注入对象依赖。 如果类型与 XML 文件中 bean 的名称之一匹配,它匹配并连接一个属性。
  4. 构造函数:构造函数通过调用类的构造函数来注入依赖。 它有很多参数。
  5. 自动检测:默认情况下,容器使用构造函数自动连接。 如果失败,它会尝试按 byType 自动连接。

Q.22 自动布线有哪些限制或限制?

使用自动布线有一些限制/限制,例如:

  • 覆盖可能性:通过使用 <constructor-arg> 和 <property> 设置,您可以指定依赖项。 它将覆盖自动接线。
  • 原始数据类型:原始数据类型、类和字符串不能自动连接。
  • 复杂性:显式接线优于自动接线,因为后者本质上令人困惑。

Q.23 什么是基于注解的容器配置?

XML 设置的替代方法是基于注释的容器配置,用于描述 bean 连接。 开发人员通过在方法、类或字段声明上使用注释将配置转移到组件类中。

Q.24 如何在 Spring 中开启注解连线?

在 Spring 容器中,注解连接默认是关闭的。 因此,要使用基于注解的连接,您必须在 Spring 配置文件中通过设置 <context:annotation-config/> 元素来启用它。

Q.25 解释Spring中@Controller、@Component、@Repository和@Service等各种注解的区别?

@Controller:这表示一个类作为 Spring Web MVC 控制器。 它会自动将标有它的 bean 导入到 Dependency Injection 容器中。

@Component:这表明一个java类是一个bean。 它是任何 Spring 管理的组件的一般构造型。 Spring 的组件扫描过程可以将其拾取并将其拉入应用程序上下文中。

@Service:这个注解是组件注解的一个区域。 @Component 注解没有新的行为。 可以在服务层类中使用@Service 而不是@Component,因为它适当地指定了意图。

@Repository:这个注解是@Component注解的一个区域。 它具有相同的功能和用途。 但是,它为 DAO 提供了一些额外的优势。 它将 DAO 放入 DI 容器中,并将未经检查的异常限定为转换为 Spring DataAccessException。

Q.26 描述 Spring DAO 支持

Spring 中的数据访问对象支持使得以适当和稳定的方式访问 Hibernate、JDBC 或 JDO 等技术变得简单。 它使人们可以毫不费力地选择任何一种技术。 它还使人们能够在不强调捕获与每种技术相关的异常的情况下进行编码。

Q.27 Spring JDBC API 中有哪些类可用?

JDBC API 中存在的类是:

  1. Jdbc模板
  2. SimpleJdbc模板
  3. 命名参数JdbcTemplate
  4. SimpleJdbcInsert
  5. SimpleJdbcCall

Q.28 使用 Spring 访问 Hibernate 的方法有哪些?

有两种方法可以使用 Spring 访问 Hibernate:

  1. 带有回调和休眠模板的控制反转方法。
  2. 应用 AOP 拦截器节点并扩展 HibernateDAOSupport。

Q.29 命名 Spring 支持的事务管理类型

Spring 支持两种类型的事务管理。 他们是:

  1. 程序化事务管理:在这里,事务是在编程的帮助下进行控制的。 它提供了很大的灵活性。 但是,很难维护。
  2. 声明式事务管理:在这里,事务管理与业务代码分开。 可以仅使用注释或基于 XML 的配置来控制事务。

Q.30 描述 AOP

AOP 被称为 Aspect-arranged Programming。 它是一个编程系统,可以让软件工程师模块化横切关注点或跨越标准义务划分的行为。 横切关注点的示例是日志记录和事务管理。 AOP 的核心是一个方面 它举例说明了可以将各种类影响为可重用模块的实践。

Q.31 你所说的 Aspect 是什么意思?

Aspect 是关注点的模块化,它跨越多个对象。 J2EE 中横切关注点的一个很好的例子是事务管理应用程序。 方面是使用常规类执行的,或者使用 Spring Framework 中的 @Aspect 注释解释的常规类。

Q.32 什么是 JoinPoint

程序执行的点称为JoinPoint,例如异常的处理或方法的执行。 在 Spring AOP 中,一个 JoinPoint 始终代表一个方法执行。

Q.33 Spring MVC 框架是什么意思?

Spring Web MVC 框架提供模型-视图-控制器架构和随时可用的组件。 您可以使用这些组件来创建灵活且松散耦合的 Web 应用程序。 MVC 模式支持隔离应用程序的不同方面,如业务逻辑、输入逻辑和 UI 逻辑,同时在每个组件之间提供松散耦合。

Q.34 描述 DispatcherServlet

这是 Spring Web MVC 框架的核心。 它管理所有 HTTP 请求和响应。 DispatcherServlet 从配置文件中获取处理程序映射的条目,并将请求提前传递给控制器​​。 然后控制器给出一个模型和视图的对象。 DispatcherServlet 在配置文件中标记视图解析器的入口,调用定义好的视图组件。

Q.35 解释 WebApplicationContext

WebApplicationContext 是普通 ApplicationContext 的扩充。 它具有 Web 应用程序所需的更多功能。 它与普通的 ApplicationContext 不同,因为它具有解析主题并决定与哪个 servlet 链接的能力。

从世界顶级大学在线学习软件课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

我们已经涵盖了面试官提出的大部分春季面试问题。 如果您有兴趣了解更多信息并需要行业专家的指导,请查看 upGrad & IIIT Banglore 的执行 PG 计划全栈软件开发

什么是 Java Spring?

Sun Microsystems 开发的Java Spring 是一个支持应用程序开发的平台。 Spring 是基于 Java 的服务和 API 的集合,有助于编写可扩展的应用程序。 Spring 是一个开源应用程序开发框架。 它可以与任何基于 Java 的应用程序一起使用,因此使其成为开源的。 Spring 提供实用程序类、异常处理、AOP 和接口来支持企业应用程序。 Java Spring 是一个支持基于 Java 的服务器端应用程序并简化整个开发过程的平台。 它是一个高度灵活的平台,可以与任何基于 Java 的服务器一起使用。 它提供实用程序类和异常处理服务。 它有一个事务支持系统,并提供与数据库的简单绑定。

什么是 Spring MVC?

Spring MVC(模型视图控制器)是一个用 Java 编写的开源 Web 应用程序框架,由 SpringSource 的一个团队在过去四年中开发。 它是在 Servlet API 之上开发的,可用于 Java EE 5 Web 应用程序和 Google Web Toolkit 应用程序。 它还与 Spring Data 和 Spring AOP 集成,因此您可以将它与 Hibernate、JPA 和面向方面的编程以及其他框架一起使用。 Spring MVC 是高度可配置的,并且支持 Spring 的控制反转 (IoC) 原则。 它支持构建有状态的 Web 应用程序,以便您可以在请求之间维护应用程序状态信息。

什么是春季休眠?

Hibernate 是 Java 的对象关系映射 (ORM) 库。 Hibernate 旨在处理 Java 类对象的持久性。 它是一个功能强大、轻量级且极其便携的 ORM 框架。 Hibernate 在 GNU Lesser General Public License (LGPL) 下可用。 Spring Data 是 Spring Framework 中的一个项目,它提供了一组组件,以使用熟悉的 Spring Inversion of Control (IoC) 范例以更加面向对象的方式访问和管理数据。 Hibernate 只是一个 ORM 框架。 另一方面,Spring Data 致力于在各种存储机制(如关系数据库、NoSQL、平面文件等)上创建一个抽象层。