八股文骚套路之Spring
共 2960字,需浏览 6分钟
·
2021-08-20 02:22
在大家强烈的呼声下,这周推出八股文骚套路之 Spring 篇。虽然现在 SpringBoot 很火,用起来也很方便,不过我还是建议你先看下 Spring。一个原因是,Spring 是经典了,应该好好把他的原理搞明白。另一个原因是,SpringBoot 八股文不如 Spring 好背~
准备面试的话 Spring这部分是可以在短时间内做针对性准备的。这篇文章中我说下 Spring 和 SpringMVC 中面试常问的问题,大家按这些常问的问题准备就好了。另外我还会给大家补充一些要学的东西,面试的时候可以给面试官讲,体现下自己有深入探究的精神。这种在面试官那里还是挺加分的,就比如我面阿里的时候,阿里的面试官给我的面评就是下面这样:
其实 Spring 中的面试问题还挺固定的,我面了一圈基本上面试官都是那几个问题。我甚至都觉得这些面试官面我的时候应该是打开 JavaGuide (这篇文章有些问题用了 Guide哥 一些内容,先讨好下~),从问题中随便挑几个问我。当然因为我 Spring 学的比较深入,能在问题上拔一下高度,都在面试官那里装逼成功了。除了遇见这个阿里面试官,不讲武德,硬要和我要展开探讨 Spring 到底好在哪,我记得这个问题展开和我探讨了半个多小时...
相关阅读:
Spring
我现在把 Spring 常问的问题列在下面,大家能把这些问题回答出来,校招应付面试官问题就不大了。另外我说明下,面大中厂的话问Spring 相关的问题主要是问原理性的内容,很少问一些具体的功能是怎么做,常用的功能大家了解就好,千万别背 Spring 的 API 啊。
「1.什么是IOC?IOC的初始化流程?」
这个问题基本上是面试官的起始问题,这里需要你去理解一下什么是控制反转
,并去理解下这个思想的好处,并且能给面试官讲出来。另外记一下 IOC 的初始化过程
,就是下面这张图。
看到这张图顺便说下,面试官常会问 BeanFactory 和 FactoryBean 的区别
。如果你时间特别充足的话,可以通过这个连接看下 IOC 的源码,连接如下:
https://javadoop.com/post/spring-ioc
「2.什么是AOP?」
AOP 称为面向切面的编程,这也是面试官爱问的问题。就算 Spring 其它的原理你都不知道,你也要把 IOC 和 AOP 记清楚,这是面试官极其爱问的。在给面试官回答这个问题时,你首先要答出AOP是什么
,有什么好处
,另外你还可以给面试官讲 Spring AOP 是基于动态代理
的,最好再答出有 JDK Proxy 和 Cglib 两种方式
,再把这两种方式分别是怎么样实现
的给面试官讲一下,这样你的回答就算到位了。
「3.Bean」
Bean也是面试过程中十分爱问的知识点,最常问的是 Bean的生命周期
。其次会问 Bean的循环依赖
问题,就是要你回答循环依赖问题是什么,Bean是怎么解决循环依赖的。偶尔也会问 Bean的作用域
有哪些的问题。
「4.Spring事务」
Spring 事务你要知道有编程式事务
以及 声明式事务
两种,声明式事务推荐使用,主要是基于 XML和注解
两种方式。Spring 的隔离级别
和 事务传播方式
也要记一下。
「5.设计模式」
你是不是觉得混入了一个奇怪的东西,对,就是设计模式。其实 Spring 中应用了大量的设计模式,我觉得你可以了解一下 Spring 是怎么样使用设计模式的呀!这样你一下子把两个知识点都学了。你给面试官讲设计模式的时候就可以说 Spring 是这么用的,多好?另外Spring 中也用了很多的反射,你们也可以看一下 Spring 中哪些部分应用了反射,是怎么样用的,这都可以给面试官讲。
「6.一些不常问问题」
这里问的不是太多,不过还是要准备一下。看一看 Spring 是什么、Spring 有哪些重要模块、Spring 常用的API记几个就好。
SpringMVC
其实面试过程中对 SpringMVC 的问题很集中,90%以上都是下面这个问题。
「SpringMVC 工作原理」
你只要把下面这张图的流程背下来就好了。图是Guide哥的。
算了,答案我也一起盗了 Guide哥的吧(Guide哥如果你看到了别砍我,这块就这一个问题,我不把答案贴上篇幅也太少了)。咳咳,读者你们直接背就好了:
「流程说明(重要):」
客户端(浏览器)发送请求,直接请求到
DispatcherServlet
。DispatcherServlet
根据请求信息调用HandlerMapping
,解析请求对应的Handler
。解析到对应的
Handler
(也就是我们平常说的Controller
控制器)后,开始由HandlerAdapter
适配器处理。HandlerAdapter
会根据Handler
来调用真正的处理器来处理请求,并处理相应的业务逻辑。处理器处理完业务后,会返回一个
ModelAndView
对象,Model
是返回的数据对象,View
是个逻辑上的View
。ViewResolver
会根据逻辑View
查找实际的View
。DispaterServlet
把返回的Model
传给View
(视图渲染)。把
View
返回给请求者(浏览器)
偶尔还会问你一些比如什么是SpringMVC,谈谈你对SpringMVC的理解、SpringMVC 的优点,SpringMVC常用注解这几个。按这样准备问题就不大了。
如果时间充足,好好体会一下 Spring 的设计,对自己还是很有益处的。今天就讲这么多,咱们下篇文章见。
欢迎点赞分享。咱们下期再会!