如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?

你先回去等通知

面试官:看你简历写的不错,先简单自我介绍下?

我:大佬好!我是小程,工作时长两年半,目前负责在公司打杂,啊不

,负责维护公司的两个项目…

面试官: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,那么大厂面试官也不会懂你为什么敢来面试?

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配置启动容器)

如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?

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面试专题文档,在此免费分享,有需要的朋友可以点赞评论加小编微信号:AAAMAXIAOXIN来领取得到,除此之外小编手里还有Spring源码学习视频、各专题大厂面试资料以及资深架构师整理的Java核心知识点,欢迎领取!

spring面试题及答案

如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?

Spring源码学习视频

如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?

收集到的其他大厂面试资料

如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?

面试答案

如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?

面试答案

以及资深架构师整理的Java核心知识点

面试时面试官必问的知识点,包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等

如果你不懂Spring,那么大厂面试官也不会懂你为什么敢来面试?

发布了238 篇原创文章 · 获赞 68 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_45401061/article/details/105079014