阿里四面P7稳了,得亏我会这些Spring面试题,果然大厂都爱问它们
前言
先说一下本人情况吧,末流985毕业,毕业之后一直在一家不大不小的公司里安稳上班。上半年因为疫情的原因公司调整了工资,我也是随波逐流跟随大家辞了职。辞职之后向阿里。字节这些都投了简历(但是只收到了阿里的回复)。一路居然惊险但也是成功斩下offer,问的都是最近两年新出的面试频度较高的面试题!,现在我把我所学的分享给大家!
作为一名Java方向的程序员,在面试大厂的时候,其实关于spring这一块是问的非常多的,尤其是源码这一块,几乎是逢面试必问,虽然说现在技术更新比较快,但是掌握好spring以及它的源码绝对是你面试的一个杀手锏。以下这份文档就包括了spring从基础到源码主要涉及到的内容有如下
- Spring框架功能整体介绍
- Spring IOC容器底层注解使用
- Spring Ioc容器源码解析
- Spring 是如何解决循环依赖的
- Spring Aop源码分析
- spring 事务源码解析
首先跟大家说一下就是我碰到的面试题,关于spring循环依赖的
什么是循环依赖?
循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:
注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。
Spring中循环依赖场景有:
(1)构造器的循环依赖
(2)field属性的循环依赖
其中,构造器的循环依赖问题无法解决,只能拋出BeanCurrentlyInCreationException异常,在解决属性循环依赖时,spring采用的是提前暴露对象的方法。
Spring怎么解决循环依赖
这里附上一张解决Spring循环依赖的流程图
由于图片过大可能导致模糊,需要这套图的可以关注我的公众号:前程有光直接获取
面对大厂问Spring源码而言,很多的Java面试者都纷纷败北,源码没有一个正确的方法学起来确实挺吃力的,在这把之前学源码的一些经验和笔记分享给大家,希望对那些还在学习Spring源码的朋友有所帮助!
一、 Spring框架功能整体介绍
- Sring Core Container
- Beans (BeanFacotry的作用)
- Context
- Expression Language )
- Spring Data Access/Integration
- Transaction
- Spring Web
- Spring Aop
- Instrumentation
- 控制反转和依赖注入
- 什么是控制反转?
二、Spring IOC容器底层注解使用
- xml配置文件的形式 VS 配置类的形式
- 基于xml的形式定义Bean的信息
- 基于读取配置类的形式定义Bean信息
- 在配置类上写@CompentScan注解来进行包扫描
- 排除用法 excludeFilters
- 包含用法 includeFilters
- @ComponentScan.Filter type的类型
- FilterType.CUSTOM 自定义类型如何使用
三、Spring Ioc容器源码解析
- Spring源码解析之扩展原理
- ApplicationListener:Spring是如何发布事件的? )
- BeanDefinitionRegistryPostProcessor的处理源码流程
- BeanFactoryPostProcessor 处理流程
- Spring Bean的实例化过程
- bean实例化过程的调用链
- bean的实例化过程源码分析
- SpringIOC容器启动源码的分析
四、Spring 是如何解决循环依赖的
- 什么是循环依赖?
- 代码实例:
- 可能存在的问题:
- 解决方案:
- 什么是早期引用?
五、 Spring Aop源码分析
- AOP
- 基本概念
- 简单案例
- @EnableAspectJAutoProxy
- Import(AspectJAutoProxyRegistrar.class)
- 所以我们来分析AspectJAutoProxyRegistrar类是用来干什么的?
六、spring 事务源码解析
- 事务概念解析
- 什么是事物?
- 事物的特性(ACID)
- Spring事务三大接口介绍
- PlatformTransactionManager接口介绍
- TransactionDefinition 事务属性的定义
七、Spring5.0新特性之日志框架
- 日志框架场景
- 我们Java中常用的日志框架是什么?
- 我们常常听说的就是如下的日子框架,还不知道怎么选?
- 加入我们系统使用的是SLF4J作为日志门面,我们是如何匹配?
- Spring4.Xspring底层使用的日志技术
- Spring5.x 底层使用的日志技术
以上就是这份文档的概况,一次搞懂spring以及核心源码,不管是架构师还是开发者,又或是运维,都能够从中学到不少。
由于篇幅原因,这份spring核心笔记已经被整理成了PDF文档,有需要这份spring核心笔记完整文档的可以关注我的公众号:前程有光免费获取
阿里四面P7稳了,得亏我会这些Spring面试题,果然大厂都爱问它们的更多相关文章
- 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用
本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...
- java面试官最爱问的垃圾回收机制,这位阿里P7大佬分析的属实到位
前言 JVM 内存模型一共包括三个部分: 堆 ( Java代码可及的 Java堆 和 JVM自身使用的方法区). 栈 ( 服务Java方法的虚拟机栈 和 服务Native方法的本地方法栈 ) 保证程序 ...
- 开发必备linux命令大全-稳赚不亏
我们的服务一般都是在linux系统运行,因此了解一些关于linux命令是必须.接下来将一一详细介绍一些常用的linux的命令 文件操作 远程登录与操作 磁盘挂载 进程管理 启动和结束 系统性能参数查看 ...
- 阿里四面:你知道Spring AOP创建Proxy的过程吗?
Spring在程序运行期,就能帮助我们把切面中的代码织入Bean的方法内,让开发者能无感知地在容器对象方法前后随心添加相应处理逻辑,所以AOP其实就是个代理模式. 但凡是代理,由于代码不可直接阅读,也 ...
- 最新 阿里java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.阿里等10家互联网公司的校招Offer,因为某些自身原因最终选择了阿里.6.7月主要是做系统复习.项目复盘.LeetCode ...
- 应聘阿里,字节跳动,美团必须掌握的Spring IOC与工厂模式
Spring IOC与工厂模式 PS:本文内容较为硬核,需要对java的面向对象.反射.类加载器.泛型.properties.XML等基础知识有较深理解. (一)简单介绍 在讲Spring IOC之前 ...
- 阿里小哥带你玩转JVM:揭秘try-catch-finally在JVM底层都干了些啥?
让我们准备一个函数: 然后,反编译他的字节码: 首先我们介绍异常表:在编译生成的字节码中,每个方法都附带一个异常表. 异常表中的每一个条目代表一个异常处理器,并且由 from 指针.to 指针 ...
- 为什么阿里、头条、美团这些互联网大厂都在用Spring Boot?
前言 自 2014 年发布至今,Spring Boot 的搜索指数 一路飙升.没错 Spring Boot 越来越火了,作为一名行走一线的 Java 程序员,你可能在各个方面感受到了 Spring B ...
- 凭借着这份Spring面试题,我拿到了阿里,字节跳动美团的offer!
一般问题 1.1. 不同版本的 Spring Framework 有哪些主要功能? 1.2. 什么是 Spring Framework? Spring 是一个开源应用框架,旨在降低应用程序开发 ...
随机推荐
- Java 8新特性--Stream API
Java 8 API添加了一个新的抽象称为流Stream,以一种声明的方式处理数据,可以极大提高程序员的生产力,写出高效.干净.简洁的代码.这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可 ...
- RocketMQ4.7.1双主双从集群搭建
导读 上一集我们已经学会了SpringBoot整合RocketMQ点我直达,今天我们来搭建双主双从高性能MQ服务集群. 简介 主从架构 Broker角色,Master提供读写,Slave只支持读,Co ...
- SourceTree安装及卸载
一.安装步骤 下载地址: 链接:https://pan.baidu.com/s/1K5ImZASuThJZoGLz6Ay_4g 提取码:hqkp 1. 点击安装包,点击下一步 2. 出现账户注册的页面 ...
- GPRS DTU工作的原理与应用场景
GPRS DTU是属于物联网无线数据终端设备的中一种,它主要是利用公用运营商的GPRS网络(又称G网)来为用户提供无线长距离数据传输的功能.一般都是采用的高性能工业级8/16/32位通信处理器和工业级 ...
- python常用模块numpy解析(详解)
numpy模块 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 后打开浏览器输入网址http://local ...
- 《Clojure编程》笔记 第1章 进入Clojure仙境
目录 背景简述 第1章 进入Clojure仙境 1.1 基础概念 1.2 常用的一些符号 背景简述 本人是一个自学一年Java的小菜鸡,理论上跟大多数新手的水平差不多,但我入职的新公司是要求转Cloj ...
- JavaWeb中的关于html、jsp、servlet下的路径问题
1 前言 本文将对近期项目练习中出现的关于文件路径的问题进行分析和总结,主要涉及html页面中的href及ajax指向路径.jsp页面中href指向路径及servlet转发或重定向路径等内容,本文的分 ...
- ACM已刷题
ZOJ: 1001.1002.1003.1004.1005.1006.1037.1045.1048.1049.1067.1087.1091.1016. swjtuoj: 2433 注:没链接的应该是最 ...
- python开发基础(一)-if条件判断,while循环,break,continue,
条件语句 (1)if 基本语句 if 条件 : 内部代码块 else: .... print() (2)if 嵌套 (3)if elif 语句 (4)if 1==1: pass # if不执行,pas ...
- Magicodes.IE 3.0重磅设计畅谈
总体设计 Magicodes.IE导入导出通用库,支持Dto导入导出.模板导出.花式导出以及动态导出,支持Excel.Csv.Word.Pdf和Html. IE在去年年底重构一次之后,经过这么长时间的 ...