preface

Recently always have the fans direct messages I said feel learning Java more difficult, there are just out of this final-year students say their technology could not find a satisfactory job, there are also great at school learning to speak can’t find the way to learn, is more of a working Java developers say technical update too fast, now it hard to keep up with the demand of the giant job-hopping is so hard! For the fans told me that I sorted out the Java stack for everyone this set of learning route, simple, easy to learn! It’s full of dry stuff down there!

Introduction to Java

Learn what?

Java language from the birth to now has been more than 20 years, from the Tiobe ranking, Java language perennial top for a long time, so don’t be afraid to learn Java after suddenly not popular, at least in these years Java job opportunities are very many.

If you have a background in other languages, such as C, C++, etc., learning Java should be very easy and easy to get started. If you don’t have a language foundation and don’t want to get too low-level, Java is a good place to learn. As for Python, from a language level, python is really simple, and you can probably learn it in a week and write good code, whereas Java, where you can only learn the syntax in a week, is almost impossible to write good code. In addition, Go language momentum is very strong, we can also pay attention to.

Generally speaking, you need to master the following knowledge:

  • Process oriented VS Object oriented
  • Object – oriented basic features: encapsulation, inheritance, polymorphism
  • Access control characters: private, default, protected, public
  • Data type: basic type, reference type
  • Control flow: for, while, switch, etc
  • serialization
  • Exception handling (somewhat difficult)
  • Generics (difficult)

How to learn?

If you are zero basis, suggest you can find some Java entry video look, online video mixed, we pay attention to screening. Recommend a better platform: B station is not to let you see two yuan, there are a lot of learning resources. (hey)

Knock on the blackboard: don’t take on too much video, because no one can tell by watching video. Watching videos is someone else pouring information into your head. The biggest benefit is that it gets you started quickly. If you want to learn more, what you need is self-learning, self-learning with thinking.

Computer Fundamentals

The classmate of division class previous experience is right “computer network” and “operating system” these two courses should not be strange, as to mastered how much, you know, it is in take an examination of before one or two weeks burst study, ha ha.

Now big companies are demanding more and more college graduates, and the courses of computer network and operating system are required. Those who got the SSSP Offer have a very solid computer foundation.

Learn what?

There are a lot of protocols for computing networks, many students are confused after learning, or just know a little HTTP, but there are a lot of things to master:

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

How to learn?

There is a very classic interview question: tell me how you went from URL input to final page presentation. This topic can cover most of the network knowledge, from DNS resolution to HTTP, TCP/IP protocol, physical layer protocol, all the way to the browser rendering page, you can talk about as deep as your technical background. I hope you can try to answer this question as well.

Data structures and algorithms

Learn what?

Some of you may ask: Do I need to learn algorithms to learn Java? The answer is: no choice!

The process of Internet interview in China is gradually drawing closer to that of foreign countries. For example, bytedance, BAT and other big companies, the manual tearing algorithm has become a mandatory action.

It is true that Java has rich class libraries and tripartite frameworks compared with C and C++. After entering work, most people are writing business code, commonly known as API boy or Crud boy. Algorithm seems not so important, but it is really a low-cost way for companies to interview and select candidates. If you write the algorithm and you pass it, either you’re smart or you’re diligent.

So no matter what language you’re learning: C, C++, Python, Java, GO, algorithms are a must. I have listed the core knowledge points of data structure and algorithm interview, you can refer to learn, one by one to break down.

  • Stack and queue: first in first out, last in first out
  • Linear list
  • Search: sequential search, binary search
  • Sort: swap classes, insert classes, select classes
  • Tree, binary tree, graph: Depth first (DFS), breadth first (BFS)
  • recursive
  • Divide and conquer
  • Sliding window
  • Three great algorithms: Backtracking, Greedy, dynamic Programming (DP)

How to learn?

The best or the most stupid way is to brush the questions, strongly recommended buckle suggested brush more than 300 questions, to cover simple, medium, difficult questions. Before the interview to train hand feeling, not unfamiliar, can choose to keep a few days or a few days.

Design patterns

Learn what?

There are too many excellent martial arts in Jin Yong’s novels, the most comprehensive of which is the Jiuyang Sutra, which is divided into two volumes, the first volume is the basis of internal skills, and the second volume is martial arts techniques, which are very famous secret books of martial arts.

What is the secret book of martial arts? In fact, open to open is some fixed moves, remember these moves and good use is the top master.

Back to programming, in addition to writing clean code, we also need to use various design patterns to make code readable, extensible, and loosely coupled, which is often referred to as the cow of 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, singleton pattern, factory pattern…

Blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah. The reason is that you don’t have enough code experience.

Think about where design patterns come from. In the last century, four big men formed a group called GoF and published a book, a collection of 23 design patterns, which gradually came to be known. These four people summarized a set of methodologies (code writing routines) from a lot of code practices, and we, as students in school or new employees, may not even write code, how could we easily and quickly master so many design patterns.

So it’s not unusual for you to learn design patterns, but not to be able to apply them to everyday code practice because you don’t have enough code experience.

Do you want to learn? Of course you should, because you may be asked in the interview. We still need to lay a good foundation for the theoretical knowledge of design pattern. We need to master these knowledge points:

Six principles of design patterns: single responsibility, Richter substitution, dependency inversion, interface isolation, Demeter’s Rule, open and close Principle There are 23 classic design patterns (now there are more than 23, and some variations). It’s too difficult to master all of them. We just need to master some common ones.

How to learn?

There is a great deal of learning about design patterns online, and the quality is very uneven, so keep your eyes peeled when looking for them.

I recommend familiarizing yourself with the theory of UML before reading, because you will not be able to read any design pattern book without knowing UML, which is the premise of design patterns.

Java master advanced

Learn what?

Congratulations you finally Java entry, the difference between Daniel and rookie is that the rookie will never stop at the entry level, and Daniel has found a new continent, over these several mountains you are not far from the master.

Java master advanced need to master many things, here enumerates some core knowledge points, must master all. This is the Java interview high frequency examination point, is also a part of the legendary Java eight-part essay, face into the next side, face is not good to go home and other news.

  • Java collection class source
  • The thread pool
  • Java proxy
  • IO model
  • JVM
  • Java Concurrent Programming (JUC)

How to learn?

Java has been introduced, you want to advance, suggest you do not look for video to watch, while reading while thinking.

Basic Framework (SSM)

Learn what?

Learning Java language features can be tedious, but then you can learn the basic framework and start some projects, such as the Popular Spring framework in the Java space, which is customized for the Java backend and is very useful.

Before Spring came along, there was a popular framework like Struts, which was defeated by Spring for a variety of reasons.

We should often see SSM abbreviation on the Internet, in fact, is Spring+SpringMVC+MyBatis abbreviation.

Here’s what you need to know:

  • Spring family bucket (Spring, Spring MVC, Spring Boot) use
  • ORM framework (MyBatis, Hibernate)
  • Principle of the Spring
  • ORM framework principles

How to learn?

The best way to learn SSM framework is to complete a simple project by hand. It is suggested to follow the video and type out the code, so as to familiarize yourself with the development process of the project, you can also bring yourself a sense of achievement.

Knock on the blackboard: stage sense of achievement is very important, without this it is easy to give up learning, so or regularly set a small goal for yourself, add chicken legs what.

As a Java backend programmer, you are not a full-stack developer, so why bother with this? My advice is: either don’t write interface only, or write some HTML yourself, don’t need to be beautiful, just implement the function.

What do you need to do after you finish the project? The answer is: a deep understanding of framework principles. Knowing how to use a framework doesn’t mean you know how to use a framework. As a programmer with pursuit, understanding principle is always a required course. Who let this line be too volume?

Microservices Framework

Learn what?

Microservice architecture has become very popular in recent years, because the traditional single architecture and service-oriented architecture gradually cannot meet the needs of the Rapid iteration of the Internet. Microservices can make it easier to provide continuous inheritance and continuous deployment capabilities for faster product delivery to market.

Service-oriented architecture was actually proposed five or six years ago. After a period of low ebb, some good frameworks emerged after the bubble deflated, represented by SpringCloud abroad and Dubbo in China.

SpringCloud is different from Dubbo, but many of the fundamentals are similar, and you need to understand the nature of the technology as you learn.

Here are some key points:

  • Dubbo framework
  • SpringCloud framework
  • Service registration and discovery
  • Distributed service link tracing
  • Service isolation, fuses, downgrades
  • The service gateway

Common middleware

Learn what?

End users do not use middleware directly, in other words, middleware is not a mass consumer software product. But in large companies middleware is essential, it’s the basic components and services that underlie the architecture of large websites, so it’s very, very important to learn.

Small encyclopedia

Middleware is typically used to manage and interact data between different components/services in a large distributed system.

There are many excellent open source middleware in the industry, which are usually introduced into the system according to the needs of the business. The following lists some common ones, which are required to learn and not optional.

  • Cache: Redis, Memcached (Redis recommended)
  • Message queues: Kafka, RocketMQ, RabbitMQ, ActiveMQ, ZeroMQ (Kafka recommended)
  • Database middleware: ShardingSpere, Mycat

The database

Learn what?

Database is very important, the interview is also required to test, can test the point is very much, can test very shallow: ask about SQL use, can also test very deep: ask index and lock implementation principle. Here are some common tips.

  • Basic theory of database: paradigm, indexing principle, database engine
  • SQL Basic Syntax
  • SQL tuning, explain execution plan
  • Database transactions (ACID)
  • Database locks: optimistic locks, pessimistic locks, table locks, row locks, etc

How to learn?

I suggest that zero-based database students should first learn the basic theory of the database, because I see a lot of people are learning SQL at the beginning, and finally only use it, to the back of SQL tuning is very confused. If you just want to use the database, you can skip this part too.

There is a very classic teaching material about principle part “concept of database system” in order to offer study, classic books are more difficult to chew pit commonly thicker also, suggest everybody sees catalogue first, pick key to see. Those of you who studied it in college can skip it.

Once you have some theory, you can start to learn the SYNTAX of SQL. Here is a recommended book called “MySQL Must Know must Know”.

Of course, you need to understand the principle of index, transaction ACID, lock, ask database these things must test oh!

Distributed architecture

Learn what?

Distributed this part is the interview plus, a good answer to the interviewer will feel that you have a deep technical foundation, not good answer, as long as you have a good foundation can also pass. So, as a pursuit of technical people, do not let go of the opportunity to add points.

There are a lot of topics related to distribution. Here are a few things that you will often encounter in a project or interview:

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

How to learn?

This part of the content is very difficult to learn, in many books are lightly covered, there is no in-depth explanation of the principle, so I will not recommend books.

So how do you learn? You can search for quality blogs online for each knowledge point, and I will gradually explain these knowledge points later, please look forward to it, welcome to urge more yo.

conclusion

Finally, in order to facilitate your learning, I prepared AVA core knowledge points + a full set of learning materials and videos for architects + First-line factory interview treasure book + interview resume template + Alimeituannetease Tencent Xiaomi IQiyi Quick hand Bilibili interview questions +Spring source code collection +Java architecture practical e-book to share with you for free!

Friends in need of attention to the public number: the future has light, receive!

Thank you for reading here, the article has any shortcomings please correct, feel the article is helpful to you remember to give me a thumbs up, every day will share Java related technical articles or industry information, welcome to pay attention to and forward the article!