Java Interview Guide: Under the saturated environment of ordinary development jobs in the market, how to climb the BAT mountain and become the pinnacle with an annual income of 50W+?

My school is a double non-one school in Jingzhou. When I first went to college, I was really like a naive one. Throughout my freshman year, I didn't study programming seriously. I just went out to play and participate in various club activities every day.

At the end of the sophomore semester, I finally determined that my future technical direction was to go to the Java backend. So, I started to make a learning plan and started my own road to upgrade the Java back-end field.

By the third year, I basically gave all the necessary technologies in the Java back-end field, and I did two practical projects with what I learned. The whole process took me a summer vacation + half a semester, and my daily study intensity was basically more than 10 hours.

I shared my experience in learning Java, and I wrote it off and on for almost half a month, and finally finished the 2021 latest version of the Java back-end learning route! Hope it helps you!

This answer may be the most careful and comprehensive Java back-end learning route you have ever seen.

In order to complete this learning route, I have spent many nights lately, because there are too many trivial things, it is difficult to have a relatively complete time dedicated to doing this.

Actually, this is not to make everyone sympathize with me. On the contrary, I think I am happy when I stay up late to learn the route, because this is what I like to do.


**From the perspective of general software engineers, what is the core competence or core literacy? **This is the key to answering the question "what kind of engineers do big factories need, and what kind of engineers do we need to be".

Below I will only talk about a few crude opinions of my own, please forgive me for the shortcomings, and welcome to correct me.

I will talk a little bit about the subject of "Interview Guide".

"Interview is about understanding each other." In my few interview experiences, what I want to know about candidates is the three aspects mentioned above: logic and methodology, experience and accumulation, and teamwork. During the interview process, what candidates know and to what extent they have mastered it is their experience and accumulation; how to deal with unknown problems is examined by logic and methodology; teamwork is examined by how the candidates interact during the interview.

GitHub and blogs are really just stepping stones. Whether they can pass the interview depends on their internal skills;

A candidate asked me to recommend himself. After seeing his GitHub homepage and blog, I was really surprised. But during the interview, he was slow in thinking and unclear. It was a pity that he was asked to introduce the core open source framework involved in open source projects and blogs, but he didn't even know the basic process.

In addition, the results of the recruitment also have a lot to do with the strong demand of the recruiters and applicants. The WeChat team’s demand for recruiting is not so strong, and very good people may not be able to pass the interview. Today’s Toutiao’s demand for recruiting is very strong. People who are not very good may also pass the interview. Candidates who are desperate to find a job will basically not pick a company. Why should candidates who are materially free go to your company, right?

What kind of Java development does the big factory need?

The big names in Java development, those senior and senior engineers who are engaged in Java development in BAT, Huawei, NetEase and other large factories, have generally been the company’s management, at least the team leader, and the monthly salary easily reached 20-30k. He also got a lost stock from a big factory, plus the realization of stocks and welfare, the annual total income is normally 50W+ after tax.

This kind of work, income and living conditions must be the dream of many Java developers. But on the other hand, saturation of ordinary development jobs in the Java market is also an objective reality. How can we reach the other side of our dreams?

Clearly set yourself a job goal

Accumulate enough technology while honing architectural capabilities

Master Java knowledge points (use a mind map to see more clearly)

Insert picture description here

The method is wrong and the effort was wasted! ! !

The method is wrong and the effort was wasted! ! !

The method is wrong and the effort was wasted! ! !

The learning method, even if it differs from person to person, will not differ too much. In addition to studying and reading related technical books in product development, paying attention to and submitting open source projects, reading source code and official documents are also good means of technology accumulation.

Communication with colleagues in the industry is also indispensable. For example, writing blogs in technical forums, participating in technical exchange meetings, sharing and discussing, can invisibly make people sort out and summarize their existing knowledge, thus forming a system Knowledge base.

The advanced path of Java development is a result of gradual accumulation. A developer through continuous learning and improvement, when the technical ability and project experience are improved to a certain level, and have their own knowledge system, they have reached the state of Java immortal.

The following system learning resources to share are based on detailed explanations of common Java interview questions of major Internet companies, and introduce you to the necessary knowledge points from the perspective of the interview, as well as the practical application of the knowledge points in the project.

Help you reorganize and establish a knowledge system for Java development on the basis of the present. Whether you want to improve Java's internal strength in the short term, break through the bottleneck of your own work capabilities, or prepare to participate in a Java interview, you will have some gains in this information.

One more thing, for beginners in programming, I don't recommend to come up and learn through projects. Practice is really important. If you don't have a programming foundation, you can get started directly, and it's easy to learn the four differences in the end.

It is recommended that you watch as many high-quality videos as possible in the early stages of learning programming. Follow the video step by step, which can save you a lot of pitfalls and increase your confidence in learning programming.

Recommend two video learning websites


Unexpectedly, the barrage chase fan/original video station has also been recommended! I have to say that there are still a lot of learning resources on Bilibili, and many young people are learning on it now! Hahaha Xiaopozhan, the favorite of most young people, has been praised by CCTV. Known as the primary position for young people to learn, Cheers Bilibili!

However, the higher video on Bilibili is the best video or the video that suits you best, and you should also filter it.

Insert picture description here


The first recommended learning website should be MOOC. When I was starting to learn, this website was very helpful to me. There are many free courses and many paid courses. If you have no special needs, generally free courses are enough to learn by yourself.

Recommend some text type learning websites/blogs


The most awesome programmer exchange website! ! ! none of them. Be sure to visit more! There are a lot of good things on it, for example, I searched for Java


Novice Tutorial

Very good website for beginners, most of the tutorials are aimed at the entry level. The advantage is that the content of the website is relatively complete and the quality of the content is guaranteed.



Stack Overflow is a question-and-answer website in the field of programming. The website allows registered users to ask or answer questions. Much like Zhihu, the major difference is that Stack Overflow can score questions.


Some good technical exchange community recommendations

  1. Nuggets :
  2. segmentfault :
  3. Blog Park :
  4. Knowing :
  5. CSDN:

Skill reserve

Needless to say, I believe that everyone has a consensus: no matter what the industry, the most powerful person is definitely the person at the end of the pyramid. Therefore, if you want to be a powerful programmer, you must make yourself stand taller. Becoming a technical expert is not a matter of overnight. It takes time and accumulation of technology.

The following are detailed learning routes and resources:

Insert picture description here

These contents are free to share with everyone, friends who need the full version, click here to see how to get it

The general contents of the Java growth notes are as follows:

0-1 years entry:

  • Java basic review (object-oriented + Java super class + Java reflection mechanism + exception handling + collections + generics + basic IO operations + multithreading + network programming + JDK new features)
  • Preliminary Exploration of Web Programming (Servlet+MySQL Database+Commodity Management System Actual Combat)
  • SSM from entry to master (Spring+SpringMVC+Mybatis+ commodity management system combat-SSM version)
  • SpringBoot quick start (SpringBoot + SpringBoot-based commodity management system actual combat)
  • Zero-distance Internet project combat (Linux + Redis + double eleven spike combat system)

"Java Core Knowledge Collection (283 pages)"

Content covers: Java basics, JVM, high concurrency, multithreading, distributed, design patterns, Spring family bucket, Java, MyBatis, ZooKeeper, Dubbo, Elasticsearch, Memcached, MongoDB, Redis, MySQL, RabbitMQ, Kafka, Linux, Netty, Tomcat, database, cloud computing, etc.

Insert picture description here

1-3 years senior engineer:

  • Advanced concurrent programming (concurrent tool combat + CAS + display lock analysis + thread pool internal mechanism + performance optimization)
  • JVM in-depth analysis (understanding the runtime data area + interpretation of off-heap memory + JDK + memory leak troubleshooting + Arthas + GC algorithm and garbage collector + class loading mechanism, etc.)
  • MySQL Advanced
  • Deep into the bottom of Tomcat (threading model + performance tuning)

"Java Concurrent Programming" page 385

Insert picture description here

"MySQL Performance Tuning and Architecture Design Analysis Document" page 305

Insert picture description here

3-5 years senior:

Database (tuning + transaction + lock + cluster + master-slave + cache, etc.)

Linux (command + production environment + log, etc.)

Middleware & distributed (dubbo+MQ/kafka, ElasticSearch, SpringCloud and other components)

"Java Intermediate and Advanced Core Knowledge Collection (524 pages)"

Insert picture description here

"Docker from entry to practice"

Insert picture description here

5-7 years structure:

Open source framework (Spring5 source code + SpringMVC source code + Mybatis source code)

Distributed architecture (Zk actual combat+RabbitMQ+RocketMQ+Kafka)

Efficient storage (Redis+mongoDB+MySQL high availability+Mycat+Sharing-Sphere)

Microservice architecture (RPC+SpringBoot+SpringCloud Netflix+SpringCloud Alibaba+docker+k8s)

"Java advanced architecture knowledge points"

Insert picture description here

"spring could study notes"

Insert picture description here

Delivering food for more than 10 years: Just a joke...

"Nginx Introduction to Actual Combat" page 319

Insert picture description here

"1000 Internet Java Engineer Interview Questions (485 pages)" The

Insert picture description here

above content is free to share with everyone, friends who need the full version, click on the picture or scan the QR code to enter the group to find the administrator. Get it for free! Click one key to increase the pass rate

Therefore, in the end, I hope that we, who are also dedicated to the code, will live up to our original intentions, fear difficulties, and embrace development!