还在机械地打代码?我们很多开发者在开发 Spring 的程序的时候,很多的情况下,都是被动的接受了前辈们为我们做好的 Spring 特性案例。这样以来,确实在很大的程度上减少了我们开发的成本,但是也同时丧失了一个极好的学习机会,从而限制我们开发员的横向扩展能力。只知道如何使用,却不知道做了什么,那么你注定只能是一个码农。Spring 框架几乎集成一半 Javaweb 开发的江山,但是你只知道如何写,不知道为什么要这么写,也不知道要如何优化。
Spring 作为一个轻量级的 Java 开发框架,将面向接口的编程思想贯穿整个 Java 系统应用,因此在 Java 面试中常被提。本文通过Spring中的一些问题形式和面试题来聊一聊Spring框架中的重要知识点,下文的Xmind知识笔记文件可以在文末有免费领取方式!
Spring面试中有关问题
- BeanFactory和ApplicationContext有什么区别
- 解释Spring Bean的生命周期
- Spring Bean的作用域
- Spring框架中的单例Beans是线程安全的吗
- 构造方法注入和设值注入有什么区别
- Spring框架中有哪些不同类型的事件
- FileSystemResource和ClassPathResource有何区别
- Spring 框架中都用到了哪些设计模式
- Spring的优点
Spring AOP有关问题
- 什么是 AOP?
- point cut,advice,Join point是什么?
- join point 和 point cut 的区别?
- 怎么理解面向切面编程的切面?
- 谈谈对SpringAOP Weaving(织入)的理解?
- 谈谈SpringAOP Introduction(引入)的理解?
- 讲解OOP与AOP的简单对比?
- 讲解JDK 动态代理和 CGLIB 代理原理以及区别?
- 讲解Spring 框架中基于 Schema 的 AOP 实现原理?
- 讲解Spring 框架中如何基于 AOP 实现的事务管理?
事务有关问题
- 在 XML 里面配置了一个 SqlSessionFactoryBean 后,其究竟做了什么?
- 在 XML 里面配置了一个 MapperScannerConfigurer 后,其究竟做了什么?
- 在执行 Mapper 接口的查询方法后,发生了什么?
- <tx:advice/>、<aop:config> 标签如何创建事务切面的?
- 标签添加后为何就可以使用注解式事务了?
- 为什么会报 Transaction rolled back because it has been marked as rollback-only 异常?
- Transactional 注解是否可以加在 private、protected 方法上?
- 事务的传播属性到底有什么用,嵌套事务到底又是怎么一回事?
- 为什么抛出了异常,事务却没有回滚?
- Spring 事务是如何保证线程安全的?
Spring IOC有关问题
- 什么是 IOC?
- 谈谈对控制反转的设计思想的理解?
- 怎么理解 Spring IOC 容器?
- Spring 中有多少种 IOC 容器?
- Spring IOC 怎么管理 Bean 之间的依赖关系,怎么避免循环依赖?
- 对Spring IOC 容器的依赖注入的理解?
- 说说对Spring IOC 的单例模式和高级特性?
- BeanFactory 和 FactoryBean 有什么区别,BeanFactory 和 ApplicationContext 又有什么不同?
- Spring 在 Bean 创建过程中是如何解决循环依赖的?
- 谈谈Spring Bean 创建过程中的设计模式?
注解有关问题
- 注解是一种什么样的编程思想?
- 为何能够直接使用@Autowired进行依赖注入?是如何工作的?
- Spring 是如何通过@AutoWired 自动注入 Bean 属性和 Map,List 集合的?
- @Required 是如何起到检查xml里面属性有没有被配置的?
- Spring 框架是如何把标注@Component 的 Bean 注入到容器?
- @Configuration,@ComponentScan,@Import,@Bean 注解是是如何工作的?
- 使用@PropertySource 引入配置文件,那么配置文件里面的配置是如何被注册到 Spring 环境里面的?
- 讲解如何通过自定义注解实现一个简单的树形文档生成?
代理模式有关问题
- 为什么需要代理模式?
- 讲讲静态代理模式的优点及其瓶颈?
- 对Java 接口代理模式的实现原理的理解?
- 如何使用 Java 反射实现动态代理?
- Java 接口代理模式的指定增强?
- 谈谈对Cglib 类增强动态代理的实现?
如何系统正确的学习
我认为有三个维度来说明:这个框架是为了解决什么问题而诞生的?这个框架的核心思想是什么?这个框架适合应用到哪些场景?说到思想,我觉得编程的灵魂就是思想,没有思想的编程和咸鱼没什么区别。“不要重复造轮子”,当时听了赶脚这句话挺高大上的,现在我认为这句话只能在某一方面是正确了。首先我来说一下为什么要学会造轮子--因为你会造轮子后,用别人的轮子时才会明白其原理,用的时候才会得心应手,如果你对一个框架的理解只是停留在用,用的多熟练的阶段的话,那么你就是一个“码畜”,别人随时可以替代你。
说这么多其实就是想告诉大家学习框架要理解框架的底层的原理,要掌握的就是最常用的原理。在这我分享一个开源框架的系统的思维学习树图给大家,希望能给有需要的朋友提供一些帮助,源文件可以在文末获取免费领取方式!
阿里Java岗一面被问到对Spring的理解,懵了?这些你又了解多少学习共勉
上文提到的关于Spring的面试问题和常见问题我总结成了一些文档资料及导图笔记都会免费分享给大家!同时金三银四已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料(PDF版)。
资料免费领取方式:扫码关注公众号,后台回复关键词【java】即可获取学习资料!
更多架构专题及视频资料展示如下:
资料免费领取方式:扫码关注公众号,后台回复关键词【java】即可获取学习资料!
网友评论