JAVA后端学习路线
路线总览
javase->Mysql->计算机网络->JavaWeb->Maven(1)->Spring->SpringMVC->Mybatis->Maven(2)
->Linux->Git->SpringBoot->MyBatisPlus->Redis->JVM->JUC->Nginx->Docker->RabbitMQ->SpringCloud
->项目(谷粒商城/仿牛客网)
方法论
每天刷leetcode
看视频(写demo…)->记笔记->看javaGuide->温习
公众号
欢迎大家关注我的微信公众号:程序员城南,回复关键字获取相应资料链接
JVM(10天)
推荐视频:黑马JVM
推荐理由:视频时长:17.5h。尚硅谷宋红康老师的JVM实在太长了,黑马这个老师视频虽然不长,但是基本上面试的点都讲到了,而且讲话非常干练不拖沓
学习建议:类文件结构可以跳过。
推荐笔记:公众号回复JVM,获取jvm笔记
常见面试题
- jvm内存区域
- 内存区域中线程共享、私有
- 类加载过程(加载->连接(验证->准备->解析)->初始化)
- 类加载器(启动类加载器、扩展类加载器、应用程序类加载器)
- 双亲委派模型
- 死亡对象的判断方法(引用计数、可达性分析)
- 垃圾收集算法(标记清除、标记复制、标记整理、分代收集)
- 垃圾收集器(CMS)
JUC(15天)
推荐视频:尚硅谷周阳JUC并发编程
推荐理由:视频时长:24h。主讲老师是周阳老师,后面SpringCloud也是周阳老师。周阳老师吐词清晰,每个知识点都讲的非常清楚,基本上面试会问到的都讲到了
学习建议:大家切勿为了图快,看时长比较短的视频,我一开始看的是尚硅谷7个小时的JUC视频,看完去看面试题发现什么也不会,大家直接去看周老师的视频。重点:JMM、线程池、AQS、ConcurrentHashMap、原子类、ThreadLocal、CompletableFuture、volatile、synchronized
推荐笔记:公众号回复JUC获取视频源码+MD格式笔记
常见面试题(juc是面试重点)
- 进程和线程的区别
- 线程的生命周期
- sleep和wait方法区别(sleep没有释放锁,是Thread类的静态方法。阿里)
- volatile关键字(可见性、有序性)
- synchronized 修饰实例方法和静态方法
- synchronized 底层(monitorenter 和 monitorexit)
- synchronized 和 Lock 有什么区别?
- 双重检验锁的单例
- 什么是JMM(定义了一套多线程读取共享数据时,对数据的可见性、有序性、原子性的规则和保障)
- 自定义线程池、线程池的核心参数、拒绝策略
- ConcurrentHashMap底层
- AQS(周阳老师讲的非常清楚)
- CAS
- 原子类分类,原子类底层
- LongAddr与AtomicLong的区别
- ThreadLocal数据结构,内存泄漏
- CompletableFuture常用方法
Nginx(2天)
推荐视频:尚硅谷Nginx教程2022
推荐理由:视频时长:7h(基础篇),视频较新,老师讲解的也非常清楚
学习建议:大家只需要学完入门篇即可,面试基本不问,学Nginx主要是为了自己搭建项目的域名环境的时候用的
推荐笔记:公众号回复:Nginx,获取笔记链接