Got BAT+ Toutiao four offers; I also help the company recruit, screen resumes and conduct interviews. To the technical interview this thing has some experience, share here.
Frankly speaking, I am not very satisfied with my performance in this job interview. I did not make sufficient preparation before the interview, for I was “abused” by the interviewer for several times, I failed to be calm when facing the pressure of the interview, and I failed to fully show my accumulation and advantages in the interview. Therefore, this article is not a “successful” experience to share, but a summary and reflection of an ordinary person after a variety of interviews.
1. Preparation before the interview
1.1 your resume
While sifting through resumes for the company, I told my colleagues that a resume is the number one way to present yourself to a new employer. If you don’t write it properly, you either have a bad attitude or you don’t have the right stuff.
The norm when sifting resumes is to see “average resume, average project experience, and no shine”, about 80 out of 100. It’s not realistic for a recruiter to get all 80 people to interview individually, so if you’re one of those 80 people whose resumes aren’t written well, you’re going to be lucky if you get an interview.
I am not an experienced HR person who can give a “very beautiful” resume standard. Here is my personal understanding of the resume pass criteria:
- Complete information. Name, phone number, email address, school experience, company experience, project introduction, etc., in fact, there are a lot of big god has written N articles about resume information, I personally like Trinea shared resume template “recommended 3 resume templates and 2 big bonus tips”.
- Show your strengths. I understand that not everyone has a good school background, a good company background, a good endorsement of project experience — if you do, it’s an advantage, but if you don’t, you’re smart enough to look for ways to give yourself credit elsewhere. For example, long-term maintenance of technical blog, blog has something to say, such as participation in open source projects, such as some personal projects and so on. Of course, this doesn’t happen overnight, and it takes a lot of hard work (and don’t think about dressing up your job before you apply; a blog or Github with nothing to say will make a bad impression). My understanding is that recruiters are having a hard time, and it’s very, very hard to pick out good people from 80% of resumes that are generic, and you can use those as a stepping stone to get them out of there. (PS: If you have a great blog or Github, be sure to include it on your resume and put it in a prominent position. In the process of screening resumes, I met a person who did not write these on his resume. Fortunately, he was recommended by a friend and sent me his blog address, otherwise he would have lost the opportunity to interview only by looking at his very mediocre resume.)
- Honesty counts. Some people may ask, what if I have no good experiences and no highlights? Write down your strengths, such as being good at UI, having a deep understanding of the web layer, having worked on IM, etc. Most programmers are solid, rational, engineering guys, and an honest, down-to-earth resume is often appreciated. Don’t be grandiose or even fake, be honest and present your basic information. To write a resume of technical points to have a certain understanding, a resume written a bunch of technical points but not familiar with the results of the question is certainly very negative points. (PS: Careful with “proficient”)
Also, one of the things I haven’t done with my resume is keep it up to date. It can be difficult to include details of a project several years later when your memory is blurry. Your best bet is to update your resume as soon as the project is over.
1.2 Basic Review
For the basic review of my biggest feeling this time is that we must do early preparation at the same time to do a comprehensive and complete preparation.
For example, there are four very basic references in Java. Weak citations are common for Android developers, but when asked as an interview question, the interviewer expects you to immediately answer what the four citations are and how they are used. If you can immediately answer the characteristics of the four citations and their usage scenario, it is certainly a qualified answer, if you can not only answer the characteristics of the four citations but also connect to ReferenceQueue, which extends to the use of leakcanary, then it is a good answer — but if you are asked a question, It’s awkward to say that I only remember weak references. (Of course, in my role as an interviewer, I try to “salvage” the use of weak references by extending it to memory leaks, not judging candidates directly.)
Because in the “interview” scenario, the interviewer will assume that you have done enough preparation, for some middle and high-end positions basic questions are actually asked as a score, of course, I hope you can respond quickly, quickly answer. People are not machines. It is very difficult to recall and summarize the technical points that have not been used or reviewed for a long time into N points in a short time. So the interview of basic technology is the same as take an exam actually, allow your skill again tall, also be necessary to review well. After all, “no matter how good you are in martial arts, you are also afraid of kitchen knives” (inappropriate metaphor, haha).
Basic review can be divided into two chunks, one is Android and Java foundation, the other is computer foundation, that is, algorithms, computer networks, computer principles and so on. For the first piece, experienced you can usually do it in half a month. But for the latter piece, the time is not easy to estimate (there are a very complete variety of interviews and question banks online, smart you must have the most basic information retrieval ability, I will not post links here).
Here I take myself as a negative example: as I was hesitant about job-hopping in the early stage, I failed to make adequate preparations early, which resulted in a rush to review in a short period of time after hitting a wall, which can be imagined as the pressure.
Personally, I think the more comfortable position is that, no matter job-hopping or not, some basic things can be planned review in peacetime, especially brush algorithm questions. No matter how good your algorithm skill is, it is almost impossible to write bug-free codes quickly without certain training in the scene of interview.
1.3 Project Review
One of the big differences between social recruitment and school recruitment is that the basic questions in social recruitment are only the prelude, and the employer will pay much attention to your project experience. By asking about your project experience, the employer will expand the investigation of your skills, learning ability, communication ability and so on.
As for how to review the project, from the interview situation, you can start from the overall structure, project details, project highlights, problems encountered and scene retelling.
There is no need to explain the overall architecture and project details too much. The former introduces the architecture of your project to the other party from a macro perspective and lets the other party understand which modules or components are used to achieve functions in the shortest time. The latter is when the other person may come up with points of interest and ask you for details of the project — so be sure to keep track of the key details of the project or it will be awkward if you don’t answer.
Project highlights and problems are essential for the interview, and most interviews will ask you about these. Otherwise, the interviewer will want you to show the points that you can add to your points without knowing about your project.
1.4 Resume Delivery
After almost ready, you can start to enter the resume delivery link, I think the priority of the way of resume delivery is such: acquaintance internal push > excellent headhunter recommendation > ordinary net friends internal push > ordinary headhunter recommendation > official website delivery.
If you have a shiny, Alistar resume, a casual application will respond quickly. Otherwise, the way you send it is important.
Of course, acquaintances are the first choice. Through acquaintances, you can not only know the internal business development, promotion, overtime, etc., but also directly contact your future leader when going through the process. And why do excellent headhunters do better than ordinary Internet users? My personal feeling is that the excellent headhunter will know more about the recruitment situation than the ordinary Internet users and will be more active to help you push the process, while the really excellent headhunter has a better grasp of the overall information of the company than the ordinary employees.
Two, the common direction of investigation in the interview
Be calm during the interview, confirm the interview time and arrive in advance… I’m not going to say any of these verbose little tips, but you’re smart enough to pay attention. Here I try to summarize the common survey directions (or “question types”) I have encountered.
2.1 algorithm
For the investigation of the algorithm, from the perspective of personal limited experience, it seems that the difficulty is moderate. Especially for our client development, the algorithms are more conventional. (Well, except for some companies that care a lot about this — which is a good thing, because we have to adapt to the company’s style, not ours.)
Algorithm this I also “low hand” (this strong students can leave a message to teach a better study plan), learn more practice.
In this job application, the more frequent topics are “the largest number in the TopK” (quick sorting idea, can mention linear search algorithm BFPAT is preferable) and “TopN number” (heap sort, divide-and-conquer heap sort).
2.2 Technical Basis
As we prepared before the interview, the basic questions are basic, even if you don’t go into the Android foundation, ask you something about the computer network is not enough. We must review this with the same vigor as we did in school. As for the specific topics, I will not list them. There are a lot of questions on the Internet and a lot of questions banks on Github.
Android development can be divided into two pieces. The first piece is Android related basics. Unlike entry-level development interviews, there will be no simple “what are the four major components?” instead, you will be asked specific usage and problems. For example, the investigation of the four components will be combined with ANR (whether all four components produce ANR, how much time, etc.), process priority, startup mode and so on. Online face classics and question bank hit probability is quite high, most of the questions are familiar, after all, Android common knowledge is also these. Don’t let this get you down. A good interviewer will dig deep into details, so don’t just “know,” but “understand and master.”
The other is computer networks, computer principles, etc. For client development, computer network investigation will be more, TCP and UDP differences, TCP congestion control, TCP handshake and wave process, HTTP and HTTPS differences and so on. Fundamentals all companies are asking about this.
One area of particular concern is whether you have enough coverage, as different interviewers in different departments of different companies may have different questions. You won’t have to go over the basics until it’s complete, and there’s no guarantee you can be confident (one or two questions are fine, but none are better).
I can give a few examples, for example, I can casually ask “does the same file in drawable directory have the same memory usage when loading into memory as when loading into SD card?” (this involves the process of Bitmap decode and calculation of Bitmap memory usage). For example, how the internal flow of a HashMap put method is called (the internal flow of a HashMap, the expansion of a HashMap, etc.), the features and differences between Http 1.1 and 2.0 — these are all examples of interview questions that I or my friends have actually encountered before I have fully prepared for the interview. How many can you answer?
2.3 Technical Principles
Generally, this kind of question is asked in the basic questions to the bottom, or you yourself in the answer incidentally, such as the principle of screen drawing, several animation principles, layout loading principle, etc., is to reflect the personal technical depth.
I don’t think these kinds of questions can be solved by rote memorization. As an interviewer, there are naturally ways to find out whether you “understand” or “understand”.
It’s actually fun to go over these systematically, and you’ll easily see the deep connections between the implementations behind the technology. So this is not just an interview question, it’s also a direction we’re going to go in as a “senior developer”.
It’s better to be proactive than passive in answering these questions. When the interviewer asks you a basic question, you can of course use every word to answer the corresponding answer, but if you can take the initiative to expand to the principle level, or even implicitly show that you have read the source code, I would like you as an interviewer (leering smile).
2.4 Project architecture and module design
I also had no experience at the beginning. When IQiyi asked me to introduce the project, I briefly introduced the requirements of the project, which showed that the interviewer was not satisfied. Later, I asked an excellent former colleague about this. His suggestion was to pay attention to the introduction of the project architecture. As expected, I felt more relaxed when I met other colleagues.
Whether you are doing business development or basic technology development, you must understand the architecture of the whole project. More often than not, the interviewer will ask you to draw a structure diagram. Of course, even if the interviewer only asks you to talk about the project, you can offer to talk about the architecture of the project — this shows that you care about the architecture.
Due to my unique experience, I had the opportunity to contact the architecture of several projects in the company, and at the same time, I was able to try to design my own architecture and make various adjustments and optimizations in the new project from zero to one. However, those who have no experience in this field are not sad either. Even if you are doing a small business, you can take the initiative to understand the structure of the whole project, think about the advantages and disadvantages and consider improvements. My understanding is that students who think about architecture are more welcome than those who are purely professional.
Another is module design capability. I remember that when I met with Baidu, an interviewer was recruiting for the architecture group and asked me to design a thread-safe and efficient data processing module on the spot (I didn’t answer well at that time, and FELT ashamed). There are also some modules for facing ants. I think this is more accumulation, more open source projects. At present, I have not done a good job, and I will spend my energy to study it later.
2.5 Project Optimization
The last time I had a serious interview was when I was looking for an internship, so my initial understanding of the interview was still to show that I was “capable and capable”. However, what I learned from this job application is that almost all companies are looking for project optimization ability to distinguish between normal development and project quality development.
Project optimization can be architecture reconstruction, detail optimization such as memory optimization, lag optimization, power optimization, and development efficiency optimization, etc.
There are many blogs in this section, such as “Android Performance Optimization Model” by Hu Kai, etc., which is not enough to understand, but to practice, to have specific scenes and optimized results.
3. Interviews with major companies
I have a habit of writing down specific questions at the end of every interview with a company and solving any questions that I don’t have that day. Of course, I will not be exhaustive, mainly to record their uncertain or not sure of the problem.
Here is a brief description of the interview process I have experienced at several major companies.
3.1 iQIYI
Iqiyi is on-site, high efficiency, the same day to complete all processes. Let’s say I have about four technical sides plus one HR side.
One side is Java and Android background, the interviewer may be a Java development background, the Java aspects of the details, such as the difference between stack and heap, what information is recorded in the stack frame, etc. The Android problem is more general.
In the latter part, I paid more attention to the project. The general process was to ask a lot of details of the project first, and interspersed some questions about algorithms and computer networks in the middle.
3.2 drops
Didi side is mainly technical basis, very detailed. Git cherry-pick and Git hook, inSampleSize is a power of 2, etc.
The second and third sides are to go to the field side, mainly project-related, as well as some video-related optimizations.
3.3 baidu
Baidu’s overall job hunting experience is very good, the questions and communication of the interviewer are very nice, but it is too far to go to Zhangjiang from my residence for the interview.
On the one hand, it is based on Android; on the other hand, it pays more attention to project optimization; on the third hand, it asks about the architectural design of the project and gives a module design topic on the spot; on the other hand, it is mainly related to the project.
A lot of my reflection above is from the pit I stepped in Baidu. The interviewer would pay more attention to project optimization, structure and module design ability, and found many loopholes in my knowledge system. Thank you very much to those interviewers.
3.4 ants
The overall flow of ants is one side per week, with three or four technical sides plus one HR side.
Ant interviews tend to be a bit businesslike, but from the few interviewers you’ve met, you can sense that they’re quick and smart. For example, when you are asked to introduce a project, you will be asked for details and suddenly given a relevant scenario for you to do a module design. Like being able to tell when your answers are inaccurate when you’re rambling on.
The HR process is more professional, in addition to some conventional questions will also ask you some details of your previous work.
The content is mainly project, foundation, some interviewers will ask questions about computer network, or some general algorithm questions.
3.5 tencent
The interview process of Tencent is very comfortable and once a week, but HR will inform the whole process by SMS, which is very humanized.
It’s probably three technical sides and one HR side. The first and second interviews are technical basis, there are a lot of computer network and algorithm questions (of course, also relatively common algorithm questions), the following GM interview is not limited to the Android category, will ask “what are your strengths”, “what are the difficulties to work in Shenzhen” and so on.
3.6 Bytedance
Bytedance has three technical interviews and one HR interview. Interestingly, all three interviews are video interviews. Although the department you are applying for is in Shanghai, you do not need to go to the on-site interview.
And the whole process is very professional: before the interview, someone will call you to make an appointment, after the interview, you will be informed of the interview result and make an appointment for the next time, and during the interview, you will have a video interview on Niuke online (there is a white board on the website to write codes).
When it comes to interview content, Bytedance, or what we’re all familiar with as “Toutiao,” does feature a lot of algorithms in the interview process, but it’s not like interviewers are asking algorithmless questions. For example, the algorithm of the first question was line segment tree — a data structure I was not familiar with, but the interviewer kept guiding and investigating other things in the process of questioning, so I could better answer. Although I did not hit the optimal solution “line segment tree”, I was still allowed to pass.
Finally, I did not list all the interview questions because the interview questions of these companies are relatively routine. As long as you prepare according to what I asked above, most of them can be hit.
Iv. Feelings after the interview
Let’s start with the hiring market. Just these days there are rumors that Huawei is freezing HC, and there are also rumors that Ali is also preparing to hold HC — all rumors, true or false remains to be verified. No matter true or false, in a variety of Internet winter argument stream will indeed affect a lot of people’s judgment of the market. The repeated “Android is dying” articles are even more disquieting.
But as FAR as I’m concerned, client recruiting isn’t getting worse, it’s getting better. In July and August, there were a large number of client jobs on V2EX, industry communication groups, and linkedin. Bytedance even sent out an open letter to persuade fresh graduates to apply for client positions and offered them a three-month signing fee. Generally speaking, there are fewer jobs available on the client side. In discussions with peers, the situation of “recruitment difficulty” is far more difficult than “job hunting difficulty”. So I don’t think we should be too pessimistic.
From what it looked like it was a good experience, but only I know how hard it was… That’s why I wrote this article to review it.
Although I said the above several sections are reasonable, in fact, these are based on my blood and tears of the lessons of reflection and summary ah. (Cheap readers, haha)
Now that I think about it, THE interview experience was very rewarding. In preparation for the interview you will find how many points you are not sure, when is the interviewer “teach a person” you will find your personal knowledge system has a lot of loopholes, after the interview you can know your worth in the external environment – not in “abetting” job-hopping, job-hopping must be thoughtful, and the interview, You can do this as part of a self-testing process (of course, consider the possibility of applying to a company before you meet it, and don’t go for an interview because it costs a lot of money).
After reviewing myself, I will make some study plans to improve my shortcomings:
- It is so sad that I have to review the algorithm in a hurry every time. In the future, I will spend some time to systematically study and review all conventional algorithms, and at the same time, I plan to regularly practice algorithm problems to keep my “hand feeling”.
- Technical basis and principle. Although commonly used technical points are those, but not used but important technical points are endless, especially the technical principle of the relatively systematic articles are very few, very few (the follow-up plan to write a series of basic and principle related blogs, here is to set up a flag).
- Architectural design and modular design, which I won’t say much about, are required for all intermediate and advanced development.
- As well as some areas that are not fully understood, such as thread safety issues in complex environments that are less encountered on the client side.
The goal is to prepare for a rainy day and practice the technical points that I do not fully grasp until I have abundant confidence. I will write relevant blog updates in my personal blog later. Confidence is so important, and the slightest hint of shyness in an interview setting can make you nervous and unconfident, which can have a knock-on effect on subsequent conversations (or maybe I’m just not that good at it).
Finally, share an outline of Android to see if you understand everything well.