Java的学习路线和历程

729 阅读4分钟

前言

不知道各位大大在Java这条路上走了多久了,我17年毕业的嘛,毕业了就干这一行,也一直做到了现在。我本专业是微电子专业的,怎么就走上了Java这条路呢?说来话长,哈哈哈哈... 做技术嘛,枯燥且有趣。也不知道能在这条路上走多远,路漫漫其修远兮,不谈上下而求索,只要做得开心就好。

这是我写得第一篇文章,写得些许潦草,各位客官多多包涵。主要是想重头开始整理一下,包括了Java后端的学习路线,也想顺着这条路线写后续的文章,记录一下自己的所学所得。这篇文章也涵盖了大量的面试问题,觉得不错的记得点赞收藏哈~

集合框架

这里列举了我们最常用到的集合,也是面试中经常问到的。

Spring

​ 下面是我在读spring源码所整理的,Spring容器的启动流程,bean的创建过程,spring是怎么解决循环依赖的?AOP的实现原理,spring中的声明式事务等。我们常常使用spring,也许在面试的时候会去背一些面试题,而不能深入了解其中的原理,心里是不是也慌得一匹?读源码的过程是枯燥的,乏味的,恼火的...

​ 不过呢,读完源码后,可能刚开始对于实际的项目开发帮助并没有那么多,但是你就会有一种自信,发自内心的自信。随着你理解的加深,学习的越多,你会觉得读会了spring的源码,就像是打开了一扇新的大门。包括后面的SpringBoot、SpringCloud相关的组件源码,你去读的时候都会感觉比较轻松!

SpringBoot

​ 看起来字比较多.....不过SpringBoot里面主要需要去了解它的启动流程和它的自动装配技术。当了解SpringBoot的自动装配技术后,后面学习SpringCloud的相关组件也会容易很多,因为SpringCloud的组件基本都是基于SpringBoot的自动装配技术去写的嘛。

SpringCloud

​ 说起微服务,大家肯定都会想到SpringCloud,其中的组件包括Eureka,Ribbon,Feign、Hystrix,Zuul,当然还有链路追踪器,不过图中没有去体现。

​ 看完了Spring的全家桶,是不是觉得我还是有点东西!(手动滑稽)

​ Spring家族完了之后,就是数据库相关的了,我们最常用到的数据库就是MySQL了,下面来看一下MySQL相关的吧!

Mysql

​ MySQL相关的知识:两个存储引擎要知道吧(MyISAM、InnoDB),两者的区别?还有B树和B+树的区别?你是怎么去优化一条m慢SQL的?索引的类型,索引的使用这些等等。

​ 然后是Redis,不过Redis我还没有去整理相应的图。这里就手写一些Redis相关的问题吧~

​ 面试官:

​ redis的数据结构有哪些?(不止5种噢)

​ redis的持久化机制?(RDB、AOF),快照的实现原理?(COW)

​ redis为什么这么快?能说一下redis的线程模型吗?

​ redis的淘汰策略有哪些?

​ 能讲一下缓存与数据库双写的一致性问题吗?

​ 我:...... 公司门在哪里?我自己走吧......

JVM

​ JVM相关的知识,需要知道运行时的数据区,知道它们的作用,了解类加载器,双亲委派机制;垃圾回收算法、垃圾回收器,能讲出CMS垃圾回收的流程,G1收集器与CMS有什么不同?然后需要掌握JVM的一些调优,至少问到的时候,能说上一些~

​ 到现在笔者整理的图大概就是这些吧(毕竟整理一张图也不是一天两天的事),后面还有好多好多,今天也算抛砖引玉,后续在写到相关的文章的时候,都会把相关的图放到相关的文章里面!

RocketMQ

​ 包括RocketMQ的简介,NameServer、Producer、Broker、Consumer、MessageQueue、Topic等。还有一些RocketMq的常见问题。

​ 面试官:

​ 听说你很熟悉RocketMQ?

​ 说一下RocketMQ发送消息的完整流程?

​ RocketMQ中怎么保证消息不丢失?重复消息是怎么产生的?又是怎么处理的?

​ 再讲一下RocketMQ中的事务消息呢?

​ 我:...... 公司门在哪里?我自己走吧......

总结

​ 其实把上面这些掌握了在Java里也算登堂入室,在项目里可以独挡一面了吧。还有好多好多没有写到,比如算法、比如设计模式... 后续的学习还有Kafka、搜索引擎ElasticSearch、docker、k8s等等。

​ 做技术呢,就是要不断的学习,总结。一口吃不成一个胖子,日拱一卒,慢慢的就会发现自己已经走了那么远了啊~

​ 学习整理不易,如果觉得文章对你有帮助,记得点赞收藏噢,也欢迎关注我的公众号。

欢迎关注微信公众号「山主」,公众号文章首发,解锁更多干货~