* 表示难度较大或理论性较强。
** 表示难度更大或理论性更强。
【Java语言本身】
基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(Java10)
【标准库】
集合,IO,AIO,流API
【著名第三方核心库】
Guava
【数据库方面】
熟练写SQL
常见的数据库(如MySQL,MS SQL Server,Oracle)至少会用一个
JDBC要会
MyBatis和Hibernate至少会一个
了解JPA
【Web开发】
SpringBoot就行,最好会SpringCloud
了解一下Servlet,不用学JSP
HTTP/1.1,了解HTTP/2
掌握REST风格
如果有必要,对前端略作了解
【构建工具】
Maven或Gradle都行
【JVM】
常见参数的含义、调整优化
内存模型
**源代码
============================================================
严格地说,下面已经脱离了Java本身的范畴,属于通用后端技能
【Nginx】
配置,负载均衡,动静分离,高可用
【分布式事务】
强一致,最终一致,2PC,3PC,**Raft
【分布式锁】
Redis提供的功能,Zookeeper提供的功能,数据库的乐观锁
【日志收集】
Elastic Stack
【缓存(cache)】
Redis(推荐)或memcache
【消息队列】
至少一个,推荐Kafka
【架构】
微服务,SOA治理,*服务网格