Author | Programmer Feng Ge
Source | Programmer Feng Ge
The Tsinghua Xueba in the learning group only had Java basics at this time last year. Later, he helped him develop a learning route to start learning and participated in the spring internship. .
Personal situation
TOP 2-985 Master. Bachelor's degree in electronics, master's degree in communication. Basically, what the laboratory does is communication. In terms of computer basics, I learned a little bit of C++ in my freshman year, more accurately C with classes, and a little bit of machine learning in the graduate level.
In the autumn recruitment of 2021, I got offers from Tencent WXG, Ant Financial, ByteDance, Meituan, Kuaishou, Shopee Singapore Development Post, and they are basically SP/SSP.
Job selection
When I was in the first year of research, I planned to go to an Internet company to do technical work, and I have been entangled in the development/algorithm. After all, it was when the AI industry was taking off rapidly. I have also seen many related posts on Zhihu. Later, considering that the algorithm is getting more and more volume, many non-subject majors can be transferred to the algorithm post, and the competition pressure is high. In addition, the laboratory tutors did not let internships, and it was difficult for non-disciplinary classes to produce algorithm top-level articles, and finally chose the development position.
In fact, in this year's autumn recruitment, the sentence "choice is greater than effort" was once again confirmed . The classmates who choose to develop by my side basically have offers from big factories such as BAT. However, due to the small number of hc, high competition and extremely serious internal roll-out for algorithmic positions, it is more difficult to get offers from major manufacturers than development. For example, one of my roommates faced Tencent's algorithm job on three sides before being told that there was no hc in the department.
In addition, the AI industry has become calmer year by year, and many AI companies must let their businesses land in order to achieve corporate profits. Secondly, the salary of AI jobs is not as crazy as in previous years. Many big factory algorithm jobs are basically the same as development jobs. Therefore, if you are not fully competitive, it is still recommended that you choose a relatively easy development position, except of course the big guys.
In addition, in the choice of C++/Java, I chose Java, which is in greater demand. In fact, in school recruitment interviews, the interviewer does not care about your language. Just choose a language and master it well. What language is needed in the formal work can be learned after entering the job.
Learning route
After I decided to take a development position, I referred to the learning experience of many people who came over, starting with Java basics, then Java concurrency, JVM, MySQL, Redis, and finally the frameworks commonly used in the Java back-end ecosystem, such as Spring, Zookeeper, SpringBoot and many more.
In addition, computer networks, operating systems, and data structures and algorithms are also required knowledge points in interviews, which require effort to learn. Especially in terms of algorithms, during the interview, there will be an assessment of writing code questions on the online web page, and it will take up more than half of the interview time, which requires intensive preparation.
In terms of algorithm learning, after simply flipping through the "Algorithm (Fourth Edition)", you can scan "Sword Finger Offer" several times. At this time, you can basically deal with the interview questions of the small factory. In addition, it is recommended to finish the "Programmer Code Interview Guide: The Best Solution of IT Famous Companies Algorithm and Data Structure Questions (Second Edition)" by Zuo Chengyun. At this time, Dachang’s interview algorithm questions are basically no pressure, and the written test is also Basically it can pass. If you have free time, you can take a look at the Leetcode classification exercises summarized by the predecessors on GitHub. I refer to https://github.com/dingjikerbo/Leetcode-Java. This repo is very comprehensive, and the evaluation of the algorithm will no longer be a difficulty in the interview after brushing.
Interview preparation
During the interview, in addition to the hard work of algorithmic questions, more than 80% of the knowledge points are frequently tested, which is what everyone calls "eight-legged essay". Before the interview, you can go to Niuke.com to check the company's interviews, or the pdf version of the interviews compiled by others. After reading https://github.com/jianghui-galaxy/Interview-Notebook and the Java tutorial given by Feng Ge several times, I am thoroughly familiar with the common "eight-legged essays", and the basic knowledge questions and answers are basically stable.
In addition, if there are items on the resume, it will also be a bonus item. The interviewer will inquire about the items written on the resume in detail, so don’t write every sentence on the resume, especially if you don’t know anything about it, don’t write it on the resume.
However, it should be noted that the main highlights of the project should be pointed out in a refined resume. If it is a project done during the internship, it can also indicate the project benefits (such as reduced service delay, increased ROI, increased concurrency, etc.), etc. Wait.
If you don’t have an internship experience, you can also refer to many project tutorials/videos on the Internet and make one yourself. After you figure out the main difficulties in the project, write it on your resume. I would like to thank Brother Feng for checking my project!
Spring recruitment process
The following summarizes the course of my spring recruitment.
Byte beating
one side
-
Algorithm question: Binary tree depth (recursive + non-recursive two methods), the best time to buy and sell stocks
Project question
Two sides
-
Algorithmic questions: circular linked list, handwritten quick sort
Project question
TCP three-way handshake, memory paging segmentation mechanism, database index, Java memory management
Three sides
-
Algorithm question: subset
Design question: Short link URL design
Ant Financial
Since Ant Financial took 1.9 A in the written test (a total of two), there were no algorithmic questions on one or two. In addition, Ant was interviewing on the phone. Suddenly a phone call came when he was eating hot pot at home. Later, Pi Dian Pi Dian cleaned up and went to the interview.
one side
-
Project question
Common eight-legged essay
Two sides
-
Laboratory work, article questions
Didn’t ask a little about Java-related content, it may be a better answer
Three sides (intersection)
-
Algorithm question: right view of binary tree
Ali's intersection should be the process that must be followed to rank A, and the interviewer is more familiar. Mainly I asked what the laboratory did. Then came out an algorithm problem, let me dictate my thoughts. After the idea is ok, let me write it after the interview and send it to him
Tencent
I originally voted for WXG for the internship. Later, WXG called me and asked me if I would like to go to Guangzhou for an internship. It was too far away and refused. Later, the resume was aged by PCG, and the interviewer said that he mainly worked on Tencent Sports. I feel that the department is relatively ordinary. After passing the first and second sides, I refused the follow-up interview and prepared to fight WXG again in the autumn. Tencent’s interview is also very hard-core. Every time the interviewer opens the IDE to write questions, and 90% of the interview time is to write algorithm questions...
one side
-
Algorithmic questions: string to integer, rotation matrix, flip binary tree, handwritten quick sort
Two sides
-
Algorithmic questions: Edit distance, the longest substring without repeated characters, rand5 implements rand7
When I called on three sides to make an appointment, I refused
Meituan
Meituan also did a written test in advance, so it didn’t take algorithmic questions during the interview.
one side
-
In-depth questions about Java language related features, including reflection implementation principles, Java @ annotations, etc.
Since the project mentioned distributed locks, I discussed distributed locks with the interviewer in depth... It is worth mentioning that I wrote on my resume that distributed locks are used to prevent cache breakdown, and I have seen many related issues before the interview Technical articles. But the interviewer said no. I was stunned at the time. I knew that the interviewer was wrong, but instead of arguing with the interviewer, I said "I will understand it after the interview." I gradually faded out of this topic and moved. To the new discussion point.
Two sides
-
The interviewer did not ask about Java-related things all the time, and kept asking about the work in the laboratory. After chatting and chatting, I found that the interviewer was also born in communications. Huawei came to Meituan after a few years of work. Then we talked about stocks for a long time...
Meituan’s technology has only two sides, and hr’s letter of intent dragged on for a long time... After I took the initiative to ask the interviewer, hr called to communicate with me that night.
quick worker
one side
-
Algorithm question: a typical dfs, linked list intersection problem (see Zuo Chengyun's book)
Ordinary eight-legged essay
Two sides
-
Algorithm problem: Combine K ascending linked lists, ski resorts (dfs)
Three sides
-
Ask the work of the laboratory...
Chunzhao only met with the above companies, and then chose to practice in ByteDance.
Autumn Recruitment Course
Byte beating
Reply
I briefly reported on the work done in the internship, and then the rating was better, and I added a round
Turn positive
-
Design question: The specific scenario is a bit troublesome. The main problem is to randomly select one or more numbers at a time according to the known probability distribution. The solution is to determine the position of each point in the interval [0, 1) according to the known probability distribution, and randomly select a number in [0, 1) each time to see which two points the number lies between. can.
Wrote a simple SQL statement.
Ant Financial
Since the spring recruitment passed, the autumn recruitment was finally through train, and there was only one round of interviews. Mainly introduced the previous internship work in ByteDance.
Tencent WXG
There are a total of three rounds of interviews, all of which are very hard-core, and each round is basically two hours.
Departmental side
-
Directly posted three Leetcode links. One easy, one medium, one hard.
I asked in detail about TCP, paging segmentation, Linux, consistent hashing, cookie/session, MySQL, Redis, and so on. I asked each knowledge point in depth, and I asked until I couldn't. . . I felt that it was the most difficult interview of the autumn recruits, and I still had lingering fears after the interview... After the interview, the interviewer directly informed me that I passed the interview, entered the interview session of the interview committee, and reminded me to prepare for algorithmic questions.
Face to face
-
The first question: The fastest way to find a sequence of numbers with a repeating number> 1000 in an ordered array is directly second
Question 2: Fill in the blanks for string wildcard matching. It hurts a little bit at first, and finally wrote it after thinking about it for a long time
Question 3: Reverse order, direct seconds
The fourth question: flip the linked list, direct seconds
Question 5: A physics-oriented question. Probably the meaning of the question is that a distance is divided into two sections: a flat road and an elevator. You can run for t seconds. Ask you whether it is cost-effective to run on the elevator or to run on flat roads
He immediately threw me a link to a Tencent document and said he would connect it again in an hour. There are a total of 5 questions, and they are all done at the end.
After the interviewer passed the test paper, there was no problem, and then asked some simple questions about paging segmentation, database indexing, and Redis.
Face to face
-
Also directly open the IDE to write questions
Question 1: Design an algorithm with probability distributions of 0.1, 0.2, 0.3, 0.4. Similar to byte plus face-to-face questions, because I have encountered it in the interview before, I will kill it directly. Then the interviewer asked to change it to choose two numbers with replacement each time? Just slightly modify the original code. In order to verify the correctness of the code, I also typed a probability distribution table, which was in line with expectations.
The second question: similar to the Dutch flag issue, direct seconds
Meituan/Kaishou
It is basically the same as the content of the internship and will not be detailed.
Shopee Singapore
one side
-
算法题:Implement a data structure to support two functions add()/search() efficiently
Use the Trie tree directly, the search() function gives a case with a wildcard character'*', so when the search function is written, it is ok to write a dfs
Design question: Design a library borrowing system.
The main question is the design of database tables and Java classes. First, think about what needs are there, and then design the tables according to the needs.
Design question: login system design
It mainly talks about the cookie/token method to identify users, the password is hashed and stored after adding salt, etc.
Two sides
-
算法题:Given a string, find out the length of the longest substring which contains at most two distinct characters
Sliding window + HashMap directly seconds, and then the interviewer asks what to do without HashMap? Pass after rewriting the original code + debug
Algorithm problem: a linked list, first print odd digits in order, and then print even digits in reverse order
Direct spike. The odd digits are printed in order first. Use the recursive stack to store each even-numbered bit, and then print the position after the recursion returns.
Three sides
After briefly asking about the technology, the interviewer introduced their department, mainly chatting.
Autumn recruit summary
1. Pay attention to algorithms: It can be seen that most of the company's school recruitment interviews emphasize the assessment of algorithmic questions, and the assessments are basically common questions. So on the algorithm, we need to work hard to prepare. In addition, attention needs to be paid to the handling of boundary conditions. I reviewed "Sword Finger Offer" three times before and after, read Zuo Chengyun's book twice, and also did 400+ questions on Leetcode.
2. Basic knowledge: 80% of the interview knowledge points are common "eight-legged essays". Find a corresponding summary material before the interview and understand it thoroughly.
3. Try to find someone to refer to: some companies can waive the written test and directly enter the interview process, and you can directly refer to the head of the department you are interested in. If you don’t know the brothers and sisters, you can inquire about the internal push information on the school bbs, Niuke.com and other platforms.
4. Spring recruits are very important! Spring recruits are very important! Spring recruits are very important! Some companies (such as Alibaba) can get the green through train for the autumn recruitment after you pass the spring recruitment, and the autumn recruitment directly participates in the final interview. Moreover, the interview difficulty of spring recruits is often lower than that of autumn recruits. In addition, Spring Recruitment can prompt you to check the missing and fill vacancies in time to prepare for the Autumn Recruitment. Therefore, regardless of whether the intern is not allowed by the instructor, it is recommended to submit the next spring recruit to participate in the interview.
5. After writing the algorithm questions, be sure to write a few test cases for self-test! If there is an error, it can be found in time, and if there is no error, it can also leave a good impression on the interviewer.
6. The autumn move must be delivered as soon as possible, and do not wait until "completely ready" to deliver. One is because some posts have less hc, the earlier the delivery, the easier it is to occupy the hole. The second is that there will never be a so-called "completely ready" state in an interview. You must have confidence in yourself.
7. During the interview, you must communicate with the interviewer, and don't write code alone. If you have poor communication skills, you will be rejected by the interviewer.
点分享点点赞点在看