1. 语言相关
1.1 Java
核心知识点
Java的类加载机制
JVM相关:JVM内存模型和结构,GC原理,性能调优
泛型
集合体系
异常体系
IO体系
多线程编程
反射
Servlet
推荐数据
《Java编程思想》
《Effective Java》
《深入理解Java虚拟机》
1.2 Shell、Python等脚本语言
介绍
此类脚本语言的意义在于辅助后端开发,包括系统运维,工具集成(借助管道、重定向),文本处理,数据计算等工作,提升后端工作效率
核心知识点(Shell)
常用的linux操作和运维命令
管道、重定向
awk、sed等文本处理工具
推荐书籍
《linux与unix shell编程指南》
《Python编程 从入门到实践》
1.3 SQL 语言
介绍
通用于传统关系型数据库和大数据场景的结构化查询模型语言。传统数据库方面要精通mysql的sql语法;大数据场景主要掌握Hive SQL(Impala和Spark SQL等均在兼容Hive SQL)
核心知识点
区分DDL和DML
经典查询语句主要结构
表连接(内连接,左外连接,右外连接,全连接)
函数(普通函数,聚合函数)
索引
分区
适用场景
传统数据库,传统SQL:用于事务性数据操作,通常用于系统的业务库;
大数据场景下的SQL:用于数据分析,交互式查询,批量数据处理等。
推荐书籍
MySQL:《高性能MySQL》
Hive SQL:《Hive编程指南》
2. 开发工具
2.1 开发IDE Intellij/Eclipse
核心知识点
配置良好代码风格模板,包括文件注释,类注释,方法注释,缩进换行等
安装使用必要的插件:代码规范检查插件(Alibaba Java Coding Guidelines),源码潜在bug检查插件(pmd),字节码潜在bug检查插件(findbugs)等
2.2 工程构建 MAVEN
核心知识点
maven 仓库
maven pom.xml文件配置
maven 构建的生命周期
maven 插件
能力要求
学会配置maven多级工程结构
能够解决工程构建中常常出现的jar包冲突等问题
熟练使用maven
推荐书籍
《Maven实战》
2.3 版本管理 GIT
介绍
git是一个开源的分布式版本控制系统,通过规范化的工具和流程,使得开发者之间高效协同,保持产品稳定运行
推荐文章
3. 开发/测试框架
3.1 Spring框架体系 Spring MVC/Spring Boot
核心知识点
Spring框架的模块组成
IOC和AOP的设计思想和实现原理
Bean的作用域和生命周期
参考说明
有条件地阅读spring核心模块的代码,debug Spring框架的启动和Bean服务的过程是比较好的理解spring原理的方式
最新的版本更新和参考文档可以直接浏览 Spring官网
3.2 orm框架 mybatis/hibernate
mybatis介绍
持久层框架,通过xml映射的方式,使得开发者主要关心sql实现即可,由框架实现从实体到java类的映射,数据访问层服务实现,访问优化等等
核心知识点
熟练配置使用mybatis,掌握mapper xml的写法
会使用mybatis-generator的mvn插件自动生成DAO层代码和xml配置
理解mybatis的一、二级缓存,了解sql session创建过程和sql执行过程
推荐资料
最新的版本更新和参考文档可以直接浏览 Mybatis官网
3.3 测试框架 Junit/TestNG
核心能力要求
熟练使用Junit/TestNG进行单元测试,接口测试
学会借助Mockito解决外部系统,模块依赖的mock测试
学会使用maven的surfire plugin和jacoco plugin等插件,度量测例的通过率,测试代码覆盖率等指标
4. 服务端中间件
4.1 key-value存储系统
典型:redis/memcache
核心知识点
redis配置策略(持久化策略,替换算法等)
redis的部署模式(standalone单机,sentinel哨兵,cluster集群),哨兵的本质是主从切换,cluster是真正的分布式部署可以线性扩展内存资源
redis支持的数据结构
适用场景
分布式session存储,数据缓存,分布式锁,简单的消息队列,计数器(累加器)
4.2 消息队列
典型:rabbitmq/kafka
核心知识
两种集群模式对比:普通集群和镜像集群(HA)
kafka
基于zk的分布式拓扑结构
理解kafka支持的消息的写入流程,写入模式,消息的存储模式,消息的消费方式等
rabbitmq
适用场景
消息中间件一般适用于:系统之间需要高度解耦;异步传输数据(非阻塞);保证数据传输过程中数据可以持久化,解决生产端和消费端能力不一致的问题,避免峰值数据对下游服务节点的冲击等
对比rabbitmq和kafka: rabbitmq主要适用数据可靠性,一致性要求比较高的场景;kafka主要适用数据吞吐量比较的场景,如日志数据的实时传输等
4.3 分布式文件存储
典型:网易nos/阿里云oss
适用场景
存储需要在分布式架构下共享的文件对象:如前端静态文件,图片资源,大文件资源等
4.4 服务治理/RPC框架
典型:阿里dubbo
核心知识点
注册中心,服务注册、服务发现、负载均衡、序列化、反序列化、编码、解码等核心概念
适用场景
在相对复杂的应用服务网络中,扮演服务治理,服务解耦,负责均衡,简化服务调用方式的作用
4.5 Java Web容器
典型:tomcat/jetty等
介绍
本质上是一个servlet容器,即可以在其上运行Java Web的应用程序
4.6 Nginx
介绍
nginx本质上是一个的HTTP和反向代理服务器
适用场景
http服务器,反向代理,软负载均衡器等
4.7 关系型数据库
典型: MYSQL/ORACLE
核心知识点
索引
事务与事务隔离级别
存储方法
触发器
不同关系型数据库的SQL差异
推荐书籍
《高性能MySQL》
《Oracle从入门到精通》
5. 大数据存储和计算框架等
核心能力要求
了解大数据体系整体的框架、组成
熟悉各种大数据存储,计算框架,查询引擎等主要的架构、功能和适用场景
能够在项目的架构过程中进行合理的大数据技术方案选型
6. 其他
6.1 权限相关
-
介绍:
<pre style="display: block; padding: 9.5px; margin: 0px 0px 10px; font-size: 13px; line-height: 1.42857; color: rgb(51, 51, 51); word-break: break-all; overflow-wrap: break-word; background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius: 4px;"> * 权限相关涉及到:身份认证,鉴权,权限管理等</pre>
核心知识点:
RBAC(基于角色的权限控制)模型
理解OAuth 2.0的设计思想和运行流程
6.2 安全相关
介绍
在后端开发中需要关注很多的安全问题,这些安全问题可能来自恶意的攻击,也可能来自系统本身的安全性和健壮性不足。防止应用安全漏洞产生的前提是理解常见的漏洞概念、原理以及产生的原因
核心知识点
水平权限和垂直权限漏洞,以及在程序开发中怎样避免
SQL注入攻击(mybatis预编译可以避免)
常用的限流策略
CSRF 攻击
XSS 攻击
6.3 日志相关
核心知识点
Log4j、Logback、SLF4J之间的关系,应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API
日志的等级(error/warn/info/debug)
日志的保留时间
6.4 异常处理相关
核心知识点
异常的分类,正确区分异常处理方式
异常处理原则
学会借助spring框架等,将异常转为对用户或者调用方更加友好的错误码和错误信息
6.5 RestFul接口设计相关
介绍
restful在目前是使用较多的接口设计和服务间依赖http接口设计的主要原则,基于良好的约定规范,可以使得接口简单易懂,提高团队协作的效率
推荐文章
6.6 线上问题排查流程和工具
核心知识点
系统问题排查:学会使用w/uptime、top、df、netstat、iostat以及各种可视化监控工具排查本机的负载、磁盘、内存、网络等系统问题
应用问题排查:学会依据应用系统错误日志以及jps、jinfo、jstat、jstack、jmap以及各种可视化监控工具,排查应用系统问题
数据库问题排查:学会借助mysql慢查询日志、explain以及各种可视化工具排查mysql使用过程中的各种问题
网络问题排查:学会借助telnet、ping、wget、nc等工具排查网络问题
6.7 多线程编程
核心知识点
Java线程相关接口和类的实现和关系
Java线程池
线程同步,锁等
6.8 网络相关
核心知识点
掌握http协议消息体划分、连接和通信过程
掌握http主要的返回状态码意义
掌握https协议的连接和通信过程
6.9 设计原则和设计模式
核心知识点
单例模式
策略模式
代理模式
观察者模式
装饰模式
适配器模式
组合模式
工厂模式
模板方法模式
...
单一职责原则
里氏替换原则
依赖倒置原则
接口隔离原则
迪米特法则
开闭原则
组合/聚合复用原则
七大设计原则
一些常用的设计模式
6.10 分布式系统设计相关
核心知识点
Quartz,基于数据库锁的抢占式分布式定时器
基于数据库
基于缓存
基于zookeeper
一致性理论
分布式事务解决方案
一致性模型
CAP定理
BASE 理论
强一致性
弱一致性
最终一致性
eBay 事件队列方案
TCC (Try-Confirm-Cancel)补偿模式
缓存数据最终一致性
强一致性(两段提交和三段提交模型, Paxos或者Raft算法)
最终一致性
SOA
微服务
Servless
分布式系统架构设计
分布式事务
分布式锁
分布式定时器