怎么回答面试官:你对Spring的理解?
26 个回答
首先Spring是一个大的概念,Spring从最开始的一个Library到现在一个系列,其中最主要的包括Spring Framework, Spring Data, Spring Security, Spring Batch等等,以及快速框架Spring Boot,其中最重要的项目是Spring Framework,这个项目包括了IoC, AOP, MVC以及Testing。
第一个需要明白的是Spring的核心思想是什么?
Spring整个系列的最最核心的概念当属IoC, AOP,什么是IoC和AOP就不展开了,简而言之,将对象创建过程的职责赋予容器,通过容器管理对象的生老病死, 将对象创建过程从编译时延期到运行时,即通过配置进行加载,这样一来就解决了不用编译后期选择具体实现,其实就是面向对象的核心理念,针对接口编程。IoC开始就是个factory加上依赖管理罢了,这样一来,一个系统的创建过程就从原先的new改为配置组装,内部通过注入解决了依赖关系,只要满足接口协议即插即用。通过IoC, AOP事实上形成了一个套路,通过这个套路完成了系统的整合。
所以Spring并没有说自己写一个ORM,而是用统一的套路完成了多个ORM的集成,这也是Spring越做越大的基础,慢慢就形成了Spring Way,其实这个才是Spring最有价值的地方。
第二当然就是一些实践,其实主流问的大概也就几个方向,用的最多的应该就是Spring MVC, Spring Data, Spring Security和Spring Boot这几块吧,因为毕竟这是实践性内容,很多时候都是show me the code,之前学习过程写过一个sample,基本全是标准Spring Way,你可以拿去参考一下,GitHub - nonocast/todolist: A simple todolist system implemented with Spring's backend and TypeScript/React's frontend. Enjoy it.
- Spring Boot
- Spring MVC
- Spring Security
- Gradle
- Freemarker
- WebJars
- Spring Data JPA
- Mysql
- React
- TypeScript
- webpack
- Redis
不要话太少,太少显得死记硬背骗工作的。
这样说:
是一个开源框架
让java开发模块化,并且全面。贯穿逻辑层,表现层,持久层。让每一个功能模块都可以独立分开,降低耦合,提高代码复用率!
spring通过控制反转降低耦合性,一个对象的依赖通过被动注入的方式而非主动new
还包括面向切面, mvc的整合等等,spring正如其字面意思,是程序员的春天,大大地降低了体力劳动~
以上仅仅是个人对Spring的浅显认识,更多的深入理解以后还要请教您!!!
啪,一个大嘴巴甩过去。
一字一句顿着念,你!懂!个!屁!
好,真这么做的,看起来智商有限,我已经帮你们把他自然淘汰了。
有这个问题上来,你可以理解,这个人,要么狠懂,要么狠不懂,多数是不懂的,你可以装逼来获取面试得分了。你谦虚地回答到:
spring呢,是pivotal公司维护的一系列开源工具的总称,最为人所知的是spring mvc,事实上,他们都是基于spring framework,并且再其上继续增强,为某一方面服务的java组件。最近spring framework 刚升级到5,非常不错。比较常见的有spring boot,spring mvc,spring webFlux。过去spring framework被成为XML地狱,目前的版本已经大为改善,并且在其十来个组件当中,基本上涵盖了java开发的绝大多数,是一套非常成熟稳健的java应用框架。
如果我是面试官,我问的这个问题其实是想让你系统的介绍一下你所掌握的Spring的知识和应用情况。
1. Spring是什么?讲一下Spring的由来、思想、特性
2. Spring都有哪些产品组成?每个产品的作用、特点、使用场景?
3. 我在工作中用到了Spring的哪些产品、哪些特性?怎么用的?为什么用?
农业社会中,你需要一个对象,你必须亲手把它 new 出来。
工业社会中,你需要一个对象,可以去工厂那里获取。
共产主义社会中,你需要一个对象,只需要凭 ID 去对象池里面领。
这是何等的共产主义精神!
我有次面试被问到spring IOC的时候不想再官方话,打了个比方,IOC它就类似于一个菜筐,以前你需要自己去菜市场买菜,现在你只要在家门口放一个菜框applicationcontext.xml或者也叫???.xml,然后就有人给你发菜,你想要什么样的菜也就是bean,在菜筐留个纸条预定下,想要青菜会发青菜,想要蘑菇会发蘑菇,青菜你想要菠菜或者生菜再预定下property,蘑菇想要土菇或者金针菇也可以预定下property,然后就会发菜了,你就可以不出门坐家里等着发菜做饭了
⊙﹏⊙。。。。。。。。。。。
spring 全家桶。
从基础框架 spring framework 到 spring boot,从微服务架构spring cloud 到 spring data flow。最后总结一下,Spring之所以这么多人用,原因就是大大提高了开发效率,并且让我们的code看起来更舒服,更简洁!所以学习Spring,这两大特性都要用来!大部分人就可能用了第一个特性,然后还用的模模糊糊的!所以,理解最重要!加油!
spring我们可以把它看成一个容器,spring核心是IOC、AOP。ioc控制反转也可以叫依赖注入di,以前我们都是自己new对象,现在创建和管理对象都交给spring容器来做,现在只要做好配置,ioc容器通过注入解决依赖关系。aop指的是面向切面编程,就是在不修改源代码的基础上,通过预编译或者运行期动态代理的方式,给程序动态统一的添加功能的方式。aop可以对业务逻辑的各个部分进行隔离,降低了程序的耦合度,一般有大量相同功能,重复代码比较多的时候用。比如说管理事务、权限校验等等
一般面试官问的时候,他是想知道你对spring的理解深刻程度。只需要说spring core的内容。两大核心内容IOC,AOP。然后再逐个解释是什么,原理是怎样。为什么要这样用。
按上述回答,面试官80%会满意。如果想深入挖掘,会问你还知道spring的哪些方面吗?
另外不用spring的也问,就是看候选人的学习深度了。
标准答案ioc和aop没什么难的,关键在后面的问题:对于ioc或者aop,候选人认为他们好在哪里,为什么好。