Java的学习路线和历程
前言
不知道各位大大在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等等。
做技术呢,就是要不断的学习,总结。一口吃不成一个胖子,日拱一卒,慢慢的就会发现自己已经走了那么远了啊~
学习整理不易,如果觉得文章对你有帮助,记得点赞收藏噢,也欢迎关注我的公众号。
扫码或者微信搜索山主,公众号的文章是首发噢~