Preface
As a representative of first-line Internet companies, Alibaba is a dream workplace for most programmers. It is true that programmers from big factories have more valuable background and higher gold content. In fact, Alibaba programmers have long become role models and benchmarks for learning in the industry, but in fact, we have not seen the blood and sweat behind the bright. So how do Ali programmers usually learn?
Today, let’s talk about the "Java Assault Book" that has surprised us all. This book has been popular within Alibaba for a long time and is suitable for programmers of all years to learn. It mainly divides the technology stacks that need to be learned into three stage:
- 0-1 years of development experience (solid foundation): Java foundation + concurrent programming + JVM foundation + design pattern + SQL foundation and optimization + HTTP/TCP protocol + algorithm and data structure + learning ability + source code + Redis + understanding a message product
- 1-3 years of development experience (qualified programmers): JVM basic tuning + common framework source code + MySQL optimization + cache + familiar with message middleware (at least one) + familiar with microservices (at least one) + Internet project experience + Netty + distribution Technology
- 4-5 years of development experience (improving the breadth and depth of technology): performance tuning + distributed technology + microservices + technology selection + distributed scenario problems + Internet project experience + project management + team management
What is the specific content of these three stages? See below for an announcement. Of course, the article is limited and cannot be described in full. There is a complete pdf version for free sharing
0-1 years: lay a solid foundation
1. Java basics (Java exception classification and processing + Java reflection + Java annotations + Java internal classes + Java generics + Java serialization + Java replication)
2. Concurrent programming (thread pool + life cycle + lock + blocking queue + CAS, etc.)
3. JVM basics (thread + JVM memory area + JVM runtime memory + garbage collection and algorithm + GC + IO/NIO + class loading)
4. Design patterns (24 design patterns)
5. SQL foundation and optimization
6.HTTP/TCP protocol
7. Algorithm and data structure
- Java algorithm (binary search + sorting algorithm + backtracking algorithm, etc.)
- Consistency algorithm (Paxos+Zab+Raft+NWR+Gossip+Consistency Hash)
- Data structure (stack + queue + linked list + hash table + sorted binary tree + red-black tree + B tree + bitmap)
8.Redis
1-3 years: qualified programmer
1. JVM basic tuning
2. Common framework source code (Spring+SpringMVC+Mybatis)
3. Message middleware (MQ+Kafka)
4. Microservices
5.Netty
4-5 years: Improve the breadth and depth of technology
1. Performance tuning
2. Microservices
3. Distributed scenarios
4. Project actual combat
- High imitation Xiaomi Mall project
- Alibaba order management system project
- API monitoring system
to sum up
For programmers, technical learning is "defensive". We are learning for the future and applying in new projects, so we want to have our own core competitiveness and occupy a certain position in the future market. Persist in learning and constantly improving yourself is the key to avoiding the anxiety of thirty years old.
This popular "Java Assault Book" within Alibaba is shared with everyone for free, hoping that through self-learning, the depth and breadth of technology can be improved to a different level.