2022年Java秋招面试必看的 | Spring面试题
前言
本文旨在探讨面试中涉及的一些Spring相关的问题。这些题目通常涉及较为宏观层面的Spring概念,并不涉及何时使用何种注解或具体配置设置等问题。尽管在Spring相关的技术 interviews中出现的问题相对较少,但为了应对考试需求,我们准备了一些这些问题都是之前在 interviews中常考且较好的题目。
2022秋招面试资料合集白嫖:大家可以扫二维码免费领取
持续更新中!
持续更新中!
这份2022年Java秋招备战面试题共计约一千道真题左右,并涵盖MyBatis等16个核心技术领域。这些内容均整理自本人今夏暑期针对 Java 技术准备的系统复习,并已帮助众多求职者顺利收获理想中的offer。现为大家整理并分享
1、不同版本的 Spring Framework 有哪些主要功能

2、什么是 Spring Framework?

3、列举 Spring Framework 的优点。

4、Spring Framework 有哪些不同的功能?

5、Spring Framework 中有多少个模块,它们分别是什么?


6、什么是 Spring 配置文件?

7、Spring 应用程序有哪些不同组件?

8、使用 Spring 有哪些方式?

9、什么是 Spring IOC 容器?

10、什么是依赖注入?

11、可以通过多少种方式完成依赖注入?

12、区分构造函数注入和 setter 注入。

13、spring 中有多少种 IOC 容器?

14、区分 BeanFactory 和 ApplicationContext。

15、列举 IoC 的一些好处。

16、Spring IoC 的实现机制。
Spring 中的 IoC 的实现原理就是工厂模式加反射机制。
interface Fruit {
public abstract void eat();
}
class Apple implements Fruit {
public void eat(){
System.out.println("Apple");
} }
class Orange implements Fruit {
public void eat(){
System.out.println("Orange");
} }
class Factory {
public static Fruit getInstance(String ClassName) {
Fruit f=null;
try {
f=(Fruit)Class.forName(ClassName).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return f;
} }
class Client {
public static void main(String[] a) {
Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
if(f!=null){
f.eat();
}
}
}
17、什么是 spring bean?
- 该系统架构中的Bean由Spring IoC容器进行管理。
- 通过Spring IoC容器进行实例化、配置、装配和管理。
- 该系统架构中的Bean通过Spring IoC容器完成实例化、配置、装配和管理流程。
- 该系统架构中的Bean基于用户提供的配置元数据信息进行创建。
18、spring 提供了哪些配置方式?
基于 xml 配置
该应用程序所需的依赖项和服务通常以XML格式的形式存储在特定的配置文件中。每个配置文件中通常包含大量Bean定义以及与应用程序相关的特定配置选项。这些设置通常会以Bean标签的形式进行标识。
例如:
<bean id="studentbean" class="org.edureka.firstSpring.StudentBean">
<property name="name" value="Edureka"></property>
</bean>
基于注解配置
您可借助于相关类、方法或字段声明上的注解来配置
将其配置为组件类本身
无需借助 XML 描述 Bean 的装配方式。
通常情况下
在 Spring 容器中未打开注解装配
因此建议您先在其 Spring 配置文件中启用它
例如:

19、spring 支持集中 bean scope?

20、spring bean 容器的生命周期是什么样的?


21、什么是 spring 的内部 bean?
当且仅当某个豆子被用作另一个豆子的属性时, 才能将其声明为内部豆子. 在或者中提供用于定义豆子的方法, Spring通过基于XML的配置元数据实现了这一点. 内部豆子始终以匿名形式存在, 它们总是以原型为基础运作.
举个例子来说吧,比如我们有一个Student类,在其内部继承了Person类的功能。在这里,我们将仅生成一个Person类实例,并在Student中使用它来完成必要的功能开发。
Student.java
public class Student {
private Person person;
//Setters and Getters
}
public class Person {
private String name;
private String address;
//Setters and Getters
}
bean.xml
<bean id=“StudentBean" class="com.edureka.Student">
<property name="person">
<!--This is inner bean -->
<bean class="com.edureka.Person">
<property name="name" value=“Scott"></property>
<property name="address" value=
“Bangalore"></property>
</bean>
</property>
</bean>
22、什么是 spring 装配
当组件在Spring容器中整合时,它被称为组装或组件集成.该容器需了解所需的组件类型以及如何利用依赖注入将组件关联起来,同时实现豆件的集成
23、自动装配有哪些方式?

24、自动装配有什么局限?

25、什么是基于注解的容器配置
避免在对象模型中以 XML 格式定义组件组装。相反地,开发人员可以通过在相关类、方法或字段声明处添加注解机制来将配置直接嵌入组件类型中。这为组件配置提供了与 XML 设置相当的简洁性和可维护性。
例如:
Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。
@Bean注解扮演与属性相同的角色。
@Configuration类支持通过直接引用同一个类中的其他@Bean注解来建立组件间的依赖关系。
例如:
@Configuration
public class StudentConfig {
@Bean
public StudentBean myStudent() {
return new StudentBean();
} }
26、如何在 spring 中启动注解装配?
默认情况下,在Spring容器中未打开注解式组件集成(WFI)。因此必须通过配置<context: annotation-config/>元来启用基于注解式的组件集成功能。
27、@Component, @Controller, @Repository**, @Service 有何区别?**

28、@Required 注解有什么用?

29、@Autowired 注解有什么用?

30、@Qualifier 注解有什么用?


31、@RequestMapping 注解有什么用?

32、spring DAO 有什么用?
Spring DAO实现了JDBC、Hibernate或JDO等数据访问技术以一致的方式运行,并使用户能够轻松切换至不同的持久性技术体系。通过无需捕获不同持久性技术相关异常来简化开发流程,在编写代码时可避免处理各类数据访问技术特有的异常情况。
33、列举 Spring DAO 抛出的异常。

34、spring JDBC API 中存在哪些类?
- JSQLException
- SimplescoringStatement
- SimplescoringQuery
35、使用 Spring 访问 Hibernate 的方法有哪些?
我们可以通过两种方式使用 Spring 访问 Hibernate:
1、 使用 Hibernate 模板和回调进行控制反转
2、 扩展 HibernateDAOSupport 并应用 AOP 拦截器节点
36、列举 spring 支持的事务管理类型

37、spring 支持哪些 ORM 框架
- Hibernate
- iBatis
- JPA
- JDO
- OJB
38、什么是 AOP?

39、什么是 Aspect?


40、什么是切点(JoinPoint)
程序运行中存在某些时间节点, 如一个方法的运行或一次异常处理操作. 在 Spring AOP 中, join point 必然是该方法运行时必定会遇到的一个点.
41、什么是通知(Advice)?
在特定位置处的 Aspect 所采取的行为称为 Advice。Spring AOP 中则在一个Advice 的作用下,在其附近的Interceptors 被注册。
42、有哪些类型的通知(Advice)?

43、指出在 spring aop 中 concern 和 cross-cutting conce

44、AOP 有哪些实现方式?
实现 AOP 的技术,主要分为两大类:

45、Spring AOP and AspectJ AOP 有什么区别?
Spring AOP 采用动态代理机制实现;而 AspectJ 则采用静态代理机制实现。对于 SpringAOP 来说,它仅针对方法级别的 PointCut 点位提供支持,并实现了全面的 AOP 功能,并进一步拓展至属性级别的 PointCut 点位支持。
46、如何理解 Spring 中的代理?
通过将 Advice 应用于目标对象后所创建的对象被称为代理;当客户端对象时,在这种情况下,在客户端情况下
Advice + Target Object = Proxy
47、什么是编织(Weaving)?

48、Spring MVC 框架有什么用?
基于Spring模型-视图-控制器(MVC)框架提供了一套预设配置好的组件体系,该系统架构能够快速构建功能灵活且解耦度高的Web应用程序。MVC模式通过将应用的核心功能划分为输入逻辑、业务逻辑和UI逻辑等三大核心模块,从而使得各个功能模块之间具有解耦关系,保证了整个系统的灵活性与可维护性。
49、描述一下 DispatcherServlet 的工作流程
DispatcherServlet 的工作流程可以用一幅图来说明:


50、介绍一下 WebApplicationContext
WebApplicationContext 是一个为 Web 应用程序设计的扩展类。该类提供了一些专为 Web 应用程序开发的独特功能。在解析主题以及确定与哪个 servlet 相关联的能力上,该类与其他 typical 的ApplicationContext 存在显著差异。
51、什么是 spring?

52、使用Spring框架的好处是什么?

53、Spring由哪些模块组成?
以下是 Spring 框架的基本模块:
- 核心组件
- Bean类模块
- 上下文管理模块
- 表达式语言模块
- JDBC组件
- 对象关系映射模块
- 对象事务模型组件
- Java消息服务(JMS)组件
- 事务管理组件
- 网络应用组件
- Web-Servlet组件
- WebStruts组件
- WebPortlet组件
54、核心容器(应用上下文) 模块。
该 Spring 核心模块构成基础功能。
该 Spring 核心模块包含构成 spring 框架的基本功能。
BeanFactory 是所有基于 spring 应用的关键组件。
该 Spring 核心模块作为支撑平台。
从而将 Spring 构建成为一个功能齐全的容器系统。
55、BeanFactory – BeanFactory 实现举例。
Bean 作为工厂模式的具体化方案实现了将配置与依赖分离的功能,并通过控制反转机制从核心代码中解耦配置与业务逻辑。
最常用的 BeanFactory 实现是 XmlBeanFactory 类。
👇🏻 添加 博主 获取更多资料👇🏻
