15 个必须知道的 Spring MVC 面试问题

已发表: 2018-03-25

Spring 已成为开发 Web 应用程序最常用的 Java 框架之一。 默认情况下,所有新的 Java 应用程序都使用 Spring 核心和 Spring MVC 框架。 由于其越来越受欢迎,全球的招聘人员都在寻找亲身体验 Spring 框架的候选人。 如果您要参加 Java 开发人员角色的面试,那么 Spring MVC 是您应该在 Spring 框架面试问题上复习知识的第一件事——无论您是新手还是有经验的人。

毕竟,Spring MVC 框架是最常用的 Java 框架,在你参加的任何 Java(或任何相关面试)面试中,你肯定会被问到同样的问题。 如果您不知道,Spring MVC 是一个健壮的基于 Java 的框架,可帮助构建 Web 应用程序。 顾名思义,它使用 MVC 架构——模型、视图、控制器。 Spring MVC 提供了一种在 MVC 框架中使用 Spring 的优雅方式。 Spring 框架于 2002 年发布,是一个开源框架,这意味着世界各地的开发人员都可以为框架的开发和进一步发布做出贡献。

学习构建 Swiggy、Quora、IMDB 等应用程序

这也意味着有一个非常活跃的开发人员社区可以帮助您解决问题。 开源还增加了 Spring 框架提供的众多好处。 尤其是如果您刚开始从事 Java 职业,则需要指导,而多元化的 Java 开发人员社区可确保您在使用 Spring MVC 时不会缺乏任何指导。

提供这么多好处,毫无疑问为什么 Spring MVC 是面试中最喜欢提问的话题。

在本文中,我们将讨论 15 个这样的 Spring MVC 必知问题,您可以期望在您参加的任何面试中遇到这些问题。

1、什么是Spring框架?

Spring 是一个开源框架,旨在简化应用程序开发。 它具有分层结构,允许开发人员选择他们使用的组件。 它包含三个主要组件——Spring Core、Spring AOP 和 Spring MVC。

此外,如果有的话,你可以谈谈你对 Spring 的体验。 这会给你的答案增加很多分量。

为什么公司希望聘请全栈开发人员

2. Spring框架的主要特点是什么?

Spring 框架提供了许多功能,使开发人员的生活变得轻松。 他们之中有一些是:

  • 轻量级: Spring 极其轻量级,基本版本约为 1MB,处理开销可忽略不计。
  • 控制反转(IoC):依赖注入或控制反转是 Spring 最重要的特性之一。 使用 IoC,开发人员无需为对象及其依赖项创建完整的环境; 他们可以简单地创建和测试他们在给定时间点处理的对象。 需要时将包含或调用对象依赖项。
  • 面向方面的编程: Spring 支持面向方面的编程。 AOP将辅助功能与程序员的业务逻辑隔离开来。 这不仅提供了模块化,而且使代码可维护。
  • MVC 架构: Spring 带有一个用于 Web 应用程序的 MVC 框架。 该框架可使用 JSP、Tiles、iText 和 POI 等各种技术进行高度可配置。
  • JDBC 异常处理: Spring 带有一个预定义的 JDBC 抽象层,它简化了整个异常处理过程。

3. 多解释一下依赖注入。

控制反转或依赖注入旨在通过遵循一个简单的概念来简化对象创建过程——不要创建对象,只描述应该如何创建它们。 使用 IoC,对象在构建时由负责协调系统中每个对象的外部实体赋予它们的依赖关系。 本质上,我们使用 IOC 或依赖注入将依赖注入到对象中。

4. 解释 Spring 中不同类型的依赖注入? 什么时候用哪个?

Spring 为开发者提供了以下两种依赖注入:

  • 基于构造函数的 DI:基于构造函数的 DI 是通过将多个参数(每个参数表示对其他类的依赖)传递给类的构造函数来完成的。 简单地说,依赖关系以构造函数参数的形式给出。
  • 基于 Setter 的 DI:当您使用无参数构造函数时,您将通过通过 setter 函数传递参数来实例化所考虑的 bean 来设置值,这称为基于 setter 的依赖注入。

您什么时候使用其中的哪一个,归结为您的要求。 但是,对于可选依赖项,建议使用基于 Setter 的 DI,对强制依赖项使用基于 Constructor 的 DI。
采访 Fynd 联合创始人 Farooq Adam

5、什么是Spring MVC框架?

Spring MVC 是 Spring 框架的核心组件之一。 它带有随时可用的组件和元素,可帮助开发人员构建灵活且健壮的 Web 应用程序。 顾名思义,MVC 架构分离了应用程序的不同方面——输入逻辑、业务逻辑和 UI 逻辑。 它还提供了应用程序的 M、V 和 C 之间的松散耦合。

6. Spring MVC 框架相对于其他 MVC 框架有哪些好处?

Spring MVC 框架与其他框架相比具有一些明显的优势。 一些好处是:

    • 清晰的角色分离——每个角色都有一个专门的对象,从而提供了清晰的角色分离。
    • 可重用的业务代码——使用 Spring MVC,您无需复制代码。 您可以将现有对象用作命令而不是镜像它们,以扩展特定的框架基类。
    • 可定制的绑定和验证
    • 可定制的语言环境和主题分辨率
    • 可定制的处理程序映射和视图分辨率
  • 从 Spring 2.0 开始,该框架附带了一个 JSP 表单标记库,这使得在 JSP 页面中编写表单变得更加容易。

7. DispatcherServlet 是什么?

Spring MVC 框架是请求驱动的,围绕处理所有 HTTP 请求和响应的中央 Servlet 设计。 然而DispatcherServlet的作用远不止于此。 它与 IoC 容器无缝集成,并允许您使用 Spring 的每个功能。
在接收到 HTTP 请求时,DispatcherServlet 会咨询 HandlerMapping(这些是配置文件)以调用适当的 Controller。 然后,控制器调用适当的服务方法来设置模型数据。 它还将视图名称返回给 DispatcherServlet。 DispatcherServlet 在 ViewResolver 的帮助下为请求获取定义的视图。 视图完成后,DispatcherServlet 将模型数据传递给视图——最终在浏览器上呈现。
什么是测试驱动开发:新手指南

8. Spring MVC的前端控制器类是什么?

前端控制器是处理 Web 应用程序的所有请求的控制器。 对于 Spring MVC,DispatcherServlet 就是那个前端控制器。 当一个 Web 请求被发送到 Spring MVC 应用程序时,DISpatcherServlet 会处理所有事情。 首先,它接受请求。 然后,它组织不同的组件,如请求处理程序、控制器、视图解析器等——所有这些都是处理请求所需的。 最后,它在浏览器上呈现内容。

9. 什么是 Viewresolver 模式,它在 MVC 中是如何工作的?

View Resolver 是一种 J2EE 模式,它允许应用程序动态选择在浏览器(视图)上呈现数据的技术。 任何技术,如 HTML、JSP、Tapestry、XSLT、JSF 或任何其他此类技术都可用于 View。 View Resolver 模式保存不同视图的映射。 Controller 返回 View 的名称,然后将其传递给 View Resolver 以选择适当的技术。

10. Spring MVC 如何提供验证支持?

Spring 主要支持两种类型的验证:

  • 使用 JSR-303 注释和任何参考实现,例如 Hibernate Validator,或
  • 实现 org.springframework.validation.Validator 接口。

11.用户在选中复选框时在其他字段中收到验证错误,之后,他取消选中它。 Spring MVC 的命令对象中的当前选择状态是什么? 你将如何解决这个问题?

如果您不了解 Spring MVC 中的 HTTP Post 行为,这是需要回答的棘手问题之一。
在 HTTP Post 期间,如果您取消选中该复选框,则 HTTP 不包含该复选框的请求参数——这意味着不会拾取更新的选择。 要解决此问题,您可以使用以“_”开头的隐藏表单字段。
如何在您的第一份软件开发工作中取得成功

12. MVC 框架与三层架构相比如何?

三层架构是一种架构风格,而 MVC 是一种设计模式。
带有 mvc 部分的 3 层架构
话虽如此,在较大的应用程序中,MVC 形成了三层架构的表示层。 模型、视图和控制器只关心表现——它们使用中间层来填充它们的模型。

13、我们应该如何在Spring中使用JDBC来优化性能?

Spring 提供了一个名为JDBCTemplate的模板类 将 JDBC 与此模板一起使用可为流形提供更好的性能。

14. Spring 框架上下文中的“Bean”是什么意思?

任何由 IoC 容器初始化的类在 Spring 中都称为 bean。 Spring Bean 的生命周期由 Spring IoC Container 管理。

15. Spring Beans 中的“作用域”是什么?

Spring Beans 带有以下五个作用域:

    • Prototype :每当有对 bean 的请求时,每次都会创建一个单独的原型。
    • Request :它与之前的范围类似,但仅适用于基于 Web 的应用程序。 对于每个 HTTP 请求,Spring 都会创建一个新的 bean 实例。
    • Singleton :每个容器只创建一个 bean,它充当该 bean 的默认范围。 在所有这些实例中,bean 不能使用共享实例变量,因为它会导致数据不一致。
    • 会话:为每个 HTTP 会话创建一个 bean
    • Global-session :为 Portlet 应用程序创建全局会话。

Spring 框架是可扩展的,也就是说,您也可以创建自己的范围。 bean 元素的“范围”属性用于定义范围。
如何成为全栈开发人员

包起来…

这都是关于围绕 Spring 框架的必知 Spring 面试问题和答案——准确地说是 Spring MVC。 如果您是一名希望开始使用 Spring 的 Java 开发人员,那么现在正是最佳时机! 如果您正在寻找 Java 面试问题,请阅读更多。

花一些宝贵的时间来解决 Java Spring 面试问题,你会很高兴的。 由于它必须提供的功能,组织正在寻找对这个框架有强大控制力的开发人员。

报名参加世界顶尖大学的软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

成为全栈开发人员

UpGrad 和 IIIT-Bangalore 的软件开发 PG 文凭
申请 IIITB 软件开发执行 PG 计划