写点什么

2021Java 高级面试题总结,kafka 面试常见问题

用户头像
极客开源
关注
发布于: 刚刚

二、什么是循环依赖

循环依赖直白点就是发生在两个类,你引用我,我引用你的状态,如图:


三、如果不依赖于 Spring 自己解决循环依赖如何解决

以上图为例,假设,我们能够创建完成AService之后,放置到到一个缓存中,再去注入属性!每次注入属性的时候,所需要的属性值都从缓存中获取一遍,缓存中没有再去创建不就解决了?如图所示:



总结一下上面的流程:


  1. AService创建完成后将自己加入到二级缓存,然后开始注入属性

  2. 发现AService依赖BService于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建BService

  3. 缓存中没有,开始实例化BService,然后注入内部属性!

  4. 注入内部属性时发现依赖AService,于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建,很显然,二级缓存是有数据的。于是从二级缓存取出AService注入到BService

  5. BService创建完成后将自己从二级缓存挪到一级缓存,并返回。

  6. AService获取到BService后,注入到自己的属性中并把自己从二级缓存挪的一级缓存,返回AService!

  7. 至此,循环依赖创建完成!


那么有了上面的思路,我们如何用代码实现一遍我们的逻辑呢?

总结

阿里伤透我心,疯狂复习刷题,终于喜提 offer 哈哈~好啦,不闲扯了



1、JAVA 面试核心知识整理(PDF):包含 JVMJAVA 集合JAVA 多线程并发,JAVA 基础,Spring 原理微服务,Netty 与 RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB,Cassandra,设计模式负载均衡数据库一致性哈希JAVA 算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共 30 个章节。



2、Redis 学习笔记及学习思维脑图



3、数据面试必备 20 题+数据库性能优化的 21 个最佳实践



本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

极客开源

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
2021Java高级面试题总结,kafka面试常见问题