在Spring框架使J2EE(Java 2平台企业版)的开发更容易,用于创建可测试的,高性能的,可重用的代码。由于其模块化和依赖注入特性,Spring通常用于信息技术和金融领域。
对于希望在MIT,Accenture或Visa等公司工作的开发人员来说,金融技术是一个令人兴奋且不断发展的领域,他们更喜欢Spring而不是Java EE。这些公司正在寻找像您一样具有Spring Framework经验的开发人员来帮助数字化他们的企业需求。
但是,您如何知道是否准备好接受面试呢?您如何准备?
今天,我们将仔细阅读有关40个Spring面试问题的学习指南,以确保您准备好应对Spring Framework面试。
这是我们今天要介绍的内容:
什么是Spring框架? 从Spring Framework访谈中可以期待什么 Spring框架的前40个问题 总结以及接下来要学习的内容
春季徽标
什么是Spring框架? 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中测试应用程序很容易。
Spring提供了出色的API,因此可以轻松处理特定于技术的异常。
从Spring Framework访谈中可以期待什么 寻求Spring Framework专业知识的大多数公司都是金融公司,例如银行和投资公司。春季申请人的一些顶级雇主包括花旗银行,eBay,Visa和JP Morgan。
这些公司对使用Spring来保护和优化其会计和销售堆栈感兴趣。因此,大多数面试问题都会测试您对这些功能的知识,例如依赖项注入,面向方面的编程和MVC。
还有一些一般性问题,以确保您完全了解Spring的各个部分,例如命名Web应用程序开发或数据库连接中使用的模块。
最后,您肯定会被问到关于为什么使用Spring及其带来的好处的总体问题。
为了帮助您做好准备,我们收集了40个面试重点问题,以使您对这些类别的知识有所了解。
让我们开始吧!
Spring框架的前40个问题:
1. Spring有什么好处?
Lightweight
Scalable:
Exception Handling
Layered Architecture
POJO Enabled
Open-source
Inversion of control (IOC)
Aspect-oriented (AOP)
2. Spring的配置文件是什么? Spring的配置文件是一个XML包含项目的类信息的文件。它们描述了每个类的配置,如何将它们引入其他类以及整个程序的依赖关系。
3. Spring框架有哪些不同的模块? 总共大约有20个模块,分为核心容器,数据访问/集成,Web,AOP(面向方面的编程),检测和测试等层。
核心容器: Spring框架的核心包含4个模块。
SSpring Context
数据访问/集成:支持与5个模块的数据库交互。
JDBC (Java DataBase Connectivity)
Web:添加了对使用4个模块创建Web应用程序的支持。
Web
Aspect-Oriented Programming:该层使您可以使用“建议”和“切入点”功能解耦代码。
Aspect-Oriented Programming
Instrumentation:这一层增加了对类工具和类加载器实现的支持。
Instrumentation
Test:添加了对使用Junit和TestNG进行测试的支持。
Test
Miscellaneous:在这些层类别之外还存在2个模块。
Miscellaneous
`Aspects`:允许Spring与Aspect集成。 `Messaging`:添加了对STOMP(一种注释编程模型)的支持,并允许您从WebSocket客户端路由STOMP消息。
4. Spring应用程序有哪些不同的组件? Spring应用程序包含5个组件:
Interface:定义程序功能。 Bean class:包含属性,用于访问Bean的setter和getter方法以及特定的函数等。 Spring面向方面的编程(AOP):包括横切关注点功能,面向对象的编程中不支持此功能。 Bean配置文件:包含类的信息,如何配置它们以及定义它们之间的关系。 User program:在整个程序中调用函数
Interface
Bean class
Spring面向方面的编程(AOP)
Bean配置文件
User program
5.什么是依赖注入? 依赖注入(DI)是定义如何连接多个类的概念。这是控制反转的一个例子。使用依赖注入时,您不需要在代码中显式连接服务和组件。
而是在XML配置文件中描述每个组件所需的服务,并允许IOC容器自动连接它们。
XML
6.什么是Spring IoC容器? IoC容器创建,配置和连接对象,同时还管理对象的生命周期。容器从用户给定的配置元数据中获取有关这些区域的指令。
7. IoC的类型是什么? BeanFactory Container:此工厂类包含一个预包装的bean集合,这些bean在被客户端调用时实例化。这是支持DI的最基本的容器。
ApplicationContext Container:在BeanFactory容器之上构建,此容器提供了其他针对企业的功能。例如,ApplicationContextContainer授予解析文本消息和发布应用程序事件的功能。
8.什么是面向方面的编程(AOP)? AOP是一种编程技术,它允许程序员对行为进行模块化,该行为用于面向对象编程中的典型职责划分。核心AOP结构方面是适用于整个类的行为。从各个bean的各个方面提取这些行为,可以轻松地重用它们。
9.什么是Spring beans? Bean是在传递给IOC容器时从配置元数据创建的对象。它们构成了所有Spring程序的基础。IOC容器实例化,配置,连接和管理每个bean。
10. ApplicationContext的常见实现是什么? 三种最受欢迎的容器是:
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。
@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的五个作用域:
Singleton:将bean定义的范围限制为每个Spring IoC容器一个实例 Prototype:作用域单个bean以启用任意数量的实例。 Request::将bean定义的作用域限定为ApplicationContext中的单个HTTP请求 Session:将bean定义的作用域限定为ApplicationContext中的HTTP会话 Global-session:将bean定义的作用域限定为全局HTTP
14. Bean生命周期的步骤是什么?
Bean生命周期有七个步骤:
15.在spring解释bean。 内部bean用作另一个bean的属性。可以在配置XML文件中的<property>或constructor-arg>元素下定义内部bean 。所有内部bean的作用域始终为,prototype并且没有标识符。
<property>
constructor-arg>
16.什么是bean自动接线? 这是一种Spring功能,它允许Spring容器通过查看BeanFactory来自动设置协作bean之间的依赖关系。可以设置自动装配以使用bean的名称或类型甚至是类构造函数来定义这些关系。
17.如何在Spring中注入Java Collection? 可以通过四种不同的方式注入Java集合:
<list>:可帮助您连接一组值(如列表),同时允许重复。
list>
<set>:帮助您连接一组值,同时避免重复。
<set>
<map>:允许您注入任何数据类型的键/值对的集合。
<map>
<props>:允许您注入键值类型为的键值对集合String。
<props>
18.什么是Joinpoint? Joinpoint表示程序中执行操作的任何点。Joinpoint的示例包括在处理异常或执行方法时。使用AOP时,仅方法执行是Joinpoint。
19.Spring的建议是什么? 建议是在给定的连接点处执行的操作。在方法执行完成之前,AOP使用Advice作为拦截器。
20. Spring框架的建议类型是什么? Before:这些是在连接点方法之前执行的建议。它们使用@Before注释标记进行标记。 After returning:它们在联接点的方法完成执行而没有问题之后执行。它们使用@AfterReturning注释标记进行标记。 After throwing:仅当joinpoint方法以抛出异常结束时执行。它们使用@AfterThrowing注释标记进行标记。 After:它们在联接点方法之后执行,无论它如何完成。它们使用@After注释标记进行标记。 Around:它们在连接点之前和之后执行,并使用@Around注释标记进行标记。
21.什么是Weaving? 在Spring中进行Weaving是将元素链接到其他应用程序类型或对象以创建建议对象的过程。这是在运行时完成的。
22.描述Spring DAO支持。 数据访问对象(DAO)支持是一组工具,使使用Hibernate和JDO之类的数据访问技术更容易且具有更高的一致性。它还可以自动捕获特定于技术的错误。这些都使DAO易于使用,并允许您在持久性技术之间进行切换而不会出错。
23.什么是JDBC?Spring JDBC API中存在哪些类? JDBC代表Java数据库连接。它是Java中的应用程序编程接口,用于定义程序如何访问数据库。JDBC API包含:
JdbcTemplate NamedParameterJdbcTemplate SimpleJdbcCall SimpleJdbcInsert SimpleJdbcTemplate
JdbcTemplate
NamedParameterJdbcTemplate
SimpleJdbcCall
SimpleJdbcInsert
SimpleJdbcTemplate
24.什么是Spring Model-View-Controller(MVC)框架? Spring MVC框架提供了模型视图控制器架构和用于开发松耦合Web应用程序的预制组件。使用MVC,您可以分离程序的不同方面,例如业务,输入和UI逻辑,同时彼此之间仍然保持松散耦合。这使您的Web应用程序具有更大的灵活性。
DispatcherServlet: MVC的这一部分管理所有HTTP请求以及与程序交互的响应。所述DispatcherServlet第一从配置文件接收相关的处理程序映射,然后通过关闭请求到控制器。这DispatcherServlet是Spring Web MVC框架中最重要的部分。 WebApplicationContext:这是普通ApplicationContext的扩展,具有Web应用程序所需的其他功能。它可以唯一地解析主题,并自动确定与之关联的servlet。 Controllers::这些是内的Bean DispatcherServlet,充当用户输入和应用程序响应之间的过滤器。控制器接受用户输入,决定是否应将其转换为View或Model,最后将转换后的输入返回给View Resolver进行检查。
26. DispatcherServlet的不同部分是什么?
27.如何在Spring中打开注释接线? 要允许注释接线,请<context:annotation-config/>在您的XML配置文件中包括:
<context:annotation-config/>
<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应用程序快速运行。
29.什么是反应式编程? 响应式编程是一种编程范例,它依赖于在事件上触发的已编程动作,而不是基于代码的时间顺序。响应式程序可以有效利用计算机资源,并且只需几个线程即可很好地扩展。它的非顺序形式使您可以避免堆栈阻塞并保持响应速度。
30.什么是Spring Webflux? Webflux是一种反应式Web框架,可以替代MVC。Webflux提供了更好的可伸缩性并防止了堆栈阻塞。
31. WebClient和Webtestclient有什么区别? 该WebClient是从Web无框架,使得它更容易建立反应和无阻塞的Web应用程序的组件。
WebClient
该Webtestclient是一个版本的客户端与所有相同的功能,但是从现场的环境断开。测试客户端不需要HTTP服务器实时环境即可工作,这使其成为新应用程序的良好测试环境。它可以通过HTTP连接连接到任何服务器,也可以直接与WebFlux同步以应用模拟HTTP请求并生成响应对象。
Webtestclient
32. Spring Boot可以在同一应用程序中允许Spring MVC或Spring WebFlux吗? 引导程序可在同一应用程序中同时允许两者,但一次只能应用一个。WebFlux是一个非阻塞框架,而MVC是一个阻塞框架,使它们无法兼容。
33. Spring 5可以与Jdk9模块化集成吗? 是的,Spring 5可以与Jdk9集成。您可以按照以下方法进行操作:
package com.hello; public class HelloWorld { public String sayHello(){ return "HelloWorld"; } }
module com.hello { export com.hello; }
module com.hello.client { requires com.hello; }
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之间创建依赖关系。
<bean>
@Configuration
@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:
39.指出Spring AOP中关注点和横切关注点之间的区别吗?
一个问题是我们试图在应用程序的特定模块中实现的目标功能。
横切关注点是在整个应用程序中使用的关注点,而不仅仅是在特定模块中使用。
数据记录是横切关注点的一个很好的例子,因为无论它位于哪个模块中,记录都是有用和期望的。
40. Spring提供哪些事务管理类型?
声明式事务管理:此类型使用注释或XML配置来管理事务,以将事务管理与程序的业务代码分开。尽管易于维护,但这种样式的功能受到更多限制。
程序化交易管理:此类型使用专门制作的程序来管理交易。这些程序的自定义允许更灵活的管理,但是在过程中引入了更多的错误空间。
总结以及接下来要学习的内容
恭喜您完成了这40个Spring Framework面试问题。与任何面试一样,Spring面试的成功取决于您的准备,进行各种面试问题的练习,Spring项目的经验以及对行为面试技巧的熟悉。
即使您第一次没有收到报价,经验和曝光也可以帮助您在重新申请时脱颖而出。最重要的是要保持信心和信任,您应该得到这份工作!您可以探索一些将Spring知识付诸实践的项目:
祝你好运,学习愉快!
原文链接:http://codingdict.com