面试官:连Spring三级缓存都答不好,自己走还是我送你?
面试官:简历上写了精通Spring,那你回答一下Spring为什么用“三级缓存”去解决循环依赖?
我:.......应该有三个缓存的map结构
面试官:具体回答一下
我:平时没认真深入过
面试官:公司的门在那里,自己走还是我送你?
不知道这道面试题,你是否能回答上来,其实,现在,只要从事Java开发工作,牛逼或者基础,都脱离不开一个架构--ssm,而ssm中,你脱离不开的就是spring的相关知识
很多开发者在开发 Spring 程序的时候,被动接受了已经做好的 Spring 特性案例。虽然这样减少了开发成本,但是也限制了自身的横向扩展能力。
只知道如何使用,却不知道做了什么,那么注定只可能是一个码农。因为Spring 框架几乎集成了一半 Java Web 开发的江山,而只知道写,却不知道为什么这么写、不知道如何优化,是非常危险的。
作为一个轻量级的 Java 开发框架,Spring将面向接口的编程思想贯穿整个 Java 系统应用,所以在面试中一直是高频考察点。而Spring两大特性IOC和AOP,也是通过面试必须要掌握的知识点。在几次参与面试的经历中我发现了一个问题:很多Java程序员并没有彻底的理解IOC和AOP,只是仅限于IOC就是控制反转和AOP就是面向切面。
以IOC为突破口,它是控制反转,表示Spring接管了创建对象的工作,程序员只需要定义对象即可。被Spring创建的对象叫做Bean,而Spring在创建一个对象时,并不是仅仅只会简单的new出来一个对象,而是有一套Bean的生命周期,所以,在说到IOC时,请务必说一下Bean的生命周期。
于是发现,每天都在使用的Spring中还有很多的技术和问题是我们不知道的。
经常听说要学会造轮子,因为只有这样才会在用别人的轮子时明白其原理,用的得心应手。如果对一个框架的理解只是停留在使用的熟练程度,那么也可能会长期停留在“码畜”的阶段,别人随时有可能替代你。
所以,spring源码的重要性,答案可想而知,在日常的工作过程中,除了广度之外,还要注意深度
没有在意过的小伙伴,就从今天的spring源码开始吧
主要分为两部分
核心实现
企业应用
详细内容
详细的系统架构图
源代码讲解相应的知识体系
循环依赖
就像上面问到的三级缓存,不就是为了解决循环依赖啊
需要这份spring源码学习资料,关注公众号:Java架构师联盟,回复1000获取资料后,添加小助手,获取此份文档
面试官:连Spring三级缓存都答不好,自己走还是我送你?的更多相关文章
- 面试官:你连RESTful都不知道我怎么敢要你? 文章解析
面试官:你连RESTful都不知道我怎么敢要你?文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接口4.一致的数据格式4.系统分层5.可缓 ...
- 面试官:你连RESTful都不知道我怎么敢要你?
目录 01 前言 02 RESTful的来源 03 RESTful6大原则 1. C-S架构 2. 无状态 3.统一的接口 4.一致的数据格式 4.系统分层 5.可缓存 6.按需编码.可定制代码(可选 ...
- 面试官:JVM锁优化都优化了啥?
从JDK1.6开始,JVM对锁进行了各种优化,目的就是为了在线程间更高效的共享数据和解决互斥同步的问题.从锁优化的话题开始,可以引申出很多考点面试题,比如锁优化的技术.各优化技术的细节.CAS实现原理 ...
- Spring三级缓存解决循环依赖
前提知识 1.解决循环依赖的核心依据:实例化和初始化步骤是分开执行的 2.实现方式:三级缓存 3.lambda表达式的延迟执行特性 spring源码执行逻辑 核心方法refresh(), popula ...
- 面试官提出的问题应该怎么答?(如开发中使用过EasyUI吗?)
Jquery EasyUI是第三方基于Jquery框架开发的一款轻量级的,侧重于页面显示部分的框架,也可以称为插件. Jquery EasyUI使用比较简单,也有比较全的文档可供参考. 常用的组件就是 ...
- 面试官:Java中对象都存放在堆中吗?你知道逃逸分析?
面试官:Java虚拟机的内存分为哪几个区域? 我(微笑着):程序计数器.虚拟机栈.本地方法栈.堆.方法区 面试官:对象一般存放在哪个区域? 我:堆. 面试官:对象都存放在堆中吗? 我:是的. 面试官: ...
- 面试官:“谈谈Spring中都用到了那些设计模式?”。
我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star.会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclim ...
- 面试官:spring中定义bean的方法有哪些?我一口气说出了12种,把面试官整懵了。
前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...
- Spring 的循环依赖,源码详细分析 → 真的非要三级缓存吗
开心一刻 吃完晚饭,坐在院子里和父亲聊天 父亲:你有什么人生追求? 我:金钱和美女 父亲对着我的头就是一丁弓,说道:小小年纪,怎么这么庸俗,重说一次 我:事业与爱情 父亲赞赏的摸了我的头,说道:嗯嗯, ...
随机推荐
- TiDB初探
TiDB是一个开源的分布式NewSQL数据库,设计的目标是满足100%的OLTP和80%的OLAP,支持SQL.水平弹性扩展.分布式事务.跨数据中心数据强一致性保证.故障自恢复的高可用.海量数据高并发 ...
- git 的使用:
git 的官方网址是: https://git-scm.com/downloads github 的官方网址: https://github.com/ git 的原理图: git 和 github ...
- Spring学习笔记下载
动力节点的spring视频教程相当的经典:下载地址 https://pan.baidu.com/s/1eTSOaae
- Python实用笔记 (16)函数式编程——偏函数
假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去: def int2(x, base=2): re ...
- git和github入门指南(4)
4.分支管理 4.1.什么是分支? 分支可以简单的理解为分叉,在主干上长出一条枝干出来,主干分支通常叫做master,在主分支上可以开很多分支出来,不同的人在不同的分支上做开发,最后合并到主分支,这样 ...
- MFC 添加C++类,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数;
MFC 添加C++类,不用定义C++类的对象,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数: 1先在mfc程序中添加普通类CProdata,然后删除头文件Prodata.h里面 ...
- 如何在Linux下使用Tomcat部署Web应用(图文)
学习Java必不可少的视同Tomcat,但是如果不会使用tomcat部署项目,那也是白扯,在这里教大家如果在Linux系统下视同Tomcat部署Web应用. 工具/原料 Apache-tomc ...
- selenium(12)-web UI自动化项目实战(PO模式,代码封装)
web UI自动化项目实战-项目 项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见 https://www.cnblogs.com/xinhua19/p/13151296.html 搭建U ...
- 《算法笔记》6.6小节 问题 A: 任务调度
这道题我一开始看到的时候,想到的是拓补排序,可是这么菜又这么懒的我怎么可能用呢,既然出现在优先队列里面,那么久一定和他有关了 可是并没有使用优先队列 思路: 对于这道题,我们肯定是对他们定义优先级,然 ...
- 通用Mapper与分页插件的集成
SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...