Learning Plan for a Java Backend Developer
Contents
References
- 1. Java Fundamentals
- 2. Commonly used Frameworks
- 3. Database
- 4. Web
- 5. Basics
- 6. Software Engineering and Management
Here is a list of points of knowledge I prepared for myself to learn or to review in order to be an advanced Java backend developer.
Java Fundamentals
- Collection,
java.util.concurrent
, IO/NIO, reflection
- Dynamic proxy, CGLIB
How to generate proxy class
- JVM, JMM (JVM Memory Model)
Mechanism of garbage collection (CMS GC + G1 GC)
JMM: refer to java language specification
JVM optimization: parameter optimization
ConcurrentHashMap, CopyOnWrite, Thread pool, CAS, AQS
Commonly used Frameworks
- Spring
- IOC/AOP (design patterns): just skip through its source code
- Source code level
- MyBatis
- Source code level
Database
- MySQL
- common practice of parameter settings
- how to choose storage engine
- how to choose index engine
- table design
- SQL optimization
- Redis
- internals
- common practice of parameter settings
Web
- HTTP Protocol: wikipedia
- SOA: wikipedia
- Caching
- Guava cache
- memcached
- redis
- Serialization (Google protocol buffer)
- RPC
- dubbo
- JMS
- internals
Basics
- Algorithm & Data structure
- <= Red-black tree
- IOC/AOP
- Design pattern (~ 15) ~> Wikipedia
Software Engineering and Management
High-Quality Software Engineering
References
- Watchmen
- Collections of Java interview questions
- MyBatis Caching