前言
本篇要是讲面试过程中遇到的一些 Spring 相关的面试题。这些面试题多数是相对较宏观层面的 Spring 只是,不会涉及到啥时候用啥注解或者说具体某个配置如何设置之类的问题。虽然面试过程中 Spring 相关的面试题可能不多,这里还是准备了些。都是之前面试被问到过的比较好的问题。
小编分享的这份2022年Java秋招备战面试题总计有1000多道面试题,包含了MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Java 并发编程、Java基础、Spring、微服务、Linux、Spring Boot 、Spring Cloud、RabbitMQ、kafka等16个专题技术点,都是小编在今年金三银四总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!【已完结】
序号 | 专题技术 | 内容 | 地址 |
---|---|---|---|
1 | MyBatis | Mybatis面试题 | https://cloud.tencent.com/developer/article/2026189 |
2 | ZooKeeper | ZooKeeper面试题 | https://cloud.tencent.com/developer/article/2026909 |
3 | Dubbo | Dubbo面试题 | https://cloud.tencent.com/developer/article/2030747 |
4 | Elasticsearch | Elasticsearch 面试题 | https://cloud.tencent.com/developer/article/2038018 |
5 | Memcached | Memcached面试题 | https://cloud.tencent.com/developer/article/2038059 |
6 | Redis | Redis 面试题 | https://cloud.tencent.com/developer/article/2038092 |
7 | MySQL | MySQL 面试题 | https://cloud.tencent.com/developer/article/2038404 |
8 | Java并发编程 | Java并发编程面试题 | https://cloud.tencent.com/developer/article/2038457 |
9 | Java基础 | Java基础面试题 | https://cloud.tencent.com/developer/article/2038534 |
10 | Spring | Spring面试题 | https://cloud.tencent.com/developer/article/2038575 |
11 | 微服务 | 微服务面试题 | https://cloud.tencent.com/developer/article/2044898 |
12 | Linux | Linux面试题 | https://cloud.tencent.com/developer/article/2044899 |
13 | Spring Boot | Spring Boot面试题 | https://cloud.tencent.com/developer/article/2044900 |
14 | Spring Cloud | Spring Cloud面试题 | https://cloud.tencent.com/developer/article/2044901 |
15 | RabbitMQ | RabbitMQ面试题 | https://cloud.tencent.com/developer/article/2044925 |
16 | kafka | kafka面试题 | https://cloud.tencent.com/developer/article/2044953 |
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 的实现原理就是工厂模式加反射机制。
代码语言:javascript复制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 是基于用户提供给容器的配置元数据创建。
18、spring 提供了哪些配置方式?
基于 xml 配置
bean 所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常包含许多 bean 定义和特定于应用程序的配置选项。它们通常以 bean 标签开头。
例如:
代码语言:javascript复制<bean id="studentbean" class="org.edureka.firstSpring.StudentBean">
<property name="name" value="Edureka"></property>
</bean>
基于注解配置
您可以通过在相关的类,方法或字段声明上使用注解,将 bean 配置为组件类本身,而不是使用 XML 来描述 bean 装配。默认情况下,Spring 容器中未打开注解装配。因此,您需要在使用它之前在 Spring 配置文件中启用它。
例如:
19、spring 支持集中 bean scope?
20、spring bean 容器的生命周期是什么样的?
21、什么是 spring 的内部 bean?
只有将 bean 用作另一个 bean 的属性时,才能将 bean 声明为内部 bean。为了定义 bean,Spring 的基于 XML 的配置元数据在 <property> 或<constructor-arg> 中提供了 <bean> 元素的使用。内部 bean 总是匿名的,它们总是作为原型。
例如,假设我们有一个 Student 类,其中引用了 Person 类。这里我们将只创建一个 Person 类实例并在 Student 中使用它。
代码语言:javascript复制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 装配
当 bean 在 Spring 容器中组合在一起时,它被称为装配或 bean 装配。Spring容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定在一起,同时装配 bean
23、自动装配有哪些方式?
24、自动装配有什么局限?
25、什么是基于注解的容器配置
不使用 XML 来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上使用注解将配置移动到组件类本身。它可以作为 XML 设置的替代方案。
例如:
Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。
@Bean 注解扮演与 元素相同的角色。 @Configuration 类允许通过简单地调用同一个类中的其他 @Bean 方法来定义 bean 间依赖关系。
例如:
代码语言:javascript复制@Configuration
public class StudentConfig {
@Bean
public StudentBean myStudent() {
return new StudentBean();
} }
26、如何在 spring 中启动注解装配?
默认情况下,Spring 容器中未打开注解装配。因此,要使用基于注解装配,我们必须通过配置 <context:annotation-config/> 元素在 Spring 配置文件中启用它。
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 中存在哪些类?
- JdbcTemplate
- SimpleJdbcTemplate
- NamedParameterJdbcTemplate
- SimpleJdbcInsert
- SimpleJdbcCall
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)?
特定 JoinPoint 处的 Aspect 所采取的动作称为 Advice。Spring AOP 使用一个 Advice 作为拦截器,在 JoinPoint“周围”维护一系列的拦截器。
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 应用于目标对象后创建的对象称为代理。在客户端对象的情况下,目标对象和代理对象是相同的。
代码语言:javascript复制Advice Target Object = Proxy
47、什么是编织(Weaving)?
48、Spring MVC 框架有什么用?
Spring Web MVC 框架提供 模型-视图-控制器 架构和随时可用的组件,用于开发灵活且松散耦合的 Web 应用程序。MVC 模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和 UI 逻辑,同时在所有这些元素之间提供松散耦合。
49、描述一下 DispatcherServlet 的工作流程
DispatcherServlet 的工作流程可以用一幅图来说明:
50、介绍一下 WebApplicationContext
WebApplicationContext 是 ApplicationContext 的扩展。它具有 Web 应用程序所需的一些额外功能。它与普通的 ApplicationContext 在解析主题和决定与哪个 servlet 关联的能力方面有所不同。
51、什么是 spring?
52、使用Spring框架的好处是什么?
53、Spring由哪些模块组成?
以下是 Spring 框架的基本模块:
- Core module
- Bean module
- Context module
- Expression Language module
- JDBC module
- ORM module
- OXM module
- Java Messaging Service(JMS) module
- Transaction module
- Web module
- Web-Servlet module
- Web-Struts module
- Web-Portlet module
54、核心容器(应用上下文) 模块。
这是基本的 Spring 模块,提供 spring 框架的基础功能,BeanFactory 是 任何以 spring 为基础的应用的核心。Spring 框架建立在此模块之上,它使 Spring 成为一个容器。
55、BeanFactory – BeanFactory 实现举例。
Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离。
最常用的 BeanFactory 实现是 XmlBeanFactory 类。