What is the minimum level of self-study Java to get a job?

Preface

Let me show you what a junior programmer needs to learn at advanced level. You should have a clear understanding.

As you all know, I am definitely not a technical expert myself.

I am not, but many people around me are big names such as Bytedance, PDD, Ali, etc. I know a lot, so the following is a summary of their growth path I asked them, which is still representative.

These friends around me are all big cows in the Internet field for many years. Because of life and personal habits, many of them have no habit of blogging, or have not published it publicly, but they met me, I can help them sort it out.

The purpose is to allow many newcomers like me to have a clear understanding of a complete career planning road. What do you need to experience when you become a bronze king?

Bronze-the source of all evil

"Computer Basics", this is the first class that all readers will take in college. I asked the boys in the group, and they all said yes, and I think everyone is too.

In the basics of computer, we will learn the history of computers, the characteristics of computers, binary conversion, memory management, linear data structure, network request protocol and so on.

Computer basics are really important, extremely important, and extremely important. Why do I say that? The computer knowledge involved and a lot of knowledge of network protocols will definitely be used in the future. I can tell you that I can be responsible for the interview. You may ask, what Http, Https, Tcp/Ip, three handshake, four waved interviews, don’t ask too often.

Tip: There is an episode here. When the architect team leader next to me interviewed Ali's p8 position this week, I thought they were asking about the source code and the ultimate operation of the middleware. I think everyone is the same as I thought, but Everyone was wrong, but asked a lot about the basics of computers.

I chatted and asked about the content of the interview, what are the requirements for the mirroring of the binary tree, the understanding of the kernel mode and the user mode, the cache page of the computer, etc.

​ Are you surprised? Isn't he* the subject of my school recruitment? Why do P8-level bosses still ask this? In fact, it's easy to understand. Everyone thinks about the breadth and depth of the technology after a certain length of work. You have a certain degree of attainment. You can't optimize it if you write the code. The machine configuration is also the best, so what can be optimized?

​ At the bottom level, we all know that all languages ​​are turned into machine languages ​​in the end to run. In the end, they are all going to interact with the machine. Is the bottom level of the computer still the last thing to pay attention to?

Welfare: He will come to our company for an interview this week. At that time, I will ask about the specific content of the interview in detail. If you want to read it, I can sort it out and write it down to see what the world of the powerhouse of that level is like. .

After learning the basics of computers, you basically have a little knowledge of the entire knowledge system of computers. You may still be ignorant of programming, but you are now about to step into the door of programming.

Silver-first lesson in programming

After learning the basics of computer, we will have an introductory course of programming.

I must see that 99% of my friends in this article started their own program life with the following code:

I still remember that I was the C language I learned at the beginning of my freshman year. "C Language Programming" teacher Tan Haoqiang's textbook, on page 27 is the first chapter, HelloWord. Now that I remember it, it is still vivid. The teacher wrote this on the blackboard. Two solemn words, she and I at the same table showed infinite curiosity...

I think all languages ​​start with a basic grammar, and the basic grammar of a programming language is similar.

If, For, While and other keywords, List, Set, Map and other collections, Int, float, Double and other basic types, I don’t think you will know when you learn it for the first time. These keywords will accompany us through each. Procedural career, right?

The next step is a little bit more difficult, such as JDBC, IO, file streaming, etc. Shuai Bing vaguely remembers that at the time, it was still writing SQL in the code and then querying it.

After learning this, you may think that your JavaSE is invincible and you can find a job when you go out. Anyway, the handsome B at the time felt that he could break into the sky. He didn't know the height of the sky, and showed off his skills everywhere.

But naive I don’t know at all, what is waiting for me in the unknown, and I don’t know that I have just started, but if I want to develop in the direction of the WEB, these are basically enough.

But the things you have learned so far are server-side things, how do you show your server-side things to others?

At this time, we should make an ugly page and perform simple interactions. At this time, you have to learn HTML, Servlet, MySQL, JavaScript, Tomcat, CSS, etc.

The goal is to write the first dynamic website. It may only be a login function, which can only display personal information, but this is a very important step. What you have to figure out is where a user’s click comes from To initiate, where to receive, where to process, and where to return, you have to understand the relationship and division of labor between the browser and the server, Cookie and Session, Request and Response.

Tip: I remember that when I first came out for an interview, there were interview questions like this. What happened when an Http request was initiated from the webpage to the data returned by the server, or what did Spring do? Everyone can think about it

And it’s really important to have a project of my own. I did the project when I was in college, and it has been running stably online on campus. When I came out for the internship interview, I was basically overwhelmed by all obstacles. There is a project thief to add points, is it the reader's college student remembered? Insert picture description here
Gold-fledgling

The above is only the initial stage of learning for WEB development. These are the most primitive and official WEB development technologies since the birth of JAVA. Of course, these technologies are rarely used directly in real projects. Now the front and back ends are separated, Vue, The front-end language update iteration speed of Node.js, React, etc. is very fast. Shuai Bing, I learned a little bit and just feel comfortable using it. A friend on the front-end told me that it is iterating again... I *he* stopped learning!

In order to continuously improve the ease of use, development efficiency, maintainability, and scalability of technology, countless open source projects are encapsulated and improved on the basis of these original technologies.

So at this stage, don't run blindly and optimistically to find a job or pick up on internships. You will be hit, or find a small company that has been confused and felt out of touch with the new technology stack in the past few years.

Someone tells you that a small company learns a lot, and it hurts you. At the beginning, you can go to the big one. The bigger the better. You want to go to the big one and you want to go to the small one minute by minute, but you are small It's relatively difficult to get big ones.

Well, the initial stage is completed, and we begin to enter the topic of WEB development. First of all, the legendary framework. SSM (Spring Spring MVC Mybatis) is a must to become a skilled programmer of addition, deletion, modification and checking. At this stage, you have to understand why you want to use this three. Rather than those Jsp, Servlet, Jdbc, you have to appreciate the benefits of writing MVC, three-tier architecture.

Don't question the value of the framework easily at this stage. Maybe you will find it troublesome at the beginning and feel that they are sometimes unnecessary. When I first wrote this, I found that it was really disgusting. What dao, service, Controller, etc., divided into so many Well.

After waiting for a year or two, when you look back, you will find it hard to work without these frameworks. Without a clear hierarchical system, you will curse the project architect instead.

However, I want to remind everyone that the mentality to avoid at this stage is that if you can add, delete, modify, and check proficiently, you think that writing a program is nothing more than this, and then fill in the resume to be proficient. This is also the reason why novice interviews are well-approved. one.

It’s a taboo for novices. Why do you write this way? What are the advantages and disadvantages? Ask a few more reasons. You will thank the editor many years later.

If you learn well, you should be able to write blogs, small forums and other WEB projects proficiently, which means that you have met the basic requirements for employment.

Tip: As a freshman, in addition to basic knowledge, if you have your own technical blog, there are also decent projects that can be shown to the interviewer, which is really a bonus. Build a simple project and project process. You know, the technology stack is also familiar, and you can also visit the webpage on your mobile phone to give the interviewer a live demonstration, which is a bonus.

Like my friends Java3y and JavaGuide, I don’t have three hearts, etc. I have already started writing my own blog at this stage, and each of them has made achievements. These will be part of your bargaining power in interviews in the future. Your bonus points, and your own wealth.

I asked them. They have gotten interview invitations from many big companies because of their blogs. Anyway, there are projects, good resumes, and good blogs. They will give you extra points. If you have nothing, do it now. Go learn more and play two games less LOL. When you reach my age, you will find it dull. Insert picture description here
Platinum-small test knife

This will be a turning point in the programmer's career. If you grasp the life's take-off, if you don't grasp it, you will lose all!

Slowly you will find that the database performance is really not good. Out of unwillingness to the status quo, or to follow the trend, you should learn about NoSQL. Memcached, Redis, Mongodb and other non-relational databases are dazzling. It doesn't matter. Try to use it. It can alleviate MySQL. The pressure of relational databases such as Oracle.

For some of the company's business needs, you may delve into a specific technical field, such as full-text search technology ElasticSearch (hereinafter referred to as Es), then you understand Es, and you have to think about how to synchronize database data into Es?

You may come into contact with Logstash, Canal and other middleware, and then find that visualization is also a problem. Then Kibana came into being. When you use it, you find that Europeans have different word segmentation habits than ours. Then Ik Chinese word segmenter has to understand it again.

After using it, you will find out how to avoid many pitfalls in Lucene at the bottom of it. You can also learn about Solr with more time.

In short, knowledge is a system. I often tell the people in the group that a system of knowledge is formed. You have to understand the related technology stack of Es in the interview. My title is called "Hanging the Interviewer" is a gimmick, you Going to the interview If the interviewer's technical depth is really deep, I think 100% of you will be beaten.

You may even start to be interested in some of the more special existences in the system, such as permission systems, single sign-on, or the like, or algorithmic research in certain business areas. These are your bonus points.

You also found that there are many disadvantages in Http communication after the service is split, and you start to get in touch with the excellent Rpc framework and message queue middleware, such as Dubbo, RocketMQ, etc.

Later, you discovered that the amount of data was too large and the table could not hold up. It took several seconds to find out hundreds of millions of data. Then the sub-database and sub-table would come out. What is the horizontal split and vertical split? You also learned TDDL. , Sharding-JDBC, DRDS, etc.

But you use it to find that the global unique id generation is another problem. Maybe the middleware has its own, but you still have to understand the principle, what snowflake algorithm, uuid, etc. have to learn.

Later, you find that the sub-library and sub-tables can't stand it, and the business volume has exploded. You may need to understand the solution ideas and solutions of dynamic sub-libraries and sub-tables, especially some open source FaceBook Program.

After another, you find that dynamic sub-databases and sub-tables are not good. There are a lot of offline data. A few T a day, the company will be defeated, then you need to understand the offline analysis of big data scenarios. Ah, data caching, data cleaning, data visualization, etc.

Then you need to learn what ODPS, Hadoop, Hive, Hbase, etc. middleware or tools.

Then again and again later you start to find that your code is messy, and after a long time, you can't understand it, repetitive and hard-to-reuse code is piled up, you don't want to maintain it, and there are many bugs.

So you have to start to pay attention to design patterns, rationally transform your own code habits, and no longer be bound by the rigid SSH and MVC three-tier architecture.

Then again and again... (Are you not playing anymore? Haha, I won’t list them in fact)

Up to this point, I wonder if you have realized the meaning of the words at the beginning of each article? Just after work, you find that you are becoming more and more ignorant. You can try the following sentence again.

The more you know, the more you don’t know.
Insert picture description here
Google and various materials are the driving force for your progress. You rarely encounter problems that you must ask others to solve. If you still ask others at this stage, your technical career It's almost over.

At this stage, if your technical excellence is as good as mine, your income will be at the level of white-collar workers, at least close to it, or significantly ahead of your peers.

I think most programmers can reach this level after working for many years. Some people only need one or two years, while others need five or six years. Some people who fall behind at this stage are limited by talent and thinking. Some are out of lack of enthusiasm for technology, and some are out of constraints of work content.

When he was nearly middle-aged, he could no longer fight for young people and was eliminated, only to switch careers in desperation when he laughed at himself as a dick and a code farmer.

This is a very important watershed. Whether you can continue to make progress, whether you can continue to engage in technical work after the age of 30, and whether you can stand alone in the company, I think it depends on whether you can go beyond this stage.

Many project managers in bad companies who have worked for several years have not even reached this level...

For the 30-year-old self to hear that the layoffs are totally worthwhile, for the old mother in the family to no longer be reluctant to turn on the lights in order to save electricity, in order to let herself...

I think you should be prepared at this stage, which is why I introduce this stage in a large space.

Masonry-Set Sail

You have to read the source code of an excellent open source project, you have to understand some basic knowledge that you did not understand at the time, you start to understand the essence of "thinking in java", you can write some low-level code, and sometimes feel that you encapsulate more Some open source tools are easier to use and simpler.

"In-depth analysis of the JVM virtual machine" that you didn’t understand back then, now you can cherish the knowledge points inside, open your mouth, and can bring a lot of knowledge points into the project to optimize, and you can see substantial changes (hint KPI).

The difficulty and focus of WEB always lies in performance and load capacity. However, the development of the network has caused a great increase in data volume and operation density, but hardware has not made corresponding progress.

You have to try to make better use of more servers to work together. From the WEB end to the server end to the database, all need to be clustered, need to be distributed, need to control the flow of data reasonably, and master the website and a lot of machines. The balance of performance, find out the bottleneck of performance, find out the bottleneck of stability and security, hardware failure, third-party technology errors, will be considered as commonplace into your system and code.

You will begin to feel that the program is extremely important, and the army will continue to be fulfilled if it is incompetent. A bad design and a bad solution will greatly reduce the work results of a group of excellent programmers.

You have to pay attention to architecture knowledge and can no longer be satisfied with the SSH three-tier architecture.

A series of ideas such as domain-driven design, event-oriented development, agile development, etc. can determine the life and death of your project at a critical moment. At this stage, there are no standard examples for you to copy. You only know the ideas and principles, but you need to keep trying for practice. And improvement.

Pay more attention to various miscellaneous open source technologies, some of which you may have already contacted before, related to communications, related to integrated development environments, and related to architecture. You should be able to talk about several mainstream technologies in various fields. Although you may just have heard of it, understand.

But at the critical moment you have to know how to choose the technology and quickly master it.

You will also consider trying other languages. I’m not talking about switching to C++, C# or the like. It has nothing to do with Java programmers. I’m talking about some languages ​​that run on the JVM, such as scala and groovy. When they do, you think Java is really old.

But when you return to a comprehensive large-scale project, you will feel that the entire system technology accumulated by Java is so perfect, just like an industrial standard, you may find that you can use all the things of the Spring family for life and cannot be completely used. read through.

You can practice this stage well, and be competent for project managers, even technical directors of small and medium-sized companies, and leaders of small teams from large factories.

Master-the pinnacle

In fact, when I wrote about the above stage, I think that this is where many people are satisfied. They are all technical directors of small companies. So what am I going to do?

But the unknown life is still waiting for you. I asked the top god around me, why do you want to get out of your comfort zone? How about going to places with a lot of pressure like Byte and Ali?

The answers they gave are not the same, but the same is to challenge yourself, no one knows where you end up, so why not try more, new environment, new technology stack, new business scenarios challenge new The self.

Your every move at this stage may be related to the life or death of a project. A wrong or correct decision may change the fate of the entire project. Water can carry a boat and it can overturn it. I think it is just right to use it here.

There are few big guys of this level around me, but they are not without them. They are all core figures in the company. They lead the team to rush for large projects or critical moments. In addition to problems, they can also give solutions and solutions the fastest.

Tip: My current boss is such a person. When everyone was chasing data on Double Eleven, he came up with a set of operations and wrote a few scripts to get it done. A group of people around us was a blind spot of knowledge from beginning to end. , I didn't react yet, so I could only clap and call 666.

This is the world of the strong, the world I yearn for. Of course, I know that such a world can only be set foot in one step at a time.

King-Top of Mount Tai

In the end, I don’t know how to write anything. There are only a handful of people who can go to this field. I have them around me, but I think everyone understands it for themselves. Generally speaking, it’s networking, communication, and abilities that have reached a certain level. I don't know anything at this stage.

All I can think of is the ancestor's verses: Point the country and lash out at Fang Qiu.

It can be regarded as leaving everyone with unlimited space for reverie. In the future, you may be the king of your field, right? Insert picture description here
to sum up

I have written so much before I know it. The above is the development path from 0 to Java programmer in my personal eyes. Due to space limitations, it is not comprehensive. The actual personal growth path may vary greatly due to the difference in work content. Some people prefer In terms of low-level research, some people tend to design for business requirements, some have strong industry colors, and besides technology, there is a lot of knowledge that is also very important. There is no easy direction to do Java, but one who is interested in technology People, at this point, still have enthusiasm for development and want to write good projects.

Students who are learning Java can come to my Java learning skirt: 3907814, 3000 people and ten years old group, can learn from it.

Programmers who work purely for their livelihood can't make this step. This line of business has come. Everyone is 24 hours a day. Why is there a gap? I think you and I understand it. If you know why, then do it. Call the name hall.

Guess you like

Origin blog.csdn.net/weixin_49794051/article/details/108727090