欢迎关注微信公众号:石杉的架构笔记(id:shishan100)面试

个人新课**《C2C 电商系统微服务架构120天实战训练营》在公众号儒猿技术窝**上线了,感兴趣的同窗,能够点击下方连接了解详情:算法
《C2C 电商系统微服务架构120天实战训练营》数据库
1、写在前面
最近收到很多读者反馈,说本身在应聘一些中大型互联网公司的Java工程师岗位时遇到了很多困惑。缓存
这些同窗说本身其实也作了精心准备,网上搜集了很多Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的东西,对不上号,这就很尴尬了。。。性能优化
所以,从这篇文章开始,笔者准备写一个长期连载的系列:《Java进阶面试系列》。主要跟你们聊聊中大型互联网公司Java面试中的一些热门、高频的技术问题。微信
但愿这个系列的文章,能在年后金三银四的跳槽季中,助各位小伙伴一臂之力。markdown
2、先来体验一个真实的面试连环炮
好,闲话很少说,咱们进入正题!网络
本系列文章,咱们将会从消息中间件、分布式缓存、分布式搜索、分布式架构、海量数据、NoSQL、高并发、高可用、高性能、数据库、JVM虚拟机等各个方面来聊一下面试中的高频技术问题。架构
如今一些中大型互联网公司的面试官,不少都是技术水平很是不错的兄弟。在面试候选人的时候,通常都会采起连环炮的策略来深挖一个候选人的技术水平。并发
举个例子,好比说看你简历上写了熟悉消息中间件(MQ技术)。那么可能咱们就会有一个相似下面这样的连环炮式发问:
-
说说大家公司线上生产环境用的是什么消息中间件?
-
那大家线上系统是有哪些技术挑战,为何必需要在系统里引入消息中间件?
-
大家的消息中间件技术选型为何是RabbitMQ?为何不用RocketMQ或者是Kafka?技术选型的依据是什么?
-
大家怎么保证消息中间件的高可用性?避免消息中间件故障后引起系统总体故障?
-
使用消息中间件技术的时候,大家怎么保证投递出去的消息必定不会丢失?
-
大家怎么保证投递出去的消息只有一条且仅仅一条,不会出现重复的数据?若是消费了重复的消息怎么保证数据的准确性?
-
大家线上业务用消息中间件的时候,是否须要保证消息的顺序性?若是不须要保证消息顺序是为何?假如我有一个场景要保证消息的顺序,大家应该如何保证?
-
下游消费系统若是宕机了,致使几百万条消息在消息中间件里积压了,此时该怎么处理?大家线上是否遇到过消息积压的生产故障?若是没遇到过,你考虑一下如何应对?
-
大家用的是RabbitMQ?那你说说RabbitMQ的底层架构原理,逻辑架构、物理架构以及数据持久化机制?集群部署架构?大家RabbitMQ的最高峰QPS每秒是多少?线上如何部署的,部署了多少台机器,机器的配置如何?
-
大家用的是Kafka?那你说说Kafka的底层架构原理,磁盘上数据如何存储的,总体分布式架构是如何实现的,如何保证数据的高容错性,零拷贝等技术是如何运用的,高吞吐量下如何优化生产者和消费者的性能?那你看过Kafka的源码没有,说说你对Kafka源码的理解?
-
大家用的是RocketMQ?RocketMQ很大的一个特色是对分布式事务的支持,你说说他在分布式事务支持这块机制的底层原理?RocketMQ的源码看过么,聊聊你对RocketMQ源码的理解?
-
若是让你来动手实现一个分布式消息中间件,总体架构你会如何设计实现?
上面仅仅是MQ相关技术问题的一部分,实际上,一个比较好的面试官的问题,就是从技术面、技术点、项目实践几块来抽丝剥茧的发问。
3、技术广度的考察
首先考察候选人总体技术面的完整性,各类技术或多或少都须要一些,由于工做中是须要具有必定的技术视野的,不能说光知道消息中间件,可是分布式缓存却一无所知,这就是典型的技术短板。
相似于之前高考的时候,你语文特别好,结果物理特别差,那也是不太合适的。
因此工程师首先要避免本身的技术短板,尤为是三到五年经验的同窗,已经完全度过了本身人生的职场生涯的初期小白入门菜鸟阶段。
因此,务必在工做三到五年的时候,保证本身的技术绝对没有任何短板,总体技术栈要或多或少都知道一些,不能出现盲区。
好比,我如今问你,大家公司有没有什么业务场景是能够用NoSQL的?如今国内各个公司用NoSQL的技术都有哪些选型?具体NoSQL能够解决什么问题?
结果你一问三不知,这就是典型的技术短板,不说对每一个技术有多么的精通,可是你至少或多或少都知道一些,并且大概明白每一个技术通常在什么状况下用,怎么来用,解决的是什么问题。
所以上面说的:消息中间件、分布式缓存、海量数据、分布式搜索、NoSQL、分布式架构、高并发、高可用、高性能,这些技术,并非说真的要求工做几年的同窗每一个技术都精通到源码层面,而是说你工做几年之后,应该有必定的技术广度,开阔的技术视野。
各类技术你都得适当的了解一些,同时尽量有机会的话在本身负责的项目里多实践各类技术,多体会各类技术如何组成出一套架构来解决公司的技术难题的,尽可能多对各类技术都必定的实践经验。
4、底层技术的考察
如今通常不少互联网大厂都会有基本功的考察,举个例子,Java虚拟机的核心原理、内存模型、垃圾回收、线上FullGC卡顿性能优化、线上OOM内存溢出问题你处理;Java并发中的volatile、锁优化、AQS源码;Netty背后的IO、网络相关的知识。
这些其实本质也能够归类到技术面的考察里,可是实际上这些技术都是开发任何系统均可能须要用到的核心底层技术,JVM、并发、NIO、网络通讯,在不少系统而言都是通用的。所以特地单独拎出来,放在这里,做为一块东西来说。
其实这种底层技术也是线上高负载大型系统的架构设计和开发,必需要具有的,由于底层技术不扎实,不少中间件技术或者其余高阶的技术,都是没法深刻理解其中原理和底层的。并且不少时候,若是要解决线上系统的生产故障,都须要这些技术。
所以这些底层技术,看似不在那些高大上的技术范围里,没有炫酷的技术名词,可是JVM、Java并发、NIO、网络通讯,这些东西都是一个工程师必须具有底层技术素养。
5、技术深度的考察
其次,咱们必定会深刻考察候选人平时工做中熟悉的以及经常使用的一些技术。
举个例子,好比你项目里用了Redis或者是Elasticsearch。只要你用过了,并且是你某个项目里的核心技术,那么必定会用连环炮式的发问,深刻各类细节、底层、生产环境可能遇到的技术挑战。
总之,就是要用压力测试出来你在这块技术水平掌握的到底有多深,实践经验有多强。
一个好的面试官,本身自己技术功底扎实,是能够对一个技术问出一连串的连环炮的,就好比上面的那个消息中间件的连环炮发问。
并且只要面试官在一个技术上的深度超过候选人,那么经过连续的不断加深的发问,是能够考察出来一个候选人在本身最熟悉的技术领域的技术深度的。
好比说你对一个技术的掌握是否达到了源码级别?是否对某个框架,或者是中间件深刻的理解底层的源码实现,从源码级别说清楚他的架构原理?是否对这个技术有过线上的高可用部署,承载太高并发流量的访问?是否对这个技术在线上生产环境解决过各类各样的复杂技术挑战?是否基于这个技术落地到你的业务系统中,设计出各类复杂的系统架构?
经过这种连环炮,基本上能够很是好的考察出某个候选人对技术深度的掌握。
技术深度的考察是中大型互联网公司面试官对一个高级/资深以上的候选人必须考察的,由于若是一我的工做5年以上,来应聘高级职位的话,那咱们绝对是要求他对至少一个技术领域有着较为深刻的研究的,好比提及码你得深刻阅读过某个热门技术的核心源码,有必定的技术功底,能够解决一些复杂的线上故障。
由于技术广度决定了你能够利用各类技术来作项目,可是技术深度决定了你的技术功底,你将来学新东西有多快,线上系统出了故障你可否快速定位和解决,你可否基于对技术的深入理解为公司的项目设计和开发出复杂并且优秀的架构出来。
6、下篇预告
上面就是《互联网公司的面试官是如何360°无死角考察候选人的?(上篇)》,主要是用一个面试连环炮带出来了平时中大型互联网公司面试官是如何发问的。而后从技术广度的考察、底层技术的考察、技术深度的考察几个角度说了一下,咱们通常是如何来考察候选人的技术。
《互联网公司的面试官是如何360°无死角考察候选人的?(下篇)》,将会从项目经验的考察、系统设计的考察、候选人与岗位的匹配、多轮面试官的协做考察,来继续告诉你们互联网公司通常是如何科学的、全方位、无死角的来考察候选人的。
知己知彼、百战不殆,面试也是如此。因此咱们的《Java进阶面试系列》,以这两篇文章做为开端。
你只有真正了解了面试官的选拔标准,考察范围,才能更好的进行针对性的准备,成为真正的**“offer收割机”**。
因为公众号再也不开通文章留言功能,若是对文章有什么问题或者对公众号有什么建议,欢迎在公众号聊天框留言交流!
END
若有收获,请帮忙转发,您的鼓励是做者最大的动力,谢谢!
一大波微服务、分布式、高并发、高可用的原创系列文章正在路上
欢迎扫描下方二维码,持续关注:
石杉的架构笔记(id:shishan100)
十余年BAT架构经验倾囊相授
**> **推荐阅读:** > > 一、[拜托!面试请不要再问我Spring Cloud底层原理](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be13b83f265da6116393fc7) > > 二、[【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be3f8dcf265da613a5382ca) > > 三、[【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be83e166fb9a049a7115580) > > 四、[微服务架构如何保障双11狂欢下的99.99%高可用](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be99a68e51d4511a8090440) > > 五、[兄弟,用大白话告诉你小白都能听懂的Hadoop架构原理](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5beaf02ce51d457e90196069) > > 六、[大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5bec278c5188253e64332c76) > > 七、【[性能优化的秘密】Hadoop如何将TB级大文件的上传性能优化上百倍](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5bed82a9e51d450f9461cfc7) > > [八、](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf2c6b6e51d456693549af4)[拜托,面试请不要再问我TCC分布式事务的实现原理坑爹呀!](https://juejin.cn/post/6844903716089233416) [](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf2c6b6e51d456693549af4) > > 九、[【坑爹呀!】最终一致性分布式事务如何保障实际生产中99.99%高可用?](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf2c6b6e51d456693549af4) > > 十、[拜托,面试请不要再问我Redis分布式锁的实现原理!](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf3f15851882526a643e207) > > **十一、****[【眼前一亮!】看Hadoop底层算法如何优雅的将大规模集群性能提高10倍以上?](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf5396f51882509a768067e)** > > **十二、****[亿级流量系统架构之如何支撑百亿级数据的存储与计算](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Fjuejin.im%25252525252Fpost%25252525252F5bfab59fe51d4551584c7bcf)** > > 1三、[亿级流量系统架构之如何设计高容错分布式计算系统](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Fjuejin.im%252525252Fpost%252525252F5bfbeeb9f265da61407e9679) > > 1四、[亿级流量系统架构之如何设计承载百亿流量的高性能架构](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Fjuejin.im%2525252Fpost%2525252F5bfd2df1e51d4574b133dd3a) > > 1五、[亿级流量系统架构之如何设计每秒十万查询的高并发架构](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Fjuejin.im%25252Fpost%25252F5bfe771251882509a7681b3a) > > 1六、[亿级流量系统架构之如何设计全链路99.99%高可用架构](https://link.juejin.im?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Fjuejin.im%252Fpost%252F5bffab686fb9a04a102f0022) > > 1七、[七张图完全讲清楚ZooKeeper分布式锁的实现原理](https://link.juejin.im?target=https%3A%2F%2Fjuejin.im%2Fpost%2F5c01532ef265da61362232ed) > > 1八、[大白话聊聊Java并发面试问题之volatile究竟是什么?](https://juejin.cn/post/6844903730303746061) > > 1九、[大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?](https://juejin.cn/post/6844903731234865160) > > 20、[大白话聊聊Java并发面试问题之谈谈你对AQS的理解?](https://juejin.cn/post/6844903732061159437) > > 2一、[大白话聊聊Java并发面试问题之公平锁与非公平锁是啥?](https://juejin.cn/post/6844903732883226637) > > 2二、[大白话聊聊Java并发面试问题之微服务注册中心的读写锁优化](https://juejin.cn/post/6844903734267510798)**