目录

 

JVM

javaSE

Java并发编程

Java底层知识(操作系统和计算机组成原理的知识)

网络编程知识

框架知识

应用服务器知识

工具

Java和Spring的新版本

性能优化

线上问题分析

编译原理知识

数据库知识

数据结构与算法知识

大数据知识

网络安全知识

架构师

新技术


JVM

  • JVM内存结构
  • Java内存模型
  • 垃圾回收
  • JVM参数及调优
  • Java对象模型
  • HotSpot
  • 类加载机制
  • 虚拟机性能监控与故障处理工具
  • 编译与反编译

推荐书籍:深入理解Java虚拟机

javaSE

  • 阅读源代码(常用API底层源代码,如集合类、包装类)
  • Java中各种变量类型
  • 自动拆装箱
  • 熟悉Java中各种关键字
  • 枚举
  • Java IO&Java NIO
  • Java反射与javassist
  • Java序列化
  • 注解
  • JMS
  • JMX
  • 泛型
  • 单元测试
  • 正则表达式
  • 常用的Java工具库
  • 什么是API&SPI
  • 异常
  • 时间处理(让程序睡眠)
  • 编码方式(中文编码问题)
  • 语法糖

推荐书籍:Java核心技术

Java并发编程

  • 阅读线程类的源代码
  • 线程池
  • 线程安全
  • 锁和死锁

推荐书籍:Java 并发编程的艺术

 

Java底层知识(操作系统和计算机组成原理的知识)

  • 字节码、class文件格式
  • CPU缓存,L1,L2,L3和伪共享
  • 尾递归
  • 位运算
  • 设计模式(了解23种设计模式,会使用常用设计模式)
  • 实现AOP
  • 实现IOC
  • 不用synchronized和lock,实现线程安全的单例模式
  • nio和reactor设计模式
  • -----------------------------------------------------------------------
  • Linux的常用命令
  • 进程同步
  • 缓冲区溢出
  • 分段和分页
  • 虚拟内存与主存

 

网络编程知识

  • http/1.0 http/1.1 http/2之前的区别
  • Java RMI,Socket,HttpClient
  • cookie 与 session
  • 用Java写一个简单的静态文件的HTTP服务器
  • 了解nginx和apache服务器的特性并搭建一个对应的服务器
  • 用Java实现FTP、SMTP协议
  • 进程间通讯的方式
  • 什么是CDN?如果实现?
  • 什么是DNS?
  • 反向代理

 

框架知识

  • Servlet线程安全问题
  • Servlet中的filter和listener
  • Hibernate的缓存机制
  • Hiberate的懒加载
  • Spring Bean的初始化
  • Spring的AOP原理
  • 自己实现Spring的IOC
  • Spring MVC
  • Spring Boot2.0
  • Spring Security

 

应用服务器知识

  • JBoss
  • tomcat
  • jetty
  • Weblogic

 

工具

  • git & svn
  • maven & gradle

 

Java和Spring的新版本

  • Java 8
  • Java 9
  • Java 10
  • Spring 5
  • Spring Boot 2.0

 

 

性能优化

  • 使用单例、使用Future模式、使用线程池、选择就绪、减少上下文切换、减少锁粒度、数据压缩、结果缓存

 

线上问题分析

  • dump获取
  • dump分析
  • 自己编写各种outofmemory,stackoverflow程序
  • 常见问题解决思路(内存溢出、线程死锁、类加载冲突)
  • 使用工具尝试解决以下问题,并写下总结
  1. 当一个Java程序响应很慢时如何查找问题、
  2. 当一个Java程序频繁FullGC时如何解决问题、
  3. 如何查看垃圾回收日志、
  4. 当一个Java应用发生OutOfMemory时该如何解决、
  5. 如何判断是否出现死锁、
  6. 如何判断是否存在内存泄露

 

编译原理知识

  • 编译与反编译
  • Java代码的编译与反编译
  • Java的反编译工具
  • 词法分析,语法分析(LL算法,递归下降算法,LR算法),语义分析,运行时环境,中间代码,代码生成,代码优化

 

数据库知识

  • MySql 执行引擎
  • MySQL 执行计划
  • SQL优化
  • 事务
  • 数据库锁
  • 数据库主备搭建
  • binlog
  • 内存数据库
  • 常用的nosql数据库(redis、memcached)
  • 分别使用数据库锁、NoSql实现分布式锁
  • 性能调优

 

数据结构与算法知识

  • 简单的数据结构
  1. 栈、队列、链表、数组、哈希表
  2. 树(二叉树、字典树、平衡树、排序树、B树、B+树、R树、多路树、红黑树)
  • 排序和查找算法
  1. 各种排序算法和时间复杂度 深度优先和广度优先搜索 全排列、贪心算法、KMP算法、hash算法、海量数据处理

 

大数据知识

  • Zookeeper
  • Solr,Lucene,ElasticSearch
  • Storm,流式计算,了解Spark,S4
  • Hadoop,离线计算
  • 分布式日志收集flume,kafka,logstash
  • 数据挖掘,mahout

 

网络安全知识

  • 什么是XSS
  • 什么是CSRF
  • 什么是注入攻击
  • 什么是文件上传漏洞
  • 加密与解密
  • 什么是DOS攻击和DDOS攻击
  • SSL、TLS,HTTPS
  • 如何通过Hash碰撞进行DOS攻击
  • 用openssl签一个证书部署到apache或nginx

 

架构师

  • 分布式架构
  1. 分布式
  2. 分布式事务
  3. Dubbo
  4. 分布式数据库
  5. 分布式文件系统
  6. 分布式缓存
  • 微服务
  1. ServiceMesh
  2. Docker & Kubernets
  3. Spring Boot
  4. Spring Cloud
  • 高并发
  1. 分库分表
  2. CDN技术
  3. 消息队列
  • 监控
  1. 监控什么
  2. 监控手段
  3. 监控数据采集
  4. Dapper
  • 负载均衡(tomcat负载均衡、Nginx负载均衡)
  • DNS(DNS原理、DNS的设计)
  • CDN

 

新技术

  • 云计算(IaaS、SaaS、PaaS、虚拟化技术、openstack、Serverlsess)
  • 搜索引擎(Solr、Lucene、Nutch、Elasticsearch)
  • 权限管理(Shiro)
  • 区块链
  1. 哈希算法、Merkle树、公钥密码算法、共识算法、Raft协议、Paxos 算法与 Raft 算法、拜占庭问题与算法、消息认证码与数字签名
  2. 比特币
  3. 以太坊
  4. 超级账本
  • 人工智能(数学基础、机器学习、人工神经网络、深度学习、应用场景)

常用框架(TensorFlow、DeepLearning4J)

  • 其他语言

Groovy、Python、Go、NodeJs、Swift、Rust

 

注:如果侵犯版权,联系我删除。

摘要: 原创出处https://juejin.im/post/5ab46c9ef265da239b415ce1

 

 

 

 

 

 

 

 

 

10-06 12:22