Written in the book of the former
I have written many autumn tips summary, this article should be the last summary, of course, is the most complete, the most detailed summary. Autumn recruitment is a valuable experience in my life. It is not only a test paper for my graduate career, but also the beginning of my future career. This article is dedicated to myself, as well as all of you on the way to job hunting, or have experienced the school recruitment friends. Never forget why you started, and your mission can be accomplished.
preface
I am one of the 985 graduates who passed the postgraduate entrance examination. After two years of postgraduate study, I am lucky to get offers of R&D positions from several companies in the autumn recruitment of 2019, including Baidu, Ali, Tencent, Toutiao, netease and Huawei.
(At the end of autumn recruitment, I was lucky to get offers from Didi and Amazon again. At that time, it was Already November, so it was not mentioned in the previous article.)
Along the way, I also encountered a lot of difficulties and stepped on a lot of pits. At the same time, I also explored a lot of learning methods and summarized a lot of experiences. Moreover, I also did some research and corresponding preparation for campus recruitment. After the recruitment in the fall of this year, I also decided to write all these things into a topic, so as to share with more students who will participate in the school recruitment in the future.
Confusion and firmness in college
I majored in electronic information Engineering during my undergraduate study, so I didn’t have access to computer courses. I only learned C language, and then I had access to Java, Android and front-end development in my junior year. At this time, I was just a beginner, do not know how deep the water of software development, holding the attitude of trying to apply for many companies. As you can imagine, you didn’t even pass the resume screening.
At that time, I was very interested in game development, especially netease games, but when I saw the recruitment requirements of Netease game development engineer, I could only stand back, because it requires at least 985 master’s degree.
Because of this opportunity, I began to prepare for the postgraduate entrance examination in the summer vacation of my junior year. After a month of careful consideration, I chose Huake university as my target university.
Then, the second half of 2016, I became a “two ear not smell out of the window, read only sage with books” one’s deceased father grind the party, in retrospect, it was hard to learn, half a year time, stable bubble in the library more than 8 hours a day, sometimes learn dormitory can learn 12 o ‘clock in the evening, at that time feel completely changed a person, Maybe when a person works hard for a goal, it really makes a difference. Finally, I passed the exam successfully, and to my surprise, my grades were pretty good.
The direction choice of postgraduate period
For students who are going to graduate school, there are generally two important things. One is to choose a supervisor and the other is to choose a direction.
These two things were also the biggest headache for me when I first started graduate school. First note, I read the professional master degree, so the lab is generally not research, some teachers will get project, because I’m not going to do in the laboratory project (because I prefer to go to big company to exercise a few years), so I was in line with the idea of looking for internships chose the mentor, the fact proved that my choice is correct, I have long time to go to an internship in the second year, Give me enough time to exercise and study in the big factory.
It took me a long time to choose a direction. What I did most during the first year of postgraduate study was reading books. At that time, my direction was not clear, so I looked for many books to read. While others specialize in data mining and machine learning, I’m still bouncing between directions.
I wanted to do game development and Android development before graduate school, but I also studied Java Web development before. So I started looking online for information on the right direction, and found that the job pool for game development was relatively narrow.
Finally, I chose the direction of Java development based on the position situation of the company, personal interests, and my previous learning experience.
Therefore, I chose The Java Web project in the school training program, and from then on, I really set foot on the road of Learning Java.
Clumsy birds are the first to fly
Although my admission score is the top3 in the college, I found that, as a non-major, there is still a certain gap between me and many of my major classmates.
Most of my classmates have taken courses related to computer major in their undergraduate studies, such as computer network, operating system, data structure, etc., but I have never heard of them before. In addition, they usually have several complete project experience, at least they are familiar with Java Web. At that time, I only learned data structure, in addition to some Basic Java, and had some project experience, which was basically the entry-level level.
So painful experience, I decided to make up for my lack of well, usually a free go to the library to find some books to see, whether the operating system, computer network, database or undergraduate courses such as, I will find some corresponding books, don’t know at that time in fact actually don’t need specially to fill some of the courses, so that I can’t computer composition principle, compiling principle, Software testing and other aspects of the book are specifically looking for, now think is quite funny than.
Because our classes were relatively low, class time turned into a great time for me to learn the basics. Therefore, I usually bring two or three books to class and finish reading one book within one or two weeks. Although I may not absorb it well, it is still of great help to me at that time.
In addition, SOMETIMES I would secretly audit some undergraduate courses, because I encountered difficulties in self-learning some courses, such as “Operating System”, “Database Principles” and so on. So I took the time to study the undergraduate class schedule and audit classes when I didn’t have one. Sometimes I feel awkward in the class and want to run away awkwardly, but I finally insist on listening to a database course.
In addition, I also watch online courses on various video websites, such as Chinese MOOC basic computer courses, where the operating system, database and other courses impressed me deeply.
In this way, I filled my time every day. I read several books in the first semester of my graduate study. I can’t remember the editions of the books at that time, mainly about computer networks, operating systems, principles of computer composition, software engineering, software testing, design patterns and other books. In this way, I rely on the persistence of this period of time to make up some basic computer courses.
Through all the hardships, finally got the internship
At this time, I just finished the Java Web project training course in school. During this project, I found myself exposed to many problems, such as insufficient technical practice ability and poor Java foundation. This is also a wake-up call for me, because I plan to find an internship in a big factory during the spring recruitment period, but it seems that my level is far from enough.
Under pressure, there is only one way out. Therefore, from then on, I began to “stay behind” the laboratory study life. Why to study in the laboratory, one is because the learning atmosphere is good, the other is because we can exchange problems with each other at ordinary times.
Every morning at 9 o ‘clock in the laboratory to turn on the computer, back to the dormitory at 9 o ‘clock in the evening. I spent most of my time reading books. During this period, I mainly read Java-related books, referring to the “Java backend shelf” of jiangnan White Men, such as “In-depth Understanding of JVM VIRTUAL Machine”, “Java Concurrent Programming Art”, “In-depth Analysis of Java Web Technology Insider”, “In-depth Analysis of Spring source code” and so on.
In the other part of the time, I would read some technical blogs, mainly according to the knowledge points on the map, to find the corresponding explanation of the knowledge points of the article, at that time, mainly through the search engine to find the article, of course, sometimes I would write some blogs when I saw some key points and difficulties. But this is not a time when I write a lot of blog posts. I mainly read some technical blogs that explain interview points.
Beyond that in a few days before the interview I will take the time to see the face of the company after, understand the scripture knowledge, each surface and record on my notes, just face the relevant notes I was down more than 100 articles, this study habit I has been sticking to the autumn, knowledge to ensure that every interview can be I remember, digestion, until fully understand.
Gradually, my notes became more and more, and I participated in more and more companies for interview, so I began to constantly improve my resume, summarize my interview skills, and choose the right time for online application. From beginning to end I probably spent 3 months looking for internships, large and small participated in more than 20 times during the interview, I also from the beginning the interview random individual novice, gradually turned into a surface, to the end of review I’m sensing of Java common interview knowledge, at the same time also more and more confident, no matter what metal surface are in no hurry.
This went on for several months. Nothing in the world is difficult if you put your heart into it. By the end, everyone in the lab had an internship offer they wanted.
I learned a lot on the way to my internship
Step out of the school gate, my internship has just begun. About 8 months of internship time, said long also long, said short also short. But after this internship, I realized a lot of things.
During the internship in the pig farm, I got to know the development process of a big company for the first time and personally participated in the development of the project code. My tutor would tell me the requirements and guide me how to do better. There is no doubt that MY growth here is very fast, but I soon realized my problem. I am not familiar with the technical stack of the department, and I am not familiar with many technical principles of Java Web. During this period, I realized that the depth and breadth of my knowledge may need to be improved.
But there’s something going on at home. I quit my job in advance, so I stayed in the pig farm for a short time. As a result, I left before I had a chance to understand the technical structure of the department project, which also made me feel very sorry after leaving, so I made up my mind to do well in the next internship unit.
After leaving the pig farm, I went to the bear factory. The requirements put forward by the department were not too difficult, and most of them were CURD’s work. However, I soon realized the problem, that is, I was not familiar with the overall technology stack of the department, so WHEN I needed to learn from others’ codes, I occasionally could not understand them. Later, when the department gave me new requirements for refactoring, I began to worry about whether I should make some changes.
Finally, I found a new goal, I want to understand the department’s project architecture and the relevant technology stack (our department is engaged in private cloud). At the beginning, I would consult my tutor and try to understand the architecture design of the project. Besides, I would also spend some time to look at the codes of other colleagues. And through some documents and PPT to understand the function and significance of these codes. Combined with the codes and documents, as well as the communication with my colleagues, I gradually got familiar with the structure of the department project. In order to better understand the function of each code, I also wrote notes for the codes of some modules.
Of course, only looking at the code and documentation can not solve all the problems, because the focus and difficulty of this project is not in Web application, but in the underlying technology, this project contains two sets of architecture, namely a set of OpenStack cluster and a set of Docker cluster. In order to learn these two contents, I first read a lot of blogs, and then practiced running virtual machines and containers on the platform. Finally, I read some books in this field, mainly including Design and Implementation of OpenStack and Introduction to Docker Technology.
But it is not enough, virtualization technology is closely related to the Linux kernel, and learners very familiar with the operating system and network, I know these content I didn’t learn enough, so I spend a lot of time to read this book, was also met a number of really good books, respectively is the deep understanding of computer systems, the computer network: The top-down approach, and the unfinished Book Linux Kernel Design and Implementation. Although the future may not do cloud computing direction of development, but after learning these things I am still very happy.
Later, there were more and more books on my desk, and I became more and more familiar with the technology stack of the department. Sometimes, I would listen to the technology sharing organized by various teams in the company, and read the technology courses on the Intranet in my spare time, which really expanded my technology breadth.
I sometimes think that practice life be deceiving, you wear and formal employees work card, and they are doing similar things, will let you feel you are and their levels of about the same, but the truth is, before the confirmation, you still have lots more to you and them, so don’t stop my steps forward, take time to learn and grasp the good opportunity in the company, you Take advantage of the resources your company offers you.
Accumulation and precipitation before autumn recruitment
One thing I kept doing during graduate school was taking notes and writing a blog.
Taking notes is to record big and small things in learning, such as interview questions, a week’s study plan, or a knowledge point. All of them are worth recording. For me, it is a kind of accumulation. As for the blog, I only used to record the project at the beginning, and then did reprint, and then wrote the original, sorting series of articles, is more like a precipitation.
However, in the period just after the spring recruitment, I found a problem that I forgot a lot of things I had learned before, especially those knowledge points that I didn’t understand deeply enough. In addition, I found that although I had recorded a lot of knowledge points and questions in my notes, I would only read them once and never read them again.
This also means that while writing down a lot of information, you don’t really digest much of it. Your head is always filled with bits and pieces of knowledge and interview questions, and you don’t know much about the complete knowledge system. These problems in the spring recruitment period also constantly exposed, let me think for a long time.
Faced with such a dilemma, I want to make a change. While I have enough time now, I want to make a subtraction for these contents, and take this opportunity to overturn my original knowledge system and rebuild a new knowledge framework. In short, I started to learn the Java backend again, this time in a more efficient way, to avoid the wrong path, to use the most efficient, the most reasonable way to review. Since I have already laid the foundation, I am confident to accomplish this goal, and I have made a clear and detailed study plan accordingly.
I plan to use a few key words to describe the three months of autumn recruitment review.
“Concrete and reliable Study Plan”
During the three months, I first arranged my review schedule according to the Java backend roadmap, and each knowledge point was assigned a period of time. For example, I might spend one day reviewing “Java Reflection”, two days reviewing “Design Patterns”, and one week reviewing “JVM Virtual Machine “. I usually make a plan for the whole month at the beginning of the month and then make some tweaks as I go along, but BASICALLY I can keep up with the progress, and that’s as long as THE review is in place.
Therefore, I think it is particularly important to specify the plan for the bitter battle of autumn recruitment. Once the plan is settled, the strategic objectives will be clear, the corresponding tactics will become clear, and the execution will become stronger.
“Blog to Integrate knowledge”
As for the review method, I mainly read high-quality blogs and consolidate this knowledge point by combining the code practice. For example, in today’s study of “ConcurrenthashMap”, I will find two or three good blogs to read first, mainly about the source code interpretation, and then I will integrate them. If I missed something, I would make up for it. Sometimes I would look at the JDK source code to better understand the blog content. After integrating the knowledge, I would write a corresponding blog post and post it on my personal blog.
On top of that, when I’ve done a review of the whole topic, I organize the articles into a topic, such as the “ConcurrenthashMap” mentioned above, which is actually Java and packages, so I’m going to create a blog column to complete the Java concurrent series of articles. For each article, I will first clarify what the topic has in common, and then start to organize. For Example, for Java and packages, I would first write about the basics of Java multithreading, then write about the JMM memory model, and then work on Java thread pools, blocking queues, utility classes, atomic classes, and so on. The advantage of writing a series of articles is that I can clarify the context from beginning to end and make a good summary of the knowledge points of each part.
I’ve learned a lesson about my blog choices and would rather spend half an hour reading one good post than 10 minutes reading five bad ones. The great thing about deep reading is that it helps the content fit into your brain’s body of knowledge, rather than being as fleeting as other fast food articles.
“Do projects to consolidate practical ability”
Before because during the internship in a larger project, I contact module is more onefold, not have a good grasp of the overall project, so I decided to take the time to consolidate the my project practice ability, the ability is mainly refers to grasp the architecture of the project, and the proficiency of business development, This includes, of course, familiarity with various common back-end technologies.
I spent about a month to finish the development of the two projects, mainly is imitate the two open source projects to do, of course, the two projects are using SpringBoot fast development, and use some common backend technology such as redis, cloud storage, as well as some common Web framework, in addition also involves solr, the crawler. Although the project was not very difficult, I quickly got familiar with the whole project development process during this period of time. I did iteration every day and followed up the version with Git. Every version would write the content clearly, which also made me very familiar with the architecture of the project.
In addition to the project, I also found some common back-end components to run the demo, so that I can have an intuitive understanding of these technologies, such as dubbo, ZooKeeper, message queue and other components that are often asked in interviews. These attempts have also made it easier for me to understand how they work.
“Adhere to brush questions, pay attention to methods”
Algorithm questions is the autumn recruitment of the written interview of the main play, every R and D students are not immune to the destruction of algorithm questions, for me such a non-subject class students, but also let head big. Because of this, I abandoned the method of skimming a lot of LeetCode questions in favor of a more effective method of skimming.
First of all, I copied the sword offer again and summarized each question, trying to ensure that each question can be remembered in mind. As we all know, the sword offer questions are very popular in the interview, so it is the most crucial to solve these questions first.
After finishing the offer of sword finger, of course, I still need to brush LeetCode. There are so many topics in LeetCode, how to choose? I did not brush the questions according to tag or order, but referred to the guide of LeetCode brush by a big man at that time, who summarized each type of questions. Only a few classic topics are included in each section. Therefore, I have brushed more than 100 questions of LeetCode, and I also made a summary of these questions in the second brush and review.
In addition to the above two classic question bank, I also focus on the dachang calendar year real questions, this part I mainly through the niuke.com calendar year real questions to complete the brush. To be honest, the real questions are very important, because the company’s questions are not like the usual algorithm questions, can be very weird, so you will be at a disadvantage if you don’t adapt. After the completion of this part of the topic, my review of the algorithm is also basically come to an end.
By the time I had finished reviewing all the content, the advance batch had already started. Finally, I will go to the battlefield, because I am fully prepared before the war, so I am more optimistic about autumn Recruit, but in fact, autumn Recruit is not only a tough battle, but also a protracted battle, it is not so easy to win the last.
Rebuild your knowledge base and subtract from what you’ve learned
As mentioned above, I completed the reconstruction of my knowledge system before autumn recruitment, so I would like to share with you my general knowledge system at that time. As I said before, I chose to learn the technical content related to the Java backend again, because I knew the general direction of learning, and had a certain foundation, so I became more comfortable reading many articles, writing articles and making summaries more confident.
First of all, I wrote more than 20 original blogs on Java fundamentals, mainly analyzing Java core technologies, such as “Java reflection”, “Java serialization and deserialization”, “Java exception system” and so on.
In terms of Java collection class, I wrote some original articles and integrated some good technical articles, the most important of which was about Hashmap. Almost no knowledge point was omitted in the articles I integrated at that time.
In Java concurrent programming, I mainly refer to the concurrent programming network and some high-quality blog articles, first understand the principle of Java concurrency, and then step by step to learn JUC and package components, which focuses on CHM, concurrent tool classes and blocking queue JDK source parsing articles, in addition, I will also be running JUC-related EMO in the IDE, as this aspect is very hands-on.
In terms of Java network programming, I started from the most basic socket, then talked about NIO and AIO, and added several articles on the analysis of Linux IO model to make the whole knowledge system more complete (because NIO is implemented based on Linux Epoll), and then I added the discussion on Netty. And the use of NIO in Tomcat, which covers some of the more important parts of Java network programming. In order to better understand this part of the content, I also refer to a lot of client and server communication demo on the Internet, finally I used Socket, NIO,AIO and Netty respectively to write a C/S communication demo.
In terms of THE JVM VIRTUAL machine, I organized the articles along the lines of the book “Understanding the JVM Virtual Machine”. After working out the fundamentals of the JVM, I focused on the common problems encountered in JVM tuning and practice, and organized the common JVM tuning tools, scenario problems, and tuning practice cases, due to the increasing emphasis on JVM tuning practices in interviews.
In terms of JavaWeb, I started from the development of JavaWeb related technologies, and understood the significance of each technology step by step, such as JSP, Servlet, JDBC, Spring and so on. Then I had a comprehensive understanding of each technology. I also looked at the source code analysis articles of Spring and SpringMVC. On the other hand, I spent a lot of time studying how Tomcat works. In addition, maven, logging components, and even single-test components commonly used in JavaWeb projects have been included in this series.
In terms of database and cache, I mainly studied MySQL and Redis, the two most commonly used databases. For Mysql, I started with simple SQL, then started to understand SQL optimization, Mysql storage engine and indexes, transactions and locks, as well as more complex master-slave replication, sub-libraries and sub-tables, etc. For Redis, I also started with a simple API, and then understood the underlying implementation principle of each data structure. Then I tried to learn the persistence mode of Redis, the technical points often needed to be considered as a cache, and of course, the distributed lock implementation of Redis and its distributed cluster solution.
Last part is the distributed related theory and technology, this is also a piece of content in me for a long time, I mainly take the content is divided into two parts, respectively is distributed theory and distributed technology, theory, I understand the CAP first, the basic knowledge, such as BASE and then began to study the consistency protocols and algorithms, and then discusses a distributed transaction. For distributed technology, involving more things, such as distributed session, load balancing, distributed lock, etc, these knowledge I will use one or two articles to summarize, for distributed cache, message queues, and distributed service content, I will take more time to study comprehensively, and then summarizes a series of articles. Of course, the study of these technologies is mainly in the theoretical aspect, which can be used in my own projects.
At this point, my knowledge system has been basically constructed, which is also the reason why I can successfully pass so many interviews in autumn recruitment.
Autumn recruit road, forge ahead
No matter how much preparation we made in the early stage, we should not take it lightly in the autumn recruitment. From the first interview at the end of July to the basic Buddhist department in September, we experienced large and small interviews.
After the complete knowledge system reconstruction, I put the focus shifted to the other a few things, one is to improve and be familiar with my resume, so that can better play in the interview, 2 it is to continue to brush the topic, keep to the algorithm and the written questions, handle and proficiency, three is the surface as 20, I always thought that the surface via a review content is very important.
In this way, I continued to review, in order to begin one interview after another relay.
At first, I met with several small companies to practice my skills, and then Ali’s early approval came one after another. I participated in the interview of Ali middleware department with fear and difficulty. There were four rounds of interviews, and MY performance was good at that time, and I basically answered all the questions. Less than a week after the interview, I received the approval message, which was a bit of a shock. I didn’t expect my first offer to come so soon.
During this period, TWO departments of Ant Financial also offered me interview opportunities. I participated in both of them and successfully got the offer from one department. Because I am interested in the business of Ant, I finally choose the offer of Ant Financial.
Ali pre-selection victory is indeed a pleasant surprise, but also is greatly raise me up, so I went to attend the group interview ahead of time, baidu and tencent due to baidu don’t go ahead of time batch processes, a total of four sectors interviewed me, each department has 2 to 3 rounds of interview, a total of about 12 times interview, then I have dizzy, see baidu’s phone was afraid, Due to the number of interviews, sometimes the performance is really not very good, I did not pay special attention to, just as a training myself.
Baidu’s interview difficulty is different from each department, but each interview must write algorithm questions, a write algorithm questions, the time is at least one hour, each interview after a body is hollow feeling.
After experiencing the destruction of baidu interview, the speed of my handwriting algorithm has become faster, and a lot of pits have been filled in by me. Next, I was both excited and worried about the interview with Tencent, which was quite difficult. I liked to dig deeply into the knowledge of operating system and network, and asked profound questions. After finishing the first three interviews, I delayed the fourth one for 3 weeks. At that time, the three interviewers gave me a good evaluation, which made me confident for a long time.
When I was waiting for the final version of Tencent, I participated in the interview of Toutiao. Fortunately, I got a platinum code and was exempted from the written test. The fact proves that the platinum code is really very useful. The interview difficulty of Toutiao is similar to that of Tencent. Three rounds of interviews also require various algorithms. Since it is a video interview, I can clearly see that the interviewer of Toutiao is really very cool. My first thought after the headline was I should hang up. Unexpectedly, I finally gave the offer.
After the interviews of these big factories, I felt that my autumn recruitment was coming to an end. However, because I had invested a lot before, I met several big companies, such as netease, Huawei, Kuaishou and so on. By early September, I had received letters of intent from BAT, Toutiao and netease successively. Ali was the earliest and Tencent was the latest. I was very happy every time I received a letter of intent, but I didn’t expect that I could really collect all the offers from bat and other big companies.
After September, EXCEPT for the occasional written exams with my classmates, I basically became a Buddhist. It was not until some foreign companies, such as Amazon and Morgan Chase, began to conduct written interviews that I returned to the status quo.
Up to now, I have basically rejected all the offers that SHOULD be rejected. Considering various factors, I should sign with Ali in the end, because the department IS my favorite and has a high rating. Although Tencent also gave SP, but finally reluctantly give up. As for Baidu and Toutiao, the offers are not very satisfactory, so I have not considered them.
At this point, my autumn recruitment trip finally successful end.
Surface by sharing
The specific interview is quite long, here is about the interview situation, the specific interview please pay attention to my public number view.
Ali Sutra
Ali middleware research and development experience
Ant Financial r&d experience
I worked as a R&D engineer and directly asked the big man of Ant Financial for internal promotion.
I participated in the interview of alibaba middleware department in advance. I went through four interviews and got the oral offer.
Then I also participated in the interview of the middleware department of Ant Financial. I went through three interviews, but I didn’t follow the process, so the interview was stopped.
Finally, I went through the process of Ant Financial’s fortune Business Group. After four interviews, including one cross-meeting, I finally got the letter of intent from Ant Financial, which was rated as A.
Ali’s interview experience is relatively good, at least does not require handwriting algorithm, but attaches great importance to Java foundation, middleware department will specially arrange Java foundation written test.
2 Tencent Interview
Tencent research and development
The post is background development engineer, I did not choose the target business group.
SNG’s department grabbed my resume and started the interview. Their technology stack is mainly Java, so it’s quite interesting.
I have gone through four technical interviews and one HR interview, and now I am waiting for the result.
The interview of Tencent, as always, focuses on the examination of network and operating system, and likes to ask some knowledge of the bottom layer of Linux. I still have a lot of deficiencies in this aspect.
3 Baidu face classics
Baidu r & D surface classics
Baidu r & D surface via integration version
The post is a R&D engineer, and the department includes the three sub-departments of Baidu Intelligent Cloud and the big search department.
Baidu does not go through the process of pre-approval interview, so I can interview several departments at the same time. Therefore, I have participated in about 12 times of interview in Baidu, and finally I should get the offer of two departments.
Baidu’s interview style is very unified, each interview is basically to the computer to write algorithm, so that period of time to write algorithm scalp pins and needles.
4 netease Interview
Netease RESEARCH and development
The interview department is netease Cloud Music, and the position is Java development engineer.
Netease is the only company where I went to other places for interview, and it is also the company where I first went to practice.
Three rounds of interviews took one afternoon.
The interview of netease is more difficult than I expected. The interviewer will ask deep questions and ask you to write some codes that combine practice.
5 The headlines
Toutiao research and development experience
I worked as a background R&D engineer and chose Shanghai as the location.
I attended byteDance’s internal push interview and got platinum code from a bull friend. Thanks again to the headline guy.
Then I had a video interview in the afternoon. There were three rounds of technical interviews, each of which required me to write code and ask questions in a style similar to Tencent. I also liked to ask some basic knowledge, which made me feel a little confused.
The written test experience
In fact, there are not many written tests approved in advance. I participated in the written tests of netease, netease Games, Pindong Duo and other companies, and should have passed with low scores.
My algorithm foundation is relatively general, zero foundation before the graduate school, so it is difficult to learn this aspect, share some of my experience in preparing for the written test.
1 lay a good foundation of data structure and algorithm
2 easy after difficult, look at some basic algorithm books, such as “figure settlement method”, “Aha algorithm” and so on.
3. Brush the offer twice or three times to make sure you have a plan
4. Brush about 200 questions in LeetCode, remember to brush twice and make a summary.
5. Go to niuke network to do the company’s real questions over the years, familiar with the question type, keep the hand.
The Guide to finger offers and LeetCode brush questions can be found on my blog.
LeetCode guide is a reference to @cyc2018 big guy’s article.
The interview experience
The interview mainly tests or your basic knowledge, you need to have a global grasp of the Java backend stack, it is too much to say, specific review plan can refer to the content of the later article.
I have also summed up some interview experience, mainly some skills.
1 do a good job of self-introduction and project summary, grasp the initiative of your speech
Figure out what skills are on your resume
3. Pay attention to point answers, clear thinking, but also easier to explain the principle.
Stay calm under pressure and don’t fight back
5 HR interview pay attention to common skills, can be prepared in advance.
Java backend technology column
For campus recruitment, the most important thing is the basics. The following blogs out self technology blog https://blog.csdn.net/a724888
Some of these columns are my own, and some are reprinted from technology gurus, mostly over the two years I spent learning the Java backend.
In general, it is more comprehensive, do the direction of the backend students can refer to it.
Simple Java core technology
This column introduces the basics of Java, combining implementation principles with concrete examples. It also introduces Java collection classes, design patterns and Java8 related knowledge.
In-depth understanding of the JVM virtual machine
It takes you into the world of the JVM and integrates high-quality articles that explain the principles and related technologies of the virtual machine to give developers a better understanding of the underlying workings of Java and the corresponding tuning methods.
Java Concurrency Guide
This column introduces the basic principles and advanced knowledge of concurrent programming in Java. Mainly including Java multithreading foundation, Java concurrent programming principles and JUC and the use of the package and source code analysis.
Java Network programming and NIO
Java network programming has always been an important part of the content, including the use of sockets, as well as IO models for Java network programming, such as BIO,NIO,AIO, and of course Linux network programming models.
Knowing this part of the knowledge is very helpful for understanding network programming. Two other important niO-related technologies have been added: Tomcat and Netty.
The world of JavaWeb technology
This is where you open the door to the JavaWeb world. What is J2EE, what is JavaWeb, and some of the technologies commonly used in this ecosystem: Maven, Spring, Tomcat, Junit, Log4j, and so on.
Not only do we need to understand how to use them, but we need to understand why they exist and how some of them work.
Spring and SpringMVC source code parsing
This column focuses on the implementation of Spring and SpringMVC.
Spring is one of the most popular Java frameworks.
This column mainly includes IOC implementation principle analysis, AOP implementation principle analysis, transaction implementation source code analysis, of course, there are also SpringMVC source code analysis article.
Relearn MySQL and Redis
This column introduces the basics of MySQL, such as its basic architecture, storage engine, indexing principles, master-slave replication, and transactions. Of course, we will also explain some knowledge related to SQL statement optimization.
At the same time, this column also introduces the basic implementation principle of Redis, including data structure, master-slave replication, cluster scheme, distributed lock and so on.
Distributed system theory and practice
This column introduces the basic theory and related technologies of distribution, such as CAP and BASE theory, consistency algorithms, and distributed coordination services like ZooKeeper.
In terms of distributed practices, we’ll talk about load balancing, caching, distributed transactions, distributed locks, and microservices like Dubbo, as well as message queues, database middleware, and so on.
Technical chatter on the back end
This column has covered a lot of technical articles on the big back end, and once you have some grounding in the Java back end, it’s always good to know a little more about it.
In addition to articles on the Java backend, there will be articles on the Hadoop ecosystem, cloud computing technologies, search engines, and even some data mining and AI.
Overall selected some good basic class articles, can let you have a more intuitive understanding of the big back end.
List of Required Books for Java Engineers
I wrote an article about the list of books for Java engineers, but here are some of the best books to recommend.
“Computer Networks: Top down” this book from the application layer to the physical layer, feel this way to learn easier.
Graphic Algorithms, Aha Algorithms.
These two books are very suitable for learning the introduction of algorithms. The former mainly covers most common algorithms, including DP and greed, in the form of diagrams, which can be used as an introduction, while the latter realizes many common algorithms, including search, graph, tree and some more advanced common algorithms.
“Sword point offer” this book is strongly recommended, after all, it is often referred to in the interview questions of the book, of course, it is best to have the basic foreshadows in front of the look again, may gain more, this book is generally chewed before the interview. If you want to see the Java version of the code, you can check it out in my Github repository.
“Java programming ideas” this book is also known as the existence of the Java god book, but not friendly to the novice, suitable for some basis to see, of course, to read selectively. I only saw about a third of it
Java Core Technology Volume 1
This is a good book to get started with. Of course, it’s a tough book to finish, but it’s easier than the one above
Deep Understanding of the JVM VIRTUAL Machine
This book is a must-read for Java developers, and many ARTICLES on the JVM are extracted from this book. The JVM is the Java virtual machine that brings Java programs to life, so take a good look, I’ve already seen it three times myself.
The Art of Concurrent Programming in Java
This book is written by the author of the Java concurrent books, more simple than the above, suitable for the introduction of concurrent programming books, of course, before learning the principle of concurrency, or the Java multithreading to understand it.
Inside JavaWeb Technology
This book is a comprehensive overview of the Java Web, covering most of the basics of Java Web development. Obviously, you can’t cover all the details in one book, but it’s a good primer or primer for Java Web development.
Redis Design and Implementation
This book comprehensively and completely explains the internal operation mechanism of Redis, and introduces the realization principle of most single machine functions and all multi-machine functions of Redis. This book will explain the basic principles of Redis clearly, including data structure, persistence, clustering and other content, should read.
Technical Architecture for Large Web Sites
This Taobao system technical guide is very worthy of praise, can be said to be the modern architecture of a large website for a simple summary, covering all aspects, mainly about the concept, very suitable for students who have not contacted the architecture of the entry. After watching it, you can see how extensive the back-end technology is.
Distributed Services Framework Principles and Practices
The above book is about the practice of distributed architecture, while this book focuses on the principle and corresponding practice of distributed services, which gives a good description of the basic concepts, related technologies, and solutions of distributed services. It is a good book for students who want to learn the distributed service framework.
Principles and Practices of Distributed Consistency from Paxos to Zookeeper
Speaking of distributed system, we need to understand its principles, related theories and technologies. This book also explains some common concepts of distributed system from this perspective, and introduces zooKeeper, which can be said to be a must-read book for students who want to learn distributed technology.
Principle and Application of Big Data Technology
As a textbook on big data, this book written by professor of Xiamen University is very good. It explains the Hadoop ecosystem from the most basic principles, and explains the principles of each component clearly. In addition, it also includes spark, Storm and other contents, which can be said to be a very good book for getting started with big data.
Learning Resource Sharing
During the two years of learning Java backend, I have come into contact with a lot of materials, websites and courses, and made a lot of detours. Therefore, here I also summarize some good resources and recommend them to you.
0 CSDN and Blog Park, the mainstream technology exchange platform, although more and more advertising, but there are still a lot of good blog.
Importnew focuses on Java learning resources sharing, suitable for Java beginners.
2 Concurrent programming network, mainly share Java related advanced content, suitable for Java improvement.
3 Tuiku is a good technology sharing community.
Segmentfault, a bit like Stack Overflow in China, is a good place to communicate code problems.
5 Nuggets, a very geeky technical community, strong push, there are a lot of technical talent to share quality articles.
Developer Toutiao, an integrated community of high quality technical blogs, is basically a selection of high quality posts, suitable for technical learning and improvement.
V2ex, a geek community, will share not only technology but also topics related to the lives of programmers.
8 zhihu
I don’t need to say more about that.
9 Jane books
Jane’s book some technical articles are very good, you can also go to have a look.
10 Github
There are some great GitHub projects, including repositories that share technical articles.
Afterword.
After the autumn recruitment, I spent the main energy to do this public account. Of course, there are still a lot of things to deal with, such as graduation thesis, graduation trip, and knowledge reserve before work, etc. Sure enough, people need constant practice in their life. Just after passing through one level, they have to meet the next challenge. You can’t stop because everyone is moving on after all.
I hope you are still on the way to find a job. Cheer up and get the offer you want smoothly in the future.
Several links involved in this article are summarized here for your convenience.
1. CSDN Technology blog: blog.csdn.net/a724888 (Java backend technology site, sorting out a lot of Articles on Java backend technology, recommend Java students to read)
2, zhihu: www.zhihu.com/people/h2pl (zhihu active users, and hope that the future can become a big V)
3, the cow from: www.nowcoder.com/profile/3539721 (cattle from active powder, share some noodles and tips)
4, GitHub: https://github.com/h2pl (used to do their own projects, and brush the sword to point to offer, LeetCode, past pen questions)
Wechat official account
Personal public account: Huang Xiaoxi
Huang Xiaoxi has a 985 master’s degree in software engineering. She has taught herself Java for two years and has received offers from BAT and other nearly ten big factories. She has grown from a technical white to an engineer in Ali.
The author focuses on JAVA backend technology stack, and is keen on sharing programmers’ practical knowledge, learning experience, job hunting experience and program life. At present, Huang xiaoxi’s CSDN blog has more than one million + visits, and zhihu has more than 2 million fans, and the whole network has more than 10 million readers.
Huang Xiaoxi is a slash youth, insist on learning and writing, believe in the power of lifelong learning, hope to make friends with more programmers, progress and growth together!
Original ebook: Follow the public account [Huang Xiaoxi] and reply [original ebook] to receive my original ebook “Rookie Programmer Training Manual: From technical novice to Alibaba Java Engineer”
Programmer 3T technology learning resources: some programmers learning technology resources gift package, after paying attention to the public number, the background reply keyword “information” can be free without routine access.
Take an examination of one’s deceased father grind review data: computer takes an examination of one’s deceased father grind gift package, it is a few review data that use when oneself take an examination of one’s deceased father grind review, include public class and professional review video, here also recommend to everybody, after paying attention to public number, backstage reply key word “take an examination of one’s deceased father grind” can obtain free.
Technical public number: Java technology arena
If you want to follow my updated articles and share dry goods in real time, you can follow my public account [Java Technology Jianghu] an Ali Java engineer technical station, the author huang Xiaoxi, focus on Java related technology: SSM, SpringBoot, MySQL, distributed, middleware, cluster, Linux, network, multithreading, occasionally speak point Docker, ELK, but also share technology dry goods and learning experience, committed to Java full stack development!
Necessary learning resources for Java engineers: Some Java engineers commonly use learning resources. After following the public account, the background replies with the keyword “Java” for free.
This article is published by OpenWrite!