你先回去等通知(文末有惊喜)
面试官:看你简历写的不错,先简单自我介绍下?
我:大佬好!我是小程,工作时长两年半,目前负责在公司打杂,啊不
,负责维护公司的两个项目…
面试官:hmmm,你们项目中Spring用的多么?
我:还可以,基本上都用得到。(平时都是百度着用用啊)
面试官:那你讲讲使用Spring的AOP具体是指什么?
我:(这个我背过答案!)AOP是面向切面编程,能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可扩展性和可维护性。
面试官:嗯,理解的很棒啊,
那你知道有哪些Spring的扩展点吗?
我:扩展点?BeanDefinition?BeanFactory?
面试官:还有呢?
我:没了呀。
面试官:好吧,你知道市面上哪些主流框架扩展了Spring,如何扩展?
我:我知道MyBatis扩展了Spring!如何扩展的…呃,不太清楚,其他的没怎么接触过,不太了解。我也…
面试官:我懂了,那你简单阐述一下Spring bean的生命周期。
我:这个,我只记得过程有点复杂,具体的,记不清了…
面试官:那再问你一点别的吧,
Spring 是否支持循环依赖;哪些情况下支持?
Spring体系中的beanDefinition怎么理解?
讲讲 Spring在出来循环依赖为什么需要使用三级缓存?
Spring体系中有些后置处理器?能讲讲主要作用不?
我:这个…
面试官看了看表:哟,已经下午3点了,这么晚了啊?今天就到这里吧,你有什么问题要问我吗?
我:我挂了吗?
面试官:没没没,你先回去等通知吧!
Spring作为现在最流行java 开发技术,其内部源码设计非常优秀。如果你不会Spring,那么很可能面试官会让你回家等通知。
Spring是什么?
有一个工地,几百号人在用铁锹铲子挖坑。
如果开一辆挖掘机来,用一天时间干的活就相当于一个工人一个月的工作量。而且这个挖掘机是免费开源的,不用花钱买,仅仅需要学习掌握如何操作。
你会如何选择?
这几百号人的工地就是企业应用项目实施团队,而挖掘机就是Spring。
Spring框架为开发Java应用程序提供了全面的基础架构支持。Spring包含了一些很好的功能,如依赖注入和开箱即用的模块:
Spring JDBC
Spring MVC
Spring Security
Spring AOP
Spring ORM
Spring Test
这些模块能极大缩短应用程序的开发时间,提高我们的工作效率。
Spring bean的生命周期
但是现在很多程序员对于Spring的理解只停留在很浅的层面。很多人只关注自己用的那部分代码的逻辑,而并不真正去理解框架。
如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?
以下为 spring 常见面试问题:
1、什么是 Spring 框架?Spring 框架有哪些主要模块?
Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。
Spring 帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。
Spring 框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成 Spring 框
架,不必担心 Spring 是如何在后台进行工作的。
Spring 框架至今已集成了 20 多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集
成,、Web、AOP(面向切面编程)、工具、消息和测试模块。
2、使用 Spring 框架能带来哪些好处?
下面列举了一些使用 Spring 框架带来的主要好处:
Dependency Injection(DI) 方法使得构造器和 JavaBean properties 文件中的依赖关系一目了然。与 EJB 容器相比较,IoC 容器更加趋向于轻量级。这样一来 IoC 容器在有限的内存和 CPU 资源的情况下进行应用程序的开发和发布就变得十分有利。Spring 并没有闭门造车,Spring 利用了已有的技术比如 ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他视图技术。
Spring 框架是按照模块的形式来组织的。由包和类的编号就可以看出其所属的模块,开发者仅仅需要选用他们需要的模块即可。测试一项用 Spring 开发的应用程序十分简单,因为测试相关的环境代码都已经囊括在框架中了。更加简单的是,利用 JavaBean 形式的 POJO 类,可以很方便的利用依赖注入来写入测试数据。
Spring 的 Web 框架亦是一个精心设计的 Web MVC 框架,为开发者们在 web 框架的选择上提供了一个除了主流框架比如 Struts、过度设计的、不流行 web 框架的以外的有力选项。
Spring 提供了一个便捷的事务管理接口,适用于小型的本地事物处理(比如在单 DB 的环境下)和复杂的共同事物处理(比如利用 JTA 的复杂 DB 环境)。
3、请解释下Spring框架中的IoC?
Spring中的or g. spr ingfr amework. beans包和org. spr ingframework. context包构成了Spring框架IoC容器的基础。
BeanFactory接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。
ApplicationContex接口对BeanFactory (是一个子接口)进行了扩展,在BeanFactory的基础上添加了其他功能,比如与Spring的AOP更容易集成,也提供了处理message resource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对Web应用的WebApplicationContext。
org. springf ramework. beans. factory. BeanFac tory是Spring IoC容器的具体实现,用来包装和管理前面提到的各种bean。BeanFactory接口是SpringIoC容器的核心接口。
IOC:把对象的创建、初始化、销毁交给spring来管理,而不是由开发者控制,实现控制反转。
4、BeanFactory和ApplicationContext有什么区别?
BeanFactory可以理解为含有bean集合的工厂类。BeanFactory 包含了种bean的定义,以便在接收到客户端请求时将对应的bean实例化。
BeanFactory还能在实例化对象的时生成协作类之间的关系。此举将bean自身与bean客户端的配置中解放出来。BeanFactory 还包含了bean生命周期的控制,调用客户端的初始化方法( initialization methods)和销毁方法( destruction methods)。
从表面.上看,application context如同bean factory一样具有bean定义、bean关联关系的设置,根据请求分发bean的功能。但applicationcontext在此基础上还提供了其他的功能。
1. 提供了支持国际化的文本消息.
2.统- -的资源文件读取方式
3.已在监听器中注册的bean的事件
以下是三种较常见的ApplicationContext实现方式:
1、ClassPathXmlApplicationContext:从classpath的XML配置文件中读取上下文,并生成上下文定义。应用程序,上下文从程序环境变量中
ApplicationContext context = new
ClassPathXmlAppl icat ionContext(“bean. xml”);
2、FileSystemXmlApplicationContext :由文件系统中的XML配置文件读取上下文。
Appl icationContext context = new
FileSys temXmlApplicationContext(“bean. xml" );
3、XmIWebApplicationContext:由Web应用的XML文件读取上下文。
4.AnnotationConfigApplicationContext(基于Java配置启动容器)
5、如何用于XML配的方式配tSpring?
在Spring框架中,依赖和服务需要在专门的配置文件来实现,我常用的XML格式的配置文件。这些配置文件的格式通常用<beans>开头,然后- -系列的bean定义和专门的应用配置选项组成。
SpringXML配置的主要目的时候是使所有的Spring组件都可以用xmI文件的形式来进行配置。这意味着不会出现其他的Spring配置类型(比如声明的方式或基于Java Class的配置方式)Spring的XML配置方式是使用被Spring命名空间的所支持的一系列的XML标签来实现的。Spring有以下主要的命名空间: context、 beans. jdbc、 tx、 aop、 mvc和aso.
如:
<beans>
<!-- JSON Support -- ->
<bean name="viewResolver"
class=
' org. spri ngframework. web. servlet. vi ew. BeanNameVi ewResolver"/>
<bean name=" jsonTemplate"
class=" org.
spr ingframework. web. servlet. view. json. MappingJackson2JsonV
iew' '/>
<bean id=' restTemplate"
class=" org. spr ingframework. web. client. RestTemplate' '/>
</beans>
下面这个web. xml仅仅配置了DispatcherServlet, 这件最简单的配置便能满足应用程序配置运
行时组件的需求。
<web- rapp>
<display- rname>Archetype Created Web Appl icat ion</display- rname>
<servlet>
<servlet-name>spring</ servlet-name>
<servlet-
class>org. spr ingframework. web. servlet. Di spatcherServlet</servlet-
class>
<load-on-s tartup>1</load-on-startup>
</servlet>
<servlet- mapping>
<servlet- -name>spr ing</servlet -name>
<ur1-pattern>/</url-pat tern>
</servlet- mapping>
</web-app>
由于篇幅限制没办法把小编的完整spring面试题展现出来,所以小编把这些面试题整理成了一份spring面试专题文档,在此免费分享,有需要的朋友可以点赞+关注后加小编微信号:AAAMAXIAOIXN来免费领取得到,除此之外小编手里还有Spring源码学习视频、各专题大厂面试资料以及资深架构师整理的Java核心知识点,欢迎领取!
spring面试题及答案
Spring源码学习视频
收集到的其他大厂面试资料
资料领取方式:点赞+关注后加小编微信号:AAAMAXIAOIXN
面试答案
面试答案
以及资深架构师整理的Java核心知识点
面试时面试官必问的知识点,包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等
网友评论