preface

I have been preparing since the middle of February. By today (April 2nd), I have received the offer of backstage development from Meituan and Tencent (probably, I haven’t sent an official email, I hope it won’t turn over in some strange place), and I plan to stop. Just saw the interview activity of the Nuggets, I want to share my long-term learning experience and recently summarized interview experience, as well as some views on the road to go, hoping to find like-minded partners to move forward together.

I am a junior student in a certain 985 school in Shanghai, but I have a common understanding with my classmates that following the school is not promising. After mastering the basics, it is the best way to explore on your own (except for those with high GPA). What the school gives us is more encouragement from a group of excellent and hardworking peers.

Of course, because the building Lord this talent is junior, the thought is rather childish, hope to give peers a little reference, have already walked on the way of the elder can give me a little guidance.

In addition, I wanted to start a blog a long time ago, and I also worked on the cloud server before, but there were some problems with the domain name record, so I contributed my virgin blog on the nuggets. In addition to this article about life, I will try my best to share some hardcore technical articles

First, road choice

If you can guarantee graduate school, who is willing to directly look for a job (manual funny). I believe that every CS junior who cannot afford to go to graduate school has faced the choice between taking the postgraduate entrance examination and finding a job, and I was determined to take the postgraduate entrance examination before February this year. So a winter vacation began to crazy code to see the code, because I know that once I start the process of postgraduate entrance examination, I will leave my beloved code.

But the more I work on projects, the more I realize that individual projects have their limits. No practical requirements, no practical application scenarios, no experimental machines, no guidance from predecessors. Although I have experienced a lot of learning and thinking in the process of writing the project, I have gained a lot, but it is only a toy after all. Therefore, my attitude gradually changed, and I decided to try my own level in the spring recruitment. If I could get a good result, I would go directly to the internship + work path, otherwise I would still take the postgraduate entrance examination. The reason why I decided to take the postgraduate entrance examination before is that I still have a lot of knowledge in this field to learn and many good books to read, and campus is a good place to provide self-study environment. However, as I said before, self-study also has its limits. I still hope to hone myself in a practical environment. Moreover, I have set a goal for myself and will continue to learn. Of course, if it’s machine learning, graphics and other algorithms, I just throw in the towel (run X

Two, interview preparation

Since we have decided to prepare for spring recruitment, we should make good preparation. Interview preparation is two parts, one is CS foundation, one is algorithm. There are many good answers on Zhihu about how to brush the questions. Can’t do very normal, often think often review is good. As for the basic knowledge of computer network, operating system and so on, I basically reviewed the whole book in the form of the knowledge points that were not in-depth enough or could not be understood in the book, and then in-depth through the blog. I’m going to do a review of each area in chunks.

Everyone has their own review method, I hope you can get some reference from my review method, in order to choose the most suitable way for their review.

2.1 Computer Network

Recommended books: Computer Networking: The Top-down Approach, the Definitive Guide to HTTP

Advanced: “TCP/IP detail: Volume 1” (I did not read)

Computer networking is my favorite field, and I took the time to read the top-down and HTTP authoritative guide before spring Recruiting, so the main thing for spring recruiting is to do a review and catch up. This is basically answered in the interview, but the interviewer asked relatively basic, not very deep expansion.

The review is carried out from the top down according to the five-layer protocol, focusing on the application layer, transport layer, network layer and link layer.

The application layer

  1. DNS protocol. There are a lot of answers on the Internet, the protocol process is fairly simple, and some companies will ask in more detail, so take a look at some of the more in-depth answers.

  2. HTTP is too much to talk about. HTTP traffic dominates the web today, and there is no reason not to learn HTTP well in any way. Take a close look at chapters three and four of the authoritative guide to systematically understand the basics of HTTP

    1. Packet format. It’s easy. Just memorize it
    2. Request method. The main difference between GET and POST can be looked at a little further. Some interviewers ask about Restful, but I personally don’t try to memorize interface design specifications.
    3. Status code. Some partial door status code can be looked at, such as 101.
    4. First explanation. There are Cookie, Session, cross-domain issues involved. Take a closer look if you have the spare time.
    5. HTTP connection. This part of the knowledge is I spent a lot of effort to see, involving a wide range of aspects. It is recommended to follow the history of development. From HTTP 0.9 to HTTP 2.0, what has happened and what is the problem that the new protocol is designed to solve? The focus is on what is causing the current poor HTTP performance and what the industry is proposing to do about it. The summary of my notes in this part is quite detailed, and I will sort it out and put it out later. It’s basically based on chapter 4 of the HTTP Guru’s Guide, with some HTTP2 content added.
    6. HTTP2. This section is singled out because my project uses GRPC, which is based on HTTP2, in case the interviewer asks me to review it. However, no one asked, after all, the wrong payment.

Transport layer and others

There’s not much to say about this layer, or too much to say. There are so many articles about the transport layer on the Internet that I don’t have a special understanding of it. I just read the part about the top-down transport layer.

Other network layer, link layer and even physical layer, I basically keep some basic knowledge, not very in-depth understanding, you can also determine their own experience and needs to review these parts of the depth of knowledge.

2.2 Operating System

Reference books: “Linux kernel design and implementation”, “Operating system concept” 7th edition

The review of my operating system is basically the operating system of the above semester plus the extracurricular “Linux kernel design and implementation” based. But the content of this book is not much, although there is source code analysis, but most of the time it is not too in-depth, and the difficulty is quite high. When I was studying, I basically tried my best to learn, solid grasp of the part, for the high-frequency interview questions to do a round of reinforcement, the interview can guide the interviewer to their familiar direction to ask. Some of this was answered in the interview, but many of the more in-depth ones were not, such as memory management, kernel startup process, compile links, etc. Later I did my best to review. In general, it shows the interviewer that I have studied the topic in a little bit more depth.

2.3 the Mysql, Redis

Reference books: How MySQL works: Ribs Understanding MySQL, High Performance MySQL, Redis Design and Implementation

Here is the advertisement for the Nuggets, I hope to pay the advertising fee later. But the book knowledge is summed up well, to understand and well express to the interviewer is also a kind of ability.

After this round of review, I basically have a fairly comprehensive understanding of hard knowledge such as index principle, slow query optimization, isolation level, lock and so on. When the interviewer asks, I can talk for several minutes, and the answer should be good according to the interviewer’s response.

Here is a brief mention of learning methods. When I took the course Database Systems, the professor was a big shot who used to teach in the United States. He said something that impressed me deeply now. American students are particularly good at association. For example, when he taught data storage, the students immediately associated the file system and asked whether the database should be stored using the file system provided by the operating system or managed by themselves. It reflects their excellent ability to organize knowledge system, explore problems and find problems, while most Chinese students passively accept knowledge.

I was still a little unconvinced, but on reflection, even if I didn’t rise to “Chinese student”, I really didn’t pay much attention to the series of knowledge systems. Since then has been paying attention to this point, although do not good enough, but gradually also realized the benefits. If you want to do this, you have to think about it rather than memorize it. When knowledge collude, it will be very helpful to understand new knowledge and analyze problems. I hope the professor’s words can also help everyone ~

As a NoSql, Redis and Mysql have something in common, except that different problems to solve give rise to different data structures and algorithms, so I put them together. The way I review Redis is very straightforward. I read through Redis Design and Implementation, take notes, review frequently, and summarize my own use scenarios and analyze them in the way of data structure and algorithm. There will be some specific implementation that I don’t understand or can’t remember. My strategy is to try my best to remember according to the priorities summarized by myself, and to remember those that can be combined with the project first, so as to ensure my own understanding. After all, the point of an interview is to show how much you understand, not how much you can memorize.

2.4 other

Other parts of the knowledge points vary from person to person, for me, look at go language, HTTPS, GRPC, Protobuf, micro services, etc., degree is also deep and shallow. After all, human experience and memory are limited, there is no shame in not answering. Besides, most interviewers will not ask questions during the review, just make sure you understand the key parts.

Interview experience

Specifically for each interview, the content is probably self-introduction, ask the basis, ask the project, dig each knowledge point. Just say something technology-related about what you’re good at and what you’re not so good at, so the interviewer has a foundation to ask. If I tell the interviewer I’m a go guy, the interviewer won’t catch Java. Of course, can not say that they are not good at what database operating system, so have, outrageous.

Be sure to review your own projects and, as I mentioned above, be able to piece together your knowledge and understand what the interviewer is likely to ask. I did two projects by myself, and then refined the points that need to be understood in a more comprehensive way. For those points that I do not know and do not plan to review, it is good to say nothing about them. Of course, it’s only after the interviewer asks questions that you can sort out your projects. So I encourage you to be more than a little bit more experienced, because there are limits to just looking at things.

In fact, the whole review interview process, is a good summary of their knowledge system process. There’s a bit of rote memorization involved, of course, but when you’re done, you’ll have a pretty good idea of what you’re worth. Because I was afraid that the interviewer would dig deeply, I still carefully read a lot of content that I would not read before, trying to get a deep understanding. Then I systematically reviewed what I had learned before and made notes, and I gained a lot.

The whole for, I have voted for the four companies, including Meituan and tencent is passed, bytes after the side having ashore: we are not going to continue, ali is never started, consisting of a total of seven rounds of interviews and a written test, each time the interview has a different experience, has a very smooth, also have been Dui mentality explosion, But there are still good harvest after the second round. The interview is really hurt the body, nervous heart rate before the interview, after the interview on tenterfeet, because I really don’t want to go through another round, timely stop. If these two hands fail for strange reasons, it is directly ready to approve in advance, just more time to brush the questions.

Here is also a question to ask the community partners, Tencent offer is the background development of PCG light lab, write GO; The offer of Meituan is to the business group of the store, responsible for the business similar to that of Zhongtai. I heard from the interviewer that my advantage is that I have a comprehensive view of the whole situation and write Java. Personally, I prefer to go to Meituan. I may grow up faster, but I need to change languages. Do not know everybody to have what suggestion ~

Finally, I wish all the friends who haven’t landed to get the offer as soon as possible. If the feedback is good, I will sort out the notes and send them, and then I will try my best to output something.