The road to becoming a Java engineer

1. Basic JVM

 

JVM memory structure

Difference between heap, stack, method area, direct memory, heap and stack

Java memory model

memory visibility, reordering, sequential consistency, volatile, locking, final

garbage collection

Memory allocation strategy, garbage collector (G1), GC algorithm, GC parameters, determination of object survival 

JVM parameters and tuning

Java Object Model

oop-klass, object header

HotSpot

Just-in-time compiler, compilation optimization

class loading mechanism

classLoader, class loading process, parent delegation (destroy parent delegation), modularity (jboss modules, osgi, jigsaw)

Virtual Machine Performance Monitoring and Troubleshooting Tools

jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, btrace、TProfiler

 

Compile and decompile

 

javac 、javap 、jad 、CRF

 

Java Basics

 

read the source code

String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSet

Various variable types in Java

Familiar with the use of Java String, familiar with the various functions of String

The principle and difference of substring in JDK 6 and JDK 7,

replaceFirst、replaceAll、replace区别、

String overloads of "+",

The difference between String.valueOf and Integer.toString,

immutability of strings

Automatic unpacking

Integer's caching mechanism

Familiar with various keywords in Java

Principle and usage of transient, instanceof, volatile, synchronized, final, static, const.

Collection class

The use of common collection classes

Difference between ArrayList and LinkedList and Vector 

The difference between SynchronizedList and Vector

HashMap、HashTable、ConcurrentHashMap区别

Stream related usage in Java 8

The use of apache collection processing tool class

Differences and reasons for the implementation of HashMap in different versions of JDK

enumerate

Enumeration usage, enumeration and singleton, Enum class

Java IO & Java NIO, and learn to use

The difference between bio, nio and aio, the usage and principles of the three IOs, netty

Java reflection and javassist

reflection and factory pattern, java.lang.reflect.*

Java serialization

What is serialization and deserialization and why serialization

The underlying principle of serialization

Serialization and Singleton Pattern

protobuf

Why serialization is not safe

annotation

Meta-annotations, custom annotations, the use of common annotations in Java, the combination of annotations and reflection

JMS

What is Java Message Service, JMS Messaging Model

JMX

java.lang.management.* javax.management.*

Generics

Generics and Inheritance

type erasure

Generic KTVE  

The meaning of object, etc., various usages of generics

unit test

junit, mock, mockito, in-memory database (h2)

regular expression

java.lang.util.regex.*

Commonly used Java tool library

commons.lang, commons.*... guava-libraries netty

What is API&SPI

abnormal

Exception types, handling exceptions correctly, custom exceptions

time processing

Time Zone, Season, Time API in Java

Encoding

Solve the problem of garbled characters, common coding methods

syntactic sugar

The principle of syntactic sugar in Java, the solution of syntactic sugar

 

Java concurrent programming

 

What is a thread and the difference from a process

Read the source code and learn to use

Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、、ConcurrentHashMap、Executors

Thread Pool

Design your own thread pool, submit() and execute()

thread safety

Deadlock, how to troubleshoot deadlock, Java thread scheduling, the relationship between thread safety and memory model

Lock

CAS, optimistic locks and pessimistic locks, database-related lock mechanisms, distributed locks, biased locks, lightweight locks, heavyweight locks, monitor, lock optimization, lock elimination, lock coarsening, spin locks, reentrant locks, blocking lock, deadlock

deadlock

volatile

happens-before, compiler instruction reordering, and CPU instruction reordering

synchronized

How is synchronized implemented?

The relationship between synchronized and lock

How to implement a thread-safe singleton without using synchronized

sleep 和 wait

wait 和 notify

notify 和 notifyAll

ThreadLocal

Write a deadlocked program

Write code to solve the producer consumer problem

Daemon thread

The difference and usage of daemon threads and non-daemon threads

 

2. Advanced Java Basic Knowledge

 

Bytecode, class file format

CPU cache, L1, L2, L3 and false sharing

tail recursion

bit operation

Add, Subtract, Multiply, Divide, and Take the remainder using bitwise operations

 

Design Patterns

 

Learn about 23 design patterns

Use common design patterns

Singletons, policies, factories, adapters, chains of responsibility.

Implement AOP

Implementing IOCs

Implement thread-safe singleton pattern without synchronized and lock

nio and reactor design patterns

 

network programming

 

Common protocols such as tcp, udp, http, https

Three-way handshake and four-time close, flow control and congestion control, OSI seven-layer model, tcp sticking and unpacking

Difference before http/1.0 http/1.1 http/2

Java RMI,Socket,HttpClient

cookie 与 session

cookie is disabled, how to implement session

Write a simple HTTP server for static files in Java

Implement client-side caching function, support returning 304 Implement concurrent download of a file Use thread pools to process client requests Use nio to process client requests Support simple rewrite rules The above functions need to meet the "open and closed principle" when implemented

Understand the characteristics of nginx and apache servers and build a corresponding server

Implementing FTP and SMTP Protocols with Java

way of communication between processes

What is a CDN? If realized?

What is DNS?

reverse proxy

 

Framework knowledge

 

Servlet thread safety issues

Servlet中的filter和listener

Hibernate的缓存机制

Hiberate的懒加载

Spring Bean的初始化

Spring的AOP原理

自己实现Spring的IOC

Spring MVC

Spring Boot2.0

Spring Boot的starter原理,自己实现一个starter

Spring Security

 

应用服务器

 

JBoss

tomcat

jetty

Weblogic

 

工具

 

git & svn

maven & gradle

 

三、 高级篇新技术

 

Java 8

lambda表达式、Stream API、

Java 9

Jigsaw、Jshell、Reactive Streams

Java 10

局部变量类型推断、G1的并行Full GC、ThreadLocal握手机制

Spring 5

响应式编程

Spring Boot 2.0

 

性能优化

 

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

 

线上问题分析

 

dump获取

线程Dump、内存Dump、gc情况

dump分析

分析死锁、分析内存泄露

自己编写各种outofmemory,stackoverflow程序

HeapOutOfMemory、 Young OutOfMemory、MethodArea OutOfMemory、ConstantPool OutOfMemory、DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow

常见问题解决思路

内存溢出、线程死锁、类加载冲突

使用工具尝试解决以下问题,并写下总结

当一个Java程序响应很慢时如何查找问题、

当一个Java程序频繁FullGC时如何解决问题、

如何查看垃圾回收日志、

当一个Java应用发生OutOfMemory时该如何解决、

如何判断是否出现死锁、

如何判断是否存在内存泄露

 

编译原理知识

 

编译与反编译

Java代码的编译与反编译

Java的反编译工具

词法分析,语法分析(LL算法,递归下降算法,LR算法),语义分析,运行时环境,中间代码,代码生成,代码优化

 

操作系统知识

 

Linux的常用命令

进程同步

缓冲区溢出

分段和分页

虚拟内存与主存

 

数据库知识

 

MySql 执行引擎

MySQL 执行计划

如何查看执行计划,如何根据执行计划进行SQL优化

SQL优化

事务

事务的隔离级别、事务能不能实现锁的功能

数据库锁

行锁、表锁、使用数据库锁实现乐观锁、

数据库主备搭建

binlog

内存数据库

h2

常用的nosql数据库

redis、memcached

分别使用数据库锁、NoSql实现分布式锁

性能调优

 

数据结构与算法知识

 

简单的数据结构

栈、队列、链表、数组、哈希表、

二叉树、字典树、平衡树、排序树、B树、B+树、R树、多路树、红黑树

排序算法

各种排序算法和时间复杂度 深度优先和广度优先搜索 全排列、贪心算法、KMP算法、hash算法、海量数据处理

 

大数据知识

 

Zookeeper

基本概念、常见用法

Solr,Lucene,ElasticSearch

在linux上部署solr,solrcloud,,新增、删除、查询索引

Storm,流式计算,了解Spark,S4

在linux上部署storm,用zookeeper做协调,运行storm hello world,local和remote模式运行调试storm topology。

Hadoop,离线计算

HDFS、MapReduce

分布式日志收集flume,kafka,logstash

数据挖掘,mahout

 

网络安全知识

 

什么是XSS

XSS的防御

什么是CSRF

什么是注入攻击

SQL注入、XML注入、CRLF注入

什么是文件上传漏洞

加密与解密

MD5,SHA1、DES、AES、RSA、DSA

什么是DOS攻击和DDOS攻击

memcached为什么可以导致DDos攻击、什么是反射型DDoS

SSL、TLS,HTTPS

如何通过Hash碰撞进行DOS攻击

用openssl签一个证书部署到apache或nginx

 

四、架构篇分布式

 

数据一致性、服务治理、服务降级

分布式事务

2PC、3PC、CAP、BASE、 可靠消息最终一致性、最大努力通知、TCC

Dubbo

服务注册、服务发现,服务治理

分布式数据库

怎样打造一个分布式数据库、什么时候需要分布式数据库、mycat、otter、HBase

分布式文件系统

mfs、fastdfs

分布式缓存

缓存一致性、缓存命中率、缓存冗余

 

微服务

 

SOA、康威定律

ServiceMesh

Docker & Kubernets

Spring Boot

Spring Cloud

 

高并发

 

分库分表

CDN技术

消息队列

ActiveMQ

 

监控

 

监控什么

CPU、内存、磁盘I/O、网络I/O等

监控手段

进程监控、语义监控、机器资源监控、数据波动

监控数据采集

日志、埋点

Dapper

 

负载均衡

 

tomcat负载均衡、Nginx负载均衡

 

DNS

 

DNS原理、DNS的设计

 

CDN

 

数据一致性

 

五、 扩展篇云计算

 

IaaS、SaaS、PaaS、虚拟化技术、openstack、Serverlsess

 

搜索引擎

 

Solr、Lucene、Nutch、Elasticsearch

 

权限管理

 

Shiro

 

区块链

 

哈希算法、Merkle树、公钥密码算法、共识算法、Raft协议、Paxos 算法与 Raft 算法、拜占庭问题与算法、消息认证码与数字签名

比特币

挖矿、共识机制、闪电网络、侧链、热点问题、分叉

以太坊

超级账本

 

人工智能

 

数学基础、机器学习、人工神经网络、深度学习、应用场景。

常用框架

TensorFlow、DeepLearning4J

 

其他语言

 

Groovy、Python、Go、NodeJs、Swift、Rust

 

六、 推荐书籍

 

《深入理解Java虚拟机》 

《Effective Java》 

《深入分析Java Web技术内幕》 

《大型网站技术架构》 

《代码整洁之道》 

《Head First设计模式》 

《maven实战》 

《区块链原理、设计与应用》 

《Java并发编程实战》 

《鸟哥的Linux私房菜》 

《从Paxos到Zookeeper》 

《架构即未来》

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326171436&siteId=291194637