2
头图


0x00

Didn’t the college entrance examination just come to an end some time ago? Once the college entrance examination is over every year, how to choose a major and how to fill in volunteers has become a hot topic.

Last year, I helped two relatives and children in my hometown to refer to volunteers, and this year I also received calls from several uncles and aunts in my hometown. Parents are more anxious than children, and they do all kinds of inquiries and research.

Last year, one went to the computer and the other went to the normal school. This year it is estimated that the two children over there should also fill in the computer (or related), they are studying science.

Of course this is not to say that I recommend them to fill in the computer. I personally always think that interest is very important, but when I asked if I am interested in major, I said that there is no clear goal. I hope to fill in a popular job. Moreover, the Internet is so developed now that the children have checked themselves and learned that computers have become popular in the past few years, and then they have also investigated some computer-related situations in detail. Children care about whether they study well, and parents care about good employment.

But I would suggest to say rush, be steady, and guarantee. Of course, it’s okay to be able to enter a computer-related major, but if you can’t enter the file, then communication/electronics is not impossible.


0x01

I still think that engineering majors are a more friendly choice for science students from ordinary families. There is no too high barriers, you have the opportunity to have the skills, at least a little practical skills after learning.

As long as you are interested in learning, it is generally not a problem to choose this one. Of course, this interest does not mean to be particularly strong, sometimes it is also an interest not to hate.

Especially in computer-related majors, these years have indeed been the top stream in the engineering sector.

First of all, everyone knows that wages are high. For fresh graduates from a slightly better school, it is basically no problem to get dozens of annual salary after graduation from Beijing, Shanghai, Guangzhou and Shenzhen. Therefore, learning computers must be able to satisfy our goal of standing still, feeding back the family, and yearning for a better life in the future. I also counted the classmates I am familiar with, such as communications/electronics/computers, and they are all well developed. Therefore, choosing a computer major is indeed more suitable for the market.

In addition, I personally feel that the threshold for computer learning is not high. Generally speaking, with a background in science and some logical thinking, they can generally learn well. Moreover, there are not too many learning resources for computers. The open source world is also very rich and can be found on the Internet. There are no obvious learning barriers. You can learn with a computer. What's more, the pay is proportional to the reward, and it doesn't fight against other things, it's purely based on technology.

So it may be precisely because of these various reasons, there are too many people reporting to the computer now, that is called a fire. In addition to those who volunteer to fill in the computer for the college entrance examination, there are also those who transfer to computer majors, those who take the postgraduate entrance exam, and those who switch to computers after work, and even those who train computers in training courses... So I will also tell them that pressure and competition are not The small one must be mentally prepared.


0x02

Talking about the question of papers, you can see from the two most common points, one is the postgraduate entrance examination, and the other is the difficulty of the job interview. I think many friends may have personal experience.

Nowadays, postgraduate entrance examinations are not only about computers, but the more popular engineering majors are under great pressure. How many points did we score for the postgraduate entrance examination at that time? Go to school in your early 300s. Now let’s take a look. There are a lot of 400-point fairy fights in computer-related majors in Haodian School. There are many people who report to them, and there are also many great gods.

And talk about job interviews. I used to memorize eight-legged essays, then brush up the questions, and find a decent job without any problems. What is an eight-legged essay? It can be memorized, such as what OOP features, the difference between interfaces and abstract classes, the principle of hashmap, the difference between List and Set, the Java runtime memory area, Get and Post requests, three-way handshake and four waves, OS page replacement algorithm... Wait, you may have memorized it too.

Then, we brushed the questions. At that time, we could basically guarantee the bottom of the 40 or 50 questions on the Jianzhi Offer. I remember LeetCode, it seems that there are not so many questions now.

But standing in the present time and looking at the interview, what do you ask.

Ask the bottom layer, deep into the bone marrow. What are the underlying principles of JVM, JVM tuning practices, JDK source code, JUC concurrent packages, implementation principles of locks, database underlying principles, index optimization, SQL tuning, Spring source code, mechanisms of various frameworks, and what clusters, Distributed locks, cache coherence... and other issues are also frequently asked.

Then just ask the project. Either dig to the bottom layer, and finally the bottom layer principle, like the above, or go up to the architecture level, such as architecture design, frame selection, link design, architecture expansion... and so on.

In addition to these there are shredded algorithm problems. Now that LeetCode doesn't have hundreds of questions for job hunting, I'm afraid it's hard to find the feeling even in the written test. The friends I met must have felt it.

So now for self-study, including when preparing for an interview, I really don’t mean to memorize eight-legged essays. I can use Spring Boot, Spring Cloud. I just talked about two more valuable aspects:

Or on the underlying principles: the bottom layer of the operating system, the bottom layer of the JVM, the bottom layer of the framework, the principle of the algorithm, the understanding and mastery of the source code...
Or think about the architecture: the ability of architecture design, the selection and comparison of frameworks, the design and grasp of links, the expansion and expansion of architecture...
And these generally need to be understood and practiced.

Besides, I obviously feel that the computer literacy of the fresh students around me is generally very high. Whether it's during an interview or watching some newcomers around you after work. In addition to his computer thinking is very good, he is quick to learn things, and he is also very young and energetic, which is difficult.

So based on these, I would also say to the volunteer child at home that the brainless stud computer won’t work with the crowd. If you want to report, you must first be psychologically prepared to be able to hold the pressure, secondly be interested in this thing (at least not annoying), and finally have a strong self-learning ability and habit, otherwise it will be painful even if you enter of.


0x03

Then one question is about the difficulty of programming? This is a problem shared by several students from my hometown recently when they were investigating their majors.

Is it difficult to program? In fact, I really don't know how to answer this question.

Personally feel that the threshold for computer learning should not be considered high. They are all majors in science, and a little logical thinking is generally okay. Of course, I am not talking about the kind of talented players who have learned to the extreme. We are talking about learning from a general perspective and being a general development perspective.

Take the most common programming job as an example. It is a bit demanding for people's thinking ability. In fact, a simpler understanding is about analyzing the problem, then abstracting the elements, and finally establishing a model of the thinking process. If you feel that programming is difficult, or that the code is impossible to start, then there is a high probability that this way of thinking may not be formed. It shows that first, the foundation may need to be strengthened, and the other is that he may not have exercised enough to break through that threshold.

Especially after joining the work, those systems and various businesses that were done. In fact, to put it bluntly, it is to abstract and model each actual requirement, express it with appropriate data structure and algorithm flow, and then assist some frameworks or tools to describe it in a programming language, and then go through a series of processing, and finally It is executed by the computer.

First realize the function, the process runs smoothly, and then consider how to do it faster, how to achieve higher concurrency, and how to be more secure. We can recall that the complex systems in the project often evolved in this way.

Therefore, one of the headaches for many newcomers is that they are new to the team, and they are new to the actual project. The project is too big, and it will be difficult to understand for a while.

why? Because there are many evolutions and iterative processes, you have not seen it. In fact, the system was not that complicated at the beginning, but many versions were iterated later, many things were changed, and many things were added. At this time, if there are no more reliable iteration records, documents, or notes, it is indeed difficult to understand, and it is too normal. So at this time, I can only rely on myself to ask more, think more, understand more, the context/front and back, from the whole to the part, from the part to the finishing, just rubbing back and forth repeatedly, and slowly understand it.

So sometimes I think about it, as if things are not that complicated. But have you ever wondered, why is the current Internet development world so prosperous? Especially when we sorted out knowledge points and learning routes like big data and back-end development, there were too many technical points and frameworks involved.

In fact, if you think about it, they are often used as an auxiliary. They appear in many cases to deal with a series of problems faced by enterprise-level application development, such as complexity, code quality, testability, scalability, and maintainability. One sentence summary, all for better engineering iteration.

An example might be better to understand. For example, there are many Spring frameworks for Java back-end development. In fact, when we write these web services, we can use Spring without Spring. It can also be written in a simple way. In this case, different people will make their own wheels, encapsulate the tool classes, and encapsulate their own tool methods. There is no problem, and the requirements can be fulfilled.

But at this time, because different people have different ways of thinking, different habits, and different abilities, the code written by everyone is likely to be uneven and of different quality. It is difficult to achieve the code quality and performance required by enterprise-level development. Testability, scalability, maintainability, and iterability. The project written in this way may not be easy to maintain, and there is no way to iteratively evolve for a long time.

And these frameworks use a lot of internal mechanisms, implement a lot of tool classes, methods, and processes. They also specify a lot of restrictive writing methods to expose APIs or interfaces to developers... In fact, to a certain extent. Said all can be understood as providing a kind of constrained programming. Do you want to use my frame? can. Then you have to abide by the rules of the game (coding rules) on my side. Isn't this typical of Spring? What is the IoC container for? It is convenient to manage objects, and then a bunch of things like aspect programming, interface programming, reputation programming... etc., we can understand it as a kind of constrained programming. In this way, it can be ensured that the code written can be easily tested, extended, maintained, and even integrated with other technologies to create business value while fulfilling the requirements.

But at this point, it seems to be a bit far away, and the time is too early. Let's talk again when I have a chance.


postscript

In addition, I have recently spent a lot of effort to organize the programming learning resources for my own use.

They are all pure liver products, the catalog is as follows.

The content GitHub https://github.com/rd2coding/Road2Coding has been included, and there are also my own 6 programming directions self-study routes + knowledge points combed , my resume interview points , several hardcore pdf notes , and My Programmer’s Life , welcome star.

It is not easy to organize, welcome support, see you next time!


CodeSheep
3.4k 声望7.6k 粉丝