Java后端开发学习路线 | 腾讯实习版
Tips:
- 学习阶段的很多知识其实和面试问题无关
- 关于笔记,只记录核心的即可,如果记录很多,其实也不会回头去看
- 每学完对应的技术栈的视频内容,可以去熟悉一下对应的重点八股总结
1. JavaSE
建议用时:20天
按视频顺序的主要内容
- Java语法:需要熟悉,为算法刷题做准备
- 常见API的使用:有个印象,真用到了再去查
- 面向对象:深入理解
- 异常:过一遍,讲的比较浅
- 集合:认真学习,初步理解,深入的原理在背诵八股时再理解
- IO流:过一遍 / 跳过,完全不需要会
- 文件和日志:过一遍 / 跳过,面试不问
- 多线程基础:认真学习,初步理解,深入的原理在学习JUC篇和背诵八股时再理解
- 网络通信:过一遍 / 跳过,完全不需要会
- 反射:了解,具体再背八股
- 动态代理:了解,深入的原理在背诵八股时再理解
JavaSE 本阶段对应高频八股问题总结:
集合的分类有哪些?
迭代器的实现原理是什么?
为什么 new ArrayList<>()时建议指定初始化容量值
为什么 ArrayList 默认情况下的扩容机制是扩容为原数组的1.5倍
ArrayList是线程的安全吗
CopyOnWriteArrayList 的实现原理
HashMap的添加元素流程
HashMap扩容加载因子为什么是0.75
HashMap扩容为什么扩容为数组长度的2倍
HashMap是线程的安全吗
ConcurrentHashMap的实现原理
泛型是什么?泛型的好处?类型擦除是什么?
反射是什么?反射的好处?反射的使用场景?
动态代理有哪些方式?原理是什么?
JDK动态代理和Cglib动态代理的区别?
JDK新特性:虚拟线程的原理了解吗?
2. JavaWeb
建议用时:10天
按视频顺序的主要内容
- 前端内容:跳过,完全不需要会
- Maven:会使用即可
- 请求响应模型和服务三层架构:会使用即可
- MySQL基础使用:基础入门使用,后面还需要深入学其他视频
- Mybatis框架:学会使用
- Filter和Interceptor:过一遍,真要用再查
- 事务管理:过一遍
- AOP和SpringBoot:了解会使用,具体再背八股
- Maven高级:过一遍 / 跳过,面试不问
3. JavaSSM
建议用时:若不看视频则3天,看视频则5天
SSM指的是Spring、SpringMVC、Mybatis
因为前面学过Mybatis和一点SpringBoot
这部分可以去查一下Spring、SpringMVC的文章阅读
可以不看视频,具体的背八股
也可以看视频快速过
(但这个视频里还会教到MybatisPlus:企业实战非常常用的技术,可学)
Java 框架 本阶段对应高频八股问题总结:
解释一下IOC和AOP?IOC的好处?
AOP的应用场景?实现原理?
Spring事务的实现原理?
SpringBoot自动装配原理?
Spring常见注解有哪些?
Spring Bean的作用域有哪些?
Spring MVC的执行流程?
SpringBoot的启动流程?
Spring中用到了哪些设计模式?
4. MySQL
建议用时:10天
按视频顺序的主要内容
- SQL书写:认真学习,需要会写两表联查的SQL
- 事务:认真学习,原理后面背八股总结
- 存储引擎:认真学习,原理后面背八股总结
- 索引:认真学习,原理后面背八股总结
- SQL优化:这里讲的一般,过一遍,具体SQL优化后面背八股总结
- 视图、存储过程、触发器:跳过、完全不需要会
- 锁:这里讲的一般,过一遍
- Innodb存储引擎:含事务原理、MVCC,认真学习,后面背八股总结
- 主从复制:认真学习,后面背八股总结
- 分库分表、读写分离:不需要看,后面背八股总结
MySQL 本阶段对应高频八股问题总结:
事务的四大特性是什么? 实现原理是什么?
并发事务有什么问题?分别解释一下?
事务的隔离级别有哪些?实现原理是什么?
如何理解MVCC?
为什么使用B+树作为索引的数据结构?为什么不用哈希表或二叉树?
B树和B+树有什么区别?
什么是聚集索引和二级索引?
回表是什么?怎么消除回表?索引覆盖是什么?
索引失效的情况有哪些?
分别解释一下RedoLog、UndoLog、BinLog?应用场景?
为什么RedoLog 使用 WAL 技术?
BinLog的三种格式?
执行一条SQL的过程是怎么样的?
你知道执行计划吗,可以解释一下字段的含义吗?
你面对慢SQL会怎么优化?
分片键如何选择?
分片算法有哪些?
什么是一致性哈希分片算法?
非分片键的查询怎么办?
什么时候需要分库分表?
如何预估分库分表的数量?
分库分表带来哪些问题?
5. Redis
建议用时:15天
按视频顺序的主要内容
- Redis基础数据类型和命令:认真学习使用
- 实战篇(黑马点评项目):认真学习,包装优化后可作为简历的项目
- 持久化机制:认真学习,后面背八股总结
- 主从、哨兵、集群:认真学习,后面背八股总结
- 多级缓存:可以跳过
- Redis最佳实践:过一遍
- 数据结构:认真学习,后面背八股总结
- 网络模型:认真学习
- 内存回收:认真学习,后面背八股总结
Redis 本阶段对应高频八股问题总结:
Redis的数据类型有哪些?应用场景?
Redis的数据类型的底层数据结构你了解吗?
ZSet为什么使用 SkipList 跳表 实现?SkipList跳表是什么?
Redis如何实现分布锁?
SetNx实现的分布锁有什么问题?
Redisson分布式锁底层使用什么数据结构?
Redisson分布式锁的好处有哪些?
解释一下如何实现可重入?
超市续约的看门狗机制了解吗?
Redisson分布式锁的问题是什么?如何解决?
介绍Redis的持久化方式(RDB、AOF、混合持久化)?优缺点?
Redis的内存淘汰策略有哪些?
什么是缓存击穿/穿透/雪崩?分别怎么解决?
什么是热Key问题?影响?解决方案?
什么是大ey问题?影响?解决方案?
Redis的高可用了解吗?主从?哨兵?Redis cluster?
除了官方的还了解过其他的Redis高可用方案吗?
主从数据同步的原理了解吗?
Redis是AP还是CP的?
Redis支持事务吗?
Redis支持事务回滚吗?
6. JUC
建议用时:15天
基本都认真学一遍,不懂的可以不用纠结,下来再具体背高频八股
JUC 本阶段对应高频八股问题总结:
线程有哪几种状态?状态如何流转?
创建线程的方式?
多线程有什么应用?
线程池的好处?
线程池的七个参数?
为什么不推荐使用jdk的Executors创建线程池?
线程池的执行流程?
任务拒绝策略有哪些,怎么选择?
线程池的核心线程数和最大线程数怎么设定?
上线后你会关注线程池的哪些指标?
你怎么理解线程安全?
synchronized的原理实现是什么?
synchronized锁升级过程了解吗?
CAS是什么?应用场景?优缺点?
ReentrantLock是什么,和synchronized相比的区别是什么?
AQS是什么?怎么实现的?
乐观锁是什么?悲观锁是什么?应用场景分别是什么?
用数据库如何实现乐观锁
JMM是什么?其中原子性、可见性、有序性问题分别是什么?
JMM如何保证的原子性、可见性、有序性?
常考算法:多线程交替打印0-100
常考算法:多线程交替打印ABC
7. JVM
建议用时:15天
基本都认真学一遍,不懂的可以不用纠结,下来再具体背高频八股
JVM 本阶段对应高频八股问题总结:
JVM的内存结构/运行时数据区了解吗?分别介绍一下它们的作用?
创建对象一定要分配在堆里吗,了解过逃逸分析和栈上分配吗?
了解过TLAB吗
请你介绍一下Java的GC垃圾回收
可以详细介绍一下CMS吗
可以详细介绍一下G1吗
根可达性算法是什么?哪些对象作为GCRoot
三色标记法是什么?作用?好处?
漏标问题/对象消失问题怎么解决?
浮动垃圾/多标问题怎么解决?
双亲委派是什么?双亲委派的好处是吗?
怎么破坏双亲委派?
Tomcat为什么以及怎么破坏双亲委派?
你有调优过JVM吗?
8. 消息队列
建议用时:3天
过一遍了解核心概念即可,具体的可以直接背高频八股
Kafka 本阶段对应高频八股问题总结:
Kafka的架构和核心概念能介绍一下吗?
如何保证消息不丢失?
如何保证消息不重复消费?
如何保证消息顺序消费?
介绍一下Rebalance机制?
Offset自动提交是怎么实现的?
消息堆积应该怎么解决?
9. 计算机网络和操作系统
建议用时:3天
看 小林coding 和 Javaguide 即可,不需要系统看课
计算机网络 本阶段对应高频八股问题总结:
键入网址到网页显示,期间发生了什么?
Http1.0 与 Http1.1 比较区别?
Http1.1 与 Http2.0 比较区别?
Http2.0 与 Http 3.0 比较区别?
Quic 协议了解过吗?
Https的加密过程可以介绍一下吗?
Https为什么要用两种加密算法:对称加密算法和非对称加密算法?
TCP的可靠性是怎么保证的?
介绍一下拥塞控制?
介绍一下TCP三次握手的过程?
介绍一下TCP四次挥手的过程?
为什么是三次握手?不是两次?
为什么挥手需要四次?
为什么有TIME_WAIT状态?为什么是2MSL时间?
TIME_WAIT 状态的连接过多怎么处理
TCP粘包和拆包是什么?解决方案?
CDN是什么?
操作系统 本阶段对应高频八股问题总结:
进程线程协程是什么?
进程间通信方式?线程间通信方式?
介绍一下操作系统的内存管理机制?
什么是虚拟内存?
产生死锁的四个条件?
介绍一下IO多路复用 select、poll、epoll?原理和优缺点?
Linux的常用命令有哪些?
10. 算法
- 分类刷题:不要随意刷题,建议自己规划时间段分类刷,比如第一周专门解链表题型,第二周专门解二叉树题型,以此类推。让知识形成体系,通过一段时间的高强度刻意练习把这个题型相关的知识点不断强化
- 坚持刷题:按照规划刷题不断反复,分类刷了不坚持也是白费,最好从今天开始
- 抓住重点:链表、数组、二叉树 是重点,考的最多,熟练掌握它们效益最大
- 学会刷题:一个题目不只一种解法,当你看不懂题解时,很有可能是它的题解写的不好或者讲的不好,多找找其他人的题解,一般都会有人讲的令你感觉通俗易懂
- 题单/教学视频:
- leetcode hot100
- 牛客top101
- 代码随想录
- 灵茶山艾府
- labuladong
11. 其他
设计模式、数据结构与算法、常见问题定位分析、场景题 等等 直接看高频八股
常见问题定位分析:
CPU飙高的排查思路?
内存泄漏的排查思路?
数据结构与算法
可以说说归并排序吗?
可以说说快速排序吗?
快速排序的时间复杂度是由什么影响的?
如何用两个栈模拟一个队列?
设计模式
你了解哪些设计模式?
单例模式有哪些实现方式?饿汉式和懒汉式的区别?
你会使用哪种模式实现单例?
为什么懒汉式的双重检查锁要加上volataile?
场景题
订单<未支付&到期>关闭如何实现?
1 亿个数据取出最大前 100 个
大文件排序
Redis缓存与MySQL数据一致性
......
#学习路线##java##后端开发#