后端学习路线(字节)
后端学习路线
Part1:一些学习方法/经验
一、先掌握、再理解、学习是一个反复的过程,应该由浅入深
二、不要只看,要多动手,实践出真知
三、可以适当学习一些前端,配合后端一起做,有了成果后会有成就感
四、不要把准备工作做的过于复杂,focus在要做的事情上
Part2:学习路线
一、计算机基础
①数据结构与算法
数据结构
链表、栈、队列、树、堆
算法
排序和查找算法
Leetcode
②计算机网络
TCP、IP
HTTP版本区别、方法
③操作系统(Linux)
可以用简单的命令、ps、cd、top
可以简单查看服务运行日志、排查异常问题
可以写简单的shell脚本
④设计模式
单例模式、工厂模式、策略模式、观察者模式等
二、Java相关
①Java基础
面相对象的特性与使用
常用内部集合的使用:ArrayList、HashMap等
泛型
异常处理
②JVM
JVM是什么,与Java的关系是什么,以及JVM怎么实现的跨平台性
JVM的内存模型是什么,每个区域的作用是什么
垃圾回收机制:垃圾回收算法和垃圾回收器
类加载过程:加载、链接(验证、准备、解析)、初始化
③Java多线程
基本概念
理解进程、线程与CPU之间的关系,以及多线程解决的问题
以及线程安全的三个问题:可见性、原子性、有序性
Java中线程的状态
Java中的锁
Syncronized锁
ReentrantLock
常见关键字和线程类的使用
以及Volatile、Syncronized解决了什么问题,对原理有个简单的了解
掌握Thread、Callable、Future的区别和使用
JUC中的并发集合和原子类的使用以及基本原理
ConcurrentHashMap
AtomicInteger
三、相关开发工具
①版本控制工具Git:add、commit、stash、push、pull
②Postman
③IntelliJ IDEA
④Navicat
⑤Maven
四、基础框架组件
①Spring boot
容器的概念
常用注解如@Autowired、@Component、@Service、@Request等
AOP的原理、应用场景以及使用方法
能启动一个WEB服务,通过HTTP接口完成一个简单的CRUD程序
②MyBatis
会简单应用即可
五、数据库
①MySQL
会写基本的SQL
了解MySQL底层有哪些log(不做过多要求)
索引
Hash索引、二叉树索引、B树、B+树
聚集索引、非聚集索引、联合索引等
锁
粒度划分:全局锁、表级锁、行级锁
性质划分:共享锁、独占锁
思想划分:乐观锁、悲观锁
事务
事物的ACID性质
事务的隔离级别
简单了解一下MVCC是什么,解决了什么问题
②Redis
了解其应用场景与解决的问题
基本数据结构、String、List、Hash、Set、Zset
会简单的使用,会进行命令行的kv的插入和查询
过期策略和淘汰策略
持久化策略,RDB、AOF
一些常见场景问题
缓存穿透、击穿、雪崩
缓存的预热和降级
出现大key和热key怎么解决
如何基于Redis实现分布式锁
缓存更新策略
六、加分的框架组件
①Kafka、Rabbit MQ
②Arthas性能调优
③容器虚拟化技术:Docker & Kubernetes
④监控组件Prometheus、Grafana
七、其他拓展知识(加分项)
①鉴权
Oauth2.0
JWT token
②常见攻防漏洞
XSS
CSRF
SQL注入
DoS和DDoS攻击
③HTTPS
对称加密和非对称加密
签名、证书
④分布式锁
⑤限流算法
⑥布隆过滤器
⑦Bitmap原理与应用
Part3:不要投入太多精力
JSP
现在基本上都是前后端分离架构,很少用JSP,不分离的情况也有很多更先进技术
Tomcat原理和Servlet
Spring相关
Spring源码
各种beanfactory的加载原理与机制
Spring事务
Spring MVC
请求处理流程:DispatcherServlet、HandlerMapping、HandlerAdapter等
Jetty原理