之前分享过一些BAT面试必会的文章,一些读者看了,问过我,Spring 这篇需要掌握一些什么?相信这个问题也是很多读者心中的疑问,今天就来聊一下关于 Spring,我从面试中收获的一些经验。
一. 关于 Spring
Spring这块的内容比较多也比较杂, 要完全整理出来需要花很多的时间,而我所在的实验室由于项目很多,导致我的时间有限,因为这个原因,我在面试的时候,基本是把 Spring 这块放到了最后才去准备的。
对于这块没有太系统地去看书,从网上看了一些 Spring 的面试题集锦和一些关于 Spring 的源码解读,总的来说,Spring 的内容不用准备地多么充分看非常多的书,把一些常问的内容多花点功夫准备一下就行。那么什么是常问的内容?其实多看看网上的面经,多看个十几篇,就能了解到什么是常问的内容。
常问的内容大致上有:IOC、AOP、AOP原理动态代理和cglib原理与二者之间的区别、Bean 生命周期、ThreadLocal 保证线程安全、事务传播、Spring MVC、设计模式,除了这些面试题经常出现的,还有就是需要看一些Spring源码解读,因为一些面试官会问你,有没有看过源码,这时候把自己看过的看懂的说一下就OK了。
二. BAT等公司考察侧重点
不同的互联网公司关于 Spring 考察的侧重点不一样,有点甚至基本不考察。这里分别说一下不同公司的考察情况,大家可以针对不同公司做的有的放矢。
百度头条基本不怎么考察 Spring,这两家公司比较侧重考察基础和算法,头条尤其重视考察算法,百度可能会考察 Spring,但是我看了很多篇面经,考察的情况非常少,如果时间不是很充分,面试的时候可以不用准备也无妨。腾讯的话众所周知是 C++ 网络为主,Spring 基本不用准备。
阿里的话和一些其他的以 Java 为主的公司会考一些 Spring 的问题,这里公司需要深入地去学习一下,不止是看面试集锦就能应付的,至于如何深入学习,之前这篇文章 科班和非科班都适用的 Java 学习路线 也有推荐过,这里就不再多说了。(分享一张Spring的Xmind学习导图,文末有免费领取!)
Spring学习导图(未展开).xmind
三、 Spring 面试集锦(整理了详细解析做成文档以及更多面试专题在文末免费获取)
基础篇
- 什么是spring?
- 使用Spring框架的好处是什么?
- Spring由哪些模块组成?
- 核心容器(应用上下文) 模块。
- BeanFactory – BeanFactory 实现举例。
- 解释AOP模块
- 解释JDBC抽象和DAO模块。
- 解释对象/关系映射集成模块。
- 解释WEB 模块。
- 什么是Spring IOC 容器?
- IOC的优点是什么?
- ApplicationContext通常的实现是什么?
- Bean 工厂和 Application contexts 有什么区别?
- 一个Spring的应用看起来象什么?
- 什么是Spring的依赖注入?
- 有哪些不同类型的IOC(依赖注入)方式?
- 哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入?
高级篇
- 什么是Spring框架?Spring框架有哪些主要模块?
- 使用Spring框架有什么好处?
- 什么是控制反转(IOC)?什么是依赖注入?
- 请解释下Spring中的IOC?
- BeanFactory和ApplicationContext有什么区别?
- 将Spring配置到你的应用中共有几种方法?
- 什么基于XML的配置?
- 什么基Java的配置?
- 怎样用注解的方式配置Spring?
- 描述Spring Bean的生命周期?
- 描述Spring中各种Bean的范围?
- Spring框架中的单例bean是否是线程安全的?
- 请举例说明如何用Spring注入一个Java的集合类?
- 请举例说明如何在Spring的Bean中注入一个java.util.Properties?
- 请解释Spring的Bean的自动生成原理?
- 请举例说明@Required注解?
- 请举例说明@Autowired注解?
- Spring框架中不同类型event有什么区别?
- FileSystemResource和ClassPathResource有何区别?
- 请列举Spring框架中用了哪些设计模式?
读者福利(学习资料分享)
而针对以上面试技术点,我在这里也做一些技术知识面试专题资料(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料)免费分享,希望能更好的帮助到大家。
想获取资料学习提升自己的可以加一下Java架构交流Q裙:935692859进群获取往期架构资料。
对于很多初级Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
整理的这些架构技术希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。同时我经过多年的收藏目前也算收集到了一套完整的学习资料,希望对想成为架构师的朋友有一定的参考和帮助。
下面是部分资料截图,诚意满满:特别适合有1-5年开发经验的Java程序员们学习。
想获取资料学习提升自己的可以加一下Java架构交流Q裙:935692859进群获取往期架构资料。
(部分资料如下)