Stayed up late for a week! Summarized this set of Java learning methods and routes for benchmarking Ali P8, and it will be released within 3 days!

Preface

Recently, fans have always sent me private messages saying that it is becoming more and more difficult for me to learn java. Among them, fresh graduates who have just graduated said that they could not find a satisfactory job with their technology, and some who had studied at school said that they could not find a way to learn. More often, the working java developers say that the current technology is updated too fast, and it is difficult for them to keep up with the needs of major manufacturers. In response to the situation that fans told me, I have compiled this set of learning routes for the full stack of java for everyone, easy to understand, simple and easy to learn! Full of dry goods are placed below!

Getting started with Java

What to learn?

It has been more than 20 years since the birth of the Java language. Judging from the Tiobe rankings, the Java language has been dominating the list for a long time, so don't be afraid that it will suddenly become unpopular after learning Java. At least in the past few years, there are many Java job opportunities.

If you have a foundation in other languages, such as having previously learned C, C++, etc., then learning Java should be very easy and easy to use. If you don't have a language foundation, and don't want to understand too low-level things, then learning Java is still good. As for python, from the language level, python is indeed very simple. It is estimated that you can learn it within a week and write the code well, but Java is different. You can only understand the grammar in a week. It is almost impossible to write good code. may. In addition, the Go language is gaining momentum, so everyone can pay attention.

Generally speaking, you need to master the following knowledge points to get started with Java:

  • Process-oriented vs. object-oriented
  • Basic object-oriented characteristics: encapsulation, inheritance, polymorphism
  • Access control characters: private, default, protected, public
  • Data types: basic types, reference types
  • Control flow: for, while, switch, etc.
  • Serialization
  • Exception handling (a bit difficult)
  • Generic (a bit difficult)

How to learn?

If you are a zero-based, I suggest you to find some Java introductory videos to watch. There are many online videos, so please pay attention to the discrimination. Recommend a better platform: Station B is
not for you to watch the second dimension, there are many learning resources in it. (Hey ha)

Knocking on the blackboard: Don't be greedy for videos, because no big cow can see it by watching the video. Watching the video means that others will pour knowledge into your head. The biggest advantage is that it allows you to get started quickly. If you want to learn more, what you need is self-learning, self-learning with thinking.

Computer Basics

Classmates who are from a major class should be familiar with the two courses of "Computer Network" and "Operating System". As for how much they have mastered, you know that they all learn in surprise one or two weeks before the exam, haha.

Nowadays, big companies have higher and higher requirements for fresh graduates, and the two courses of computing and operating systems are compulsory. Those who have taken the SSSP Offer have a solid computer foundation.

What to learn?

There are many protocols for computing networks. Many students are confused after learning, or only understand a little HTTP, but there are many things to master:

  • OSI seven-layer model, TCP/IP five-layer model
  • Common network protocols: HTTP, TCP/IP, UDP
  • Network security: asymmetric encryption, digital signature, digital certificate
  • Network attacks: DDOS, XSS, CSRF cross-domain attacks

How to learn?

There is a very classic interview question in the computer network interview: talk about the process from the URL input to the final page display. This question can cover most of the knowledge points of the computing network, from DNS resolution to HTTP, TCP/IP protocol, physical layer protocol, to browser rendering of the page, you can talk as deeply as you have technical knowledge. I hope you can try to answer this question after you finish your studies.

Data structure and algorithm

What to learn?

Some students may have to ask: Is it necessary for me to learn algorithms for Java? The answer is: no choice!

The domestic Internet interview process is gradually moving closer to foreign countries. For big companies like Bytedance and BAT, shredding algorithmic questions has become a must.

Indeed, compared to C and C++, Java has a rich class library and three-party framework. After entering work, most people are writing business code, commonly known as API boy or Crud boy. The algorithm does not seem to be that important, but the algorithm is really It is a low-cost method for companies to interview and screen people. If you write the algorithm and pass it, either you are smart or you are diligent.

So no matter what language you are learning: C, C++, python, Java, GO, you must pass the algorithm level. I have listed the core knowledge points of data structure and algorithm interviews. You can refer to them and break them one by one.

  • Stack and queue: first in first out, last in first out
  • Linear linked list
  • Search: sequential search, binary search
  • Sorting: exchange type, insertion type, selection type
  • Tree, Binary Tree, Graph: Depth First (DFS), Breadth First (BFS)
  • Recursion
  • Divide and conquer
  • Sliding window
  • Three awesome algorithms: backtracking, greedy, and dynamic programming (DP)

How to learn?

The best or the most dumb way is to brush the questions. Likou is strongly recommended. It is
recommended to brush more than 300 questions, covering simple, medium and difficult questions. Before the interview, you should train your hand feel. Don't be unfamiliar. You can choose to keep one question every day or several days.

Design Patterns

What to learn?

There are too many martial arts in Jin Yong’s novels. The most comprehensive one is the Nine-Yin Scripture. The Nine-Yin Scripture is divided into two volumes. The first volume is the foundation of internal power and the second volume is the martial arts moves. The prestigious martial arts cheats.

Then think about what is the secret of martial arts? In fact, opening and opening are some fixed moves. Keeping these moves in mind and using them well is a great master.

Back to programming, in addition to writing clean code (clean code), we must also use various design patterns to make the code more readable, extensible, and loosely coupled. This is what everyone often says about coding.

So whether it is learning martial arts or learning coding, there are some fixed moves, that is, design patterns.

When it comes to design patterns, many students may jump out: I know this is the singleton model, the factory model...

Barabara said a lot, but when he really wrote the code, he was confused: Why don’t I write code using design patterns? The reason is that your code experience is not enough.

Think about how the design pattern came about? In the last century, four big men formed a group called GoF and published a book. This book included 23 design patterns, which gradually became well-known. These four people have summarized a set of methodology (code writing routines) from a lot of code practice. As a student in school or a newcomer at work, we may even write less code. How can we easily and quickly master it? Multiple design patterns.

So you have finished learning design patterns, but you have not yet applied them to daily code practice. This is normal, because the code experience is not enough.

Do you still learn? Of course you have to learn, because you may ask during the interview. We still have to lay a good foundation for the theoretical knowledge of design patterns, and we need to master these knowledge points:

The six principles of design patterns: Single responsibility, Richter substitution, Dependency inversion, Interface isolation, Dimit's rule, Open and close principle
UML basics
Three categories of design patterns: creation, structure, and behavior.
Basic principles of common design patterns
There are a total of 23 classic design patterns (now far more than 23, and there are some variants). It is too difficult to master all of them. We only need to master some commonly used ones. I have marked the ones that must be mastered with the little red flag. Up.

How to learn?

There are a lot of learning materials about design patterns on the Internet, and the quality is also uneven. When you look for it, you should keep your eyes open.

Before reading the book, I still recommend that you familiarize yourself with the theoretical knowledge of UML, because if you do not understand UML, you may not be able to read any design pattern book. UML is the premise of design patterns.

Advanced Java master

What to learn?

Congratulations on finally getting started with Java. The difference between Daniel and rookie is that rookie will always stop at the entry level, and Daniel has found a new world, and you are not far from the master after climbing these mountains.

Java masters need to master a lot of things to advance, here are some core knowledge points that must be mastered. This is a high-frequency test site for Java interviews, and it is also part of the legendary Java eight-legged essay.

  • Java collection class source code
  • Thread Pool
  • Java agent
  • IO model
  • JVM
  • Java concurrent programming (JUC)

How to learn?

Java has already started, and you want to advance. I suggest you stop looking for videos and think while reading the book.

Basic Framework (SSM)

What to learn?

Learning the Java language features may be boring, and then you can learn the basic framework to do some projects, such as the very popular Spring framework in the Java field, which is tailored for the Java backend and is very easy to use.

Before spring became popular, there was a popular framework like Struts, but it was defeated by Spring for various reasons.

You should often see the abbreviation of SSM on the Internet, which is actually the abbreviation of Spring+SpringMVC+MyBatis.

You need to master the following:

  • Spring family bucket (Spring, Spring MVC, Spring Boot) use
  • ORM framework (MyBatis, Hibernate) use
  • Spring principle
  • ORM framework principle

How to learn?

The best way to learn the SSM framework is to complete a simple project by hand. It is recommended to follow the video and type out the code. Once you are familiar with the project development process, you can also bring yourself a sense of accomplishment.

Knocking on the blackboard: A sense of accomplishment in stages is very important. Without this, it is easy to give up learning, so you might set a small goal for yourself from time to time.

There are many novices who are very entangled in the interface when working on projects. As a Java back-end programmer, you are not full-stack development. What do you do with this? My suggestion: either don’t just write the interface, or write some html by yourself, no It needs to be beautiful and functional.

What do I need to do after completing the project following the video? The answer is: an in-depth understanding of framework principles. Knowing the framework does not mean that you understand the framework. As a pursuing programmer, understanding the principle is always a required course. Who makes this business too complicated? You are the best without you.

Microservice framework

What to learn?

In recent years, the microservice architecture has become very popular. The reason is that the traditional monolithic architecture and service-oriented architecture are gradually unable to meet the rapid iteration of the Internet. Microservices can more easily provide continuous inheritance and continuous deployment capabilities, allowing products to be delivered to the market more quickly.

The service-oriented architecture was actually proposed five or six years ago. After a period of low ebb during this period, some useful frameworks gradually emerged after the bubble dissipated. SpringCloud is the representative abroad, and Dubbo is the domestic representative.

SpringCloud and Dubbo are different, but many basic principles are similar. You need to master the essence of technology when you learn.

Here are some core knowledge points:

  • Dubbo frame
  • SpringCloud framework
  • Service registration and discovery
  • Distributed service link tracking
  • Service isolation, fusing, degradation
  • Service gateway

Common middleware

What to learn?

End users do not directly use middleware. In other words, middleware is not a mass consumer software product. But middleware is indispensable in large companies. It is some basic components and services that support the architecture of large websites, so it is very, very necessary to learn.

Encyclopedia

Middleware usually refers to a large-scale distributed system that is responsible for the management and exchange of data between various components/services.

There are many excellent open source middleware in the industry, and some are usually introduced into the system according to the needs of the business. Here are some common ones, all of which are mandatory and not optional.

  • Caching: Redis, Memcached (Redis recommended)
  • Message queue: Kafka, RocketMQ, RabbitMQ, ActiveMQ, ZeroMQ (Kafka is recommended)
  • Database middleware: ShardingSpere, Mycat

database

What to learn?

The database is very important, and the interview is also a must. There are many points that can be tested, and the test can be very shallow: ask about the use of SQL, or you can take a deep test: ask about the implementation principle of indexes and locks. Some common knowledge points are listed below.

  • Basic theory of database: paradigm, index principle, database engine
  • SQL basic syntax
  • SQL tuning, explain execution plan
  • Database transaction (ACID)
  • Database locks: optimistic locks, pessimistic locks, table locks, row locks, etc.

How to learn?

It is recommended that students with a zero foundation in the database should first learn the basic theory of the database, because I have seen that many people learn SQL as soon as they come up, and they will only use it in the end. When it comes to SQL tuning later, they are very confused. If you just want to use the database, you can skip this part.

On the principle part, there is a very classic textbook "Database System Concepts" for learning. Classic books are generally harder and thicker. I suggest you look at the catalog first and pick the key points. Those who have studied this book in university can skip it.

After you have some theories, you can start to learn SQL grammar. Here is a recommended "MySQL Must Know and Know", while reading the book and typing on the computer.

Of course, you will definitely ask about the more difficult things in the interview. You need to understand the principle of indexing, transaction ACID, lock, and ask the database for these things.

Distributed architecture

What to learn?

The distributed part is a bonus item for the interview. After you answer it, the interviewer will feel that you have a deep technical background. If you don't answer well, you can survive as long as you have a good foundation. Therefore, as a technical person with pursuit, don't miss the opportunity to add points.

There are a lot of distributed related content. Here are a few knowledge points that are often encountered in projects or interviews:

  • Distributed transaction: two-phase commit (2PC), compensation transaction (TCC)
  • Distributed lock: based on relational database (MySQL), based on Redis, based on Zookeeper
  • Distributed ID: Snowflake, Meituan Leaf

How to learn?

This part of the content is very difficult to learn well, and it is lightly introduced in many books without in-depth explanation of the principle, so the book is not recommended.

How do you learn it? You can search for high-quality blogs on the Internet for each knowledge point, and I will gradually explain these knowledge points in more articles later, so stay tuned, welcome to remind you.

to sum up

Finally, in order to facilitate everyone to learn, I have prepared ava core knowledge points for everyone + a full set of architect learning materials and videos + first-line big factory interview collection + interview resume template + Alibaba Meituan Netease Tencent Xiaomi iqiyi fast hand Bilibili interview questions + Spring source code collection + Java architecture actual combat e-book to share with everyone for free!
Friends in need can click here to remark csdn and download by themselves !

Thank you for seeing here. Please correct me if there are any shortcomings in the article. If you think the article is helpful to you, remember to give me a thumbs up. You will share java-related technical articles or industry information every day. Welcome everyone to follow and forward the article!

Guess you like

Origin blog.csdn.net/jiagouwgm/article/details/112174571