吃透互联网必问的100道Spring全家桶高频真题,金九银十稳了

前言

这篇文章主要是记录一下自己的面试经历,分享一些小伙伴们都很关注的面试题,然后文章末尾也会推荐一些电子书籍,完全免费推荐的哈,我个人感觉不错的,可以提升技术的,当然面试中也会对你有特别大的帮助。这次主要分享Spring全家桶系列的面试题,当然,面试题只是起一个查漏补缺的作用,并不是让你直接去整理答案,去背答案的哈。一个合格的面试官,是会针对你的简历去问的,每个人的面试题也都是不一样的。

喜欢挑战自己的可以先看目录自己做做,不会的再看答案解析!

一、微服务

  • Sentinel怎么防止激增流量打垮冷系统?
  • Ribbon说说有哪些负载均衡策略
  • 你们的微服务项目里面有没有用到什么监控追踪工具?
  • 说说Seata的实现原理?
  • 什么是服务熔断?什么是服务降级?区别是什么?
  • 什么是服务雪崩?什么是服务限流?
  • 说说服务网关可以做什么?
  • 谈谈配置中心?
  • 注册中心的原理是什么?
  • Spring Cloud有哪些常用组件,作用是什么?
  • 分布式架构下会有什么问题?
  • SOA、分布式、微服务之间有什么关系和区别?
  • 什么情况下需要进行微服务架构?

二、Spring Boot

  • 说说你在开发的时候怎么在SpringBoot的基础上做扩展?
  • SpringBoot的默认日志实现框架是什么?怎么切换成别的?
  • SpringBoot读取配置文件的原理是什么?
  • SpringBoot中配置文件的加载顺序是怎样的?
  • 会不会SpringBoot自定义Starter?大概实现过程?
  • SpringBoot外置Tomcat启动原理?
  • SpringBoot内置Tomcat启动原理?
  • SpringBoot的启动原理?
  • 为什么SpringBoot的jar可以直接运行?
  • springboot的自动配置原理?
  • SpringBoot的核心注解
  • Spring和SpringBoot的关系和区别?
  • 谈谈你对SpringBoot的理解,它有哪些特性(优点)?

三、Spring MVC

  • SpringMVC的拦截器和过滤器有什么区别?执行顺序?
  • 如何实现无XML零配置的SpringMVC
  • 是否可以把我们所需的Bean都放入Spring­mvc子容器里面来管理(springmvc的spring-servlet.xml中配置全局扫描)?
  • 是否可以把所有Bean都通过Spring容器来管理?(Spring的applicationContext.xml中配置全局扫描)
  • Spring和SpringMVC为什么需要父子容器?
  • SpringMvc怎么和AJAX相互调用的?
  • 请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?
  • Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?
  • 说说你是如何解决 get 和 post 乱码问题?
  • 什么是Spring MVC?简单介绍下你对Spring MVC的理解?

四、Spring核心API

  • Spring是如何整合MyBatis将Mapper接口注册为Bean的原理?
  • Spring 框架中都用到了哪些设计模式?
  • Spring事件监听的核心机制是什么?

五、Spring事务

  • Spring事务的失效原因?
  • Spring多线程事务 能否保证事务的一致性(同时提交、同时回滚)?
  • Spring事务传播行为实现原理:
  • Spring事务实现原理
  • 说一下 spring 的事务隔离?
  • 说一下Spring的事务传播行为
  • Spring支持的事务管理类型, spring 事务实现方式有哪些?
  • 事务四大特性

六、Spring AOP

  • Spring的 Aop的完整实现流程?
  • Spring的AOP是在哪里创建的动态代理?
  • 什么情况下AOP会失效,怎么解决?
  • 介绍AOP有几种实现方式
  • JavaConfig方式如何启用AOP?如何强制使用cglib?
  • JDK动态代理和CGLIB动态代理的区别
  • Spring AOP and AspectJ AOP 有什么区别?
  • Spring通知有哪些类型?
  • 解释一下Spring AOP里面的几个名词
  • 什么是AOP、能做什么

七、Spring注解

  • 为什么@ComponentScan 不设置basePackage也会扫描?
  • @Bean之间的方法调用是怎么保证单例的?
  • 配置类@Configuration的作用解析原理:
  • 使用@Autowired注解自动装配的过程是怎样的?
  • @Autowired和@Resource之间的区别
  • @Autowired 注解有什么作用
  • 如何让自动注入找到多个依赖Bean时不报错
  • 如何让自动注入没有找到依赖Bean时不报错
  • @Import可以有几种用法?
  • @Component, @Controller, @Repository, @Service 有何区别?
  • 用过JavaConfig方式的spring配置吗?它是如何替代xml的?
  • Spring有哪几种配置方式:

八、Spring Beans

  • Bean的创建顺序是什么样的?
  • Spring容器启动时,为什么先加载BeanFactoryPostProcess
  • 如何在Spring所有Bean创建完后做扩展?
  • 如何在Spring所有BeanDefinition注册完后做扩展?
  • BeanDefinition的加载过程:
  • Spring如何避免在并发下获取不完整的Bean?
  • Spring是如何解决Bean的循环依赖?
  • 解释Spring框架中bean的生命周期
  • Spring 在加载过程中Bean有哪几种形态:
  • 有哪些生命周期回调方法?有哪几种实现方式?
  • 解释不同方式的自动装配,spring 自动装配 bean 有哪些方式?
  • 自动装配有哪些限制(需要注意)?
  • 什么是bean的自动装配?
  • 什么是bean装配?
  • Spring如何处理线程并发问题?
  • Spring框架中的单例bean是线程安全的吗?
  • Spring实例化bean方式的几种方式
  • 单例bean的优势
  • 解释Spring支持的几种bean的作用域
  • 配置Bean有哪几种方式?
  • 什么是Spring beans?

九、Spring IOC

  • 你知道Spring的哪些扩展点,在什么时候调用?
  • IOC容器的加载过程:
  • BeanFactory 和FactoryBean有什么区别?
  • BeanFactory 和 ApplicationContext有什么区别?
  • BeanDefinition的作用
  • BeanFactory的作用
  • 紧耦合和松耦合有什么区别?
  • 什么是Spring的依赖注入(DI)?IOC和DI的区别是什么
  • Spring IoC 的实现机制是什么?
  • IOC的优点是什么?
  • 控制反转(IoC)有什么作用
  • 什么是Spring IOC 容器?有什么作用?

十、Spring Framework

  • Spring的优缺点是什么?
  • 谈谈你对Spring的理解

一、Spring MVC

1、SpringMVC的拦截器和过滤器有什么区别?执行顺序?

  • 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
  • 拦截器只能对action请求(DispatcherServlet 映射的请求)起作用,而过滤器则可以对几乎所有的请求起作用。
  • 拦截器可以访问容器中的Bean(DI),而过滤器不能访问(基于spring注册的过滤器也可以访问容器中的bean)。

多个过滤器的执行顺序跟xml文件中定义的先后关系有关
当然,对于多个拦截器它们之间的执行顺序跟在SpringMVC的配置文件中定义的先后顺序有关。

2、如何实现无XML零配置的SpringMVC

1. 省略web.xml

  • a. servlet3.0之后规范中提供了SPI扩展:META-INF/services/javax.servlet.ServletContainerInitializer
  • b. SpringMVC通过实现ServletContainerInitializer接口
  • c. 动态注册ContextLoaderListener 和DispatcherServlet并创建子父容器(Application)

2. 省略spring.xml和spring-mvc.xml(只是sprinmvc方式 ,springboot在自动配置类完成) 配置类--xml

  • a. 实现一个继承AbstractAnnotationConfigDispatcherServletInitializer的类
  • b. 该类就实现了ServletContainerInitializer,它会创建ContextLoaderListener 和DispatcherServlet
  • c. 还会创建父子容器, 创建容器时传入父子容器配置类则可以替代spring.xml和spring-mvc.xml

3、是否可以把我们所需的Bean都放入Spring­mvc子容器里面来管理(springmvc的spring-servlet.xml中配置全局扫描)?

可以 , 因为父容器的体现无非是为了获取子容器不包含的bean, 如果全部包含在子容器完全用不到父容器了, 所以是可以全部放在springmvc子容器来管理的。

虽然可以这么做不过一般应该是不推荐这么去做的,一般人也不会这么干的。如果你的项目里有用到事物、或者aop记得也需要把这部分配置需要放到Spring-mvc子容器的配置文件来,不然一部分内容在子容器和一部分内容在父容器,可能就会导致你的事物或者AOP不生效。 所以如果aop或事物如果不生效也有可能是通过父容器(spring)去增强子容器(Springmvc),也就无法增强。

4、是否可以把所有Bean都通过Spring容器来管理?(Spring的applicationContext.xml中配置全局扫描)

5、Spring和SpringMVC为什么需要父子容器?

就功能性来说不用子父容器也可以完成(参考:SpringBoot就没用子父容器)

  • 1. 所以父子容器的主要作用应该是划分框架边界。有点单一职责的味道。service、dao层我们一般使用spring框架来管理、controller层交给springmvc管理
  • 2. 规范整体架构 使 父容器service无法访问子容器controller、子容器controller可以访问父容器 service
  • 3. 方便子容器的切换。如果现在我们想把web层从spring mvc替换成struts,那么只需要将spring­mvc.xml替换成Struts的配置文件struts.xml即可,而spring­core.xml不需要改变。
  • 4. 为了节省重复bean创建

6、SpringMvc怎么和AJAX相互调用的?

7、请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?

(1)用户发送请求至前端控制器DispatcherServlet;

(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;

(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;

(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户

8、Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?

9、说说你是如何解决 get 和 post 乱码问题?

10、什么是Spring MVC?简单介绍下你对Spring MVC的理解?

11、SpringBoot的核心注解一、微服务。

二、Spring Boot

1、说说你在开发的时候怎么在SpringBoot的基础上做扩展?

2、SpringBoot的默认日志实现框架是什么?怎么切换成别的?

3、SpringBoot读取配置文件的原理是什么?

4、SpringBoot中配置文件的加载顺序是怎样的?

5、会不会SpringBoot自定义Starter?大概实现过程?

6、SpringBoot外置Tomcat启动原理?

7、SpringBoot内置Tomcat启动原理?

8、SpringBoot的启动原理?

Spring全家桶面试笔记共享:点赞支持一下。

9、为什么SpringBoot的jar可以直接运行?

10、springboot的自动配置原理?

11、SpringBoot的核心注解

12、Spring和SpringBoot的关系和区别?

13、谈谈你对SpringBoot的理解,它有哪些特性(优点)?

三、微服务

1、Sentinel怎么防止激增流量打垮冷系统?

2、Ribbon说说有哪些负载均衡策略

3、你们的微服务项目里面有没有用到什么监控追踪工具?

4、说说Seata的实现原理?

5、什么是服务熔断?什么是服务降级?区别是什么?

6、什么是服务雪崩?什么是服务限流?

7、说说服务网关可以做什么?

8、谈谈配置中心?

9、注册中心的原理是什么?

10、Spring Cloud有哪些常用组件,作用是什么?

11、分布式架构下会有什么问题?

12、SOA、分布式、微服务之间有什么关系和区别?

13、什么情况下需要进行微服务架构?

四、Spring核心API

1、Spring是如何整合MyBatis将Mapper接口注册为Bean的原理?

2、Spring 框架中都用到了哪些设计模式?

3、Spring事件监听的核心机制是什么?

五、Spring事务

1、Spring事务的失效原因?

2、Spring多线程事务 能否保证事务的一致性(同时提交、同时回滚)?

3、Spring事务传播行为实现原理:

4、Spring事务实现原理

5、说一下 spring 的事务隔离?

6、说一下Spring的事务传播行为

7、Spring支持的事务管理类型, spring 事务实现方式有哪些?

8、事务四大特性

六、Spring AOP

1、Spring的 Aop的完整实现流程?

2、Spring的AOP是在哪里创建的动态代理?

3、什么情况下AOP会失效,怎么解决?

4、介绍AOP有几种实现方式

5、JavaConfig方式如何启用AOP?如何强制使用cglib?

6、JDK动态代理和CGLIB动态代理的区别

7、Spring AOP and AspectJ AOP 有什么区别?

8、Spring通知有哪些类型?

9、解释一下Spring AOP里面的几个名词

10、什么是AOP、能做什么

七、Spring注解

1、为什么@ComponentScan 不设置basePackage也会扫描?

2、@Bean之间的方法调用是怎么保证单例的?

3、配置类@Configuration的作用解析原理:

4、使用@Autowired注解自动装配的过程是怎样的?

5、@Autowired和@Resource之间的区别

6、@Autowired 注解有什么作用

7、如何让自动注入找到多个依赖Bean时不报错

8、如何让自动注入没有找到依赖Bean时不报错

9、@Import可以有几种用法?

10、@Component, @Controller, @Repository, @Service 有何区别?

11、用过JavaConfig方式的spring配置吗?它是如何替代xml的?

12、Spring有哪几种配置方式:

八、Spring Beans

1、Bean的创建顺序是什么样的?

2、Spring容器启动时,为什么先加载BeanFactoryPostProcess

3、如何在Spring所有Bean创建完后做扩展?

4、如何在Spring所有BeanDefinition注册完后做扩展?

5、BeanDefinition的加载过程:

6、Spring如何避免在并发下获取不完整的Bean?

7、Spring是如何解决Bean的循环依赖?

8、解释Spring框架中bean的生命周期

9、Spring 在加载过程中Bean有哪几种形态:

10、有哪些生命周期回调方法?有哪几种实现方式?

11、解释不同方式的自动装配,spring 自动装配 bean 有哪些方式?

12、自动装配有哪些限制(需要注意)?

13、什么是bean的自动装配?

14、什么是bean装配?

15、Spring如何处理线程并发问题?

16、Spring框架中的单例bean是线程安全的吗?

17、Spring实例化bean方式的几种方式

18、单例bean的优势

19、解释Spring支持的几种bean的作用域

20、配置Bean有哪几种方式?

21、什么是Spring beans?

九、Spring IOC

1、你知道Spring的哪些扩展点,在什么时候调用?

2、IOC容器的加载过程:

3、BeanFactory 和FactoryBean有什么区别?

4、BeanFactory 和 ApplicationContext有什么区别?

5、BeanDefinition的作用

6、BeanFactory的作用

7、紧耦合和松耦合有什么区别?

8、什么是Spring的依赖注入(DI)?IOC和DI的区别是什么

9、Spring IoC 的实现机制是什么?

10、IOC的优点是什么?

11、控制反转(IoC)有什么作用

12、什么是Spring IOC 容器?有什么作用?

十、Spring Framework

1、Spring的优缺点是什么?

2、谈谈你对Spring的理解

需要的朋友点赞支持一下吧。

对了,小伙伴们面试中有遇到过奇葩问题吗?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值