Click on the top “Liu Wangshu”, immediately follow

True love, please top or star

This article by the author Contribute MoShaoXia https://www.jianshu.com/p/441cf7b3d7df

preface

My level is limited, this article in view of the technical strength of the standard Ali P6, Baidu T5 or the following readers, if the big guy is not careful to point in, you can point X to skip. The details of the interview process of each company are not included in this article. The main purpose is to help people how to win the offer in the cold winter when they are like me, or to prepare for the review direction.

background

November because of company dissolution and termination, the smell of the Internet’s winter and double 叒 叕 came, what small plant a large number of failures, big layoffs or lock HC, a group of panic, panic prepared more than a week after the start, on the road to interview for induction unit as final a total of more than 20 days with cervical vertebra rehabilitation therapy (half the time during doing).

Job hunting began at 11 o ‘clock on a Sunday evening to open the resume to hunting, the next day began to be headhunter calls (a little confused about this so-called winter), according to the order of XXX sports information (engaged in BC), XX science and technology (technology direction is different, I went to Tencent Music (hanging on the phone all the time), TECHtech Times (smart home direction), Yue-dong Circle (running sport, more than 100 million users), SF Express Technology, OPPO, Baidu (stopped at the third round of technical site), Toutiao. The ones in bold got the offer and finally worked for Toutiao.

Personal profile

I graduated from 985 university with a bachelor’s degree. I have more than three years of Android development experience, half a year of iOS development experience, and a small JavaScript game development experience. Technical level, slightly lower than baidu T5 appearance (baidu met, stop the fourth round of technical). I have been working in a small start-up factory, and the total number of team members has not exceeded 90. Most of the time, I was in charge of independent development, that is, one person was responsible for one APP, or even several apps at the same time. The technology stack has accumulated a lot of breadth due to the frequent changes in the demand of products. However, due to the limited energy and fewer people, the depth is still lacking.

Interview preparation

Your resume strategy

First of all, analyze what kind of resume they want to see from the recruitment end of the enterprise. Generally, there are three kinds of people who look at the resume: headhunter, HR and technical director. Recruiters and HR focus points are similar, said put together, the two is compared commonly focus on work experience, project experience and mastery of the skill points if JD match and unit of choose and employ persons, for low working life, such as the following three to five years, will also focus on education, especially producers, such as the rigid request, undergraduate course is a lot of factory because HR see resume limited time (I guess, HR will also pay attention to your output in the past, which can be quantified best. For the technical director, the main focus is on the technical stack you are familiar with, and the project experience, may vary from person to person, this can be transposited thinking, if you want to find a teammate, what kind of person you expect your teammate to be.

My understanding of a resume is that it is a summary of your basic information to form your profile, the purpose of which is to make employers interested in you and get an interview invitation. It should be a PDF, two pages, or one page if you think you’re cool. Pay attention to typesetting to be clean, self-cognition to be objective, don’t what proficient XXX mouth, unless you are really proficient, has been completely afraid of being asked by the interviewer pour degree, anyway, I am a proficient did not write. I don’t think there is a fixed standard for what kind of education level, self-evaluation, professional skills and work project experience should be written in what order. My suggestion is to highlight their own highlights and advantages, and make full use of their strengths and avoid their weaknesses. For example, you are 985 school graduate, but the work resume is not outstanding, you can put the school in front, because MY major is not computer class, in order to prevent HR brush off, I only write XX university, undergraduate, in fact, general technical interviewers are not so important professional background, as far as I have experienced several factories interview, When I introduce myself, I take the initiative to explain my professional background, and interviewers usually understand. That if, education is not enough to shine, but before the company background cock or done the project is more famous cock, such as the number of users, a lot of daily life and so on, then you can write the project experience in the front eye-catching position. If you have a good habit of writing a high quality blog, or have open source projects with a lot of stars on GayHub, you can include them in your self-evaluation as a bonus, because I don’t have either, so I didn’t write my own self-evaluation.

Some friends asked me, how to write skill points, how much to write and what is appropriate? The mainly depends on the individual case, I can only offer some advice for reference, put your technology stack extract window, the window of your deepest have threshold technology to write and understand in the front of the plane, you can refer to the jd of the target company you need anything, you write you will go up, don’t write too much, also need not write those things at first glance, nothing technical content. For example, it is better to be familiar with common data structures and algorithms than to be familiar with HashMap and ArrayList and know the principle of quicksort. How about the project experience? And that’s using the famous Star principle, situation, Task, action, result. In what scenario, what technical scheme is adopted, what results have been achieved, generally speaking, or extract the technical highlights in the project and can reflect your ability. For example, xx optimization of application startup, startup speed is 30% faster, much better than competing products.

What are the most common interview questions for many people? Is very simple, from part of your skill points by asking questions, part of a question from your project experience, from this perspective, you are on your own design centre, want to prove your strength, you are in these two places spend more effort, thing about deep point on your resume, don’t be the interviewer asks abuse to the line. Because you can enter the interview, it shows that employers, through the resume of your “portrait” can meet the hiring needs, you only need to show in the interview, your resume is not a boast B, but the real you, so not to say how much money can take, at least the offer is stable.

Delivery channels

In this process, I almost only used Liepin and BOSS direct hiring, and I only made my resume available to the public. However, I only made an appointment with one of them, which was mainly recommended by headhunters and contacted by employers on BOSS.

High frequency problem set

The questions below are a mix of questions I can remember from the companies I’ve interviewed with. Each type is roughly in reverse order of frequency, and some are really just a series of questions to get interviewers and candidates talking.

Basic questions

Network related
  • How does Https work?

  • The difference between Tcp and Udp?

  • Http packet structure? What are cookies for? What are the response codes and what do they mean?

  • Have you implemented the Socket protocol yourself?

multithreading
  • What is the difference between Sleep() and wait()?

  • What thread pools does Java have? What’s the difference between them? What is the thread pool workflow? How does thread pooling work? What are the drawbacks of Cache thread pools?

  • Communication between multiple threads?

  • How do you use the keyword synchronize? What else do you know about synchronization?

  • What if Thread calls the run method directly? What does the start method do?

  • What does the volatile keyword do?

  • How to safely stop a thread task? How does it work? Is there a similar mechanism in thread pools?

The data structure
  • What is the difference between HashMap and HashTable? Different from ConcurrentHashMap? Different from LinkedHashMap? Internal implementation principle?

  • How does LRUCache work?

  • ArrayList and LinkedList? Why is ArrayList not thread-safe?

  • What data structure does the database index use?

The virtual machine
  • A garbage collection mechanism? What objects can be used as GC roots?

  • Compare that to Art and Dalvik

  • Java memory model?

  • Class loading mechanism? Parental delegation model?

other
  • What design patterns have you used? Why is the DCL singleton nulled twice? What design patterns are used in the Android source code or in the open source libraries you have used? – What does the final keyword do?

  • What’s the difference between static inner classes and inner classes?

  • Value passing class problem

  • Why can Kotlin mix with Java

Android questions

  • What are your highlights? What problems or problems did you encounter in the project? How did you solve them?

  • What performance optimizations have been made? How is it evaluated and specifically optimized?

  • What is the cold startup process for an Activity? What does AMS do?

  • How to analyze memory leaks?

  • View event distribution mechanism? How to resolve sliding conflicts?

  • The principle and process of custom View?

  • Handler principles? (Usually with fancy expansion)

  • What are the multi-process communication methods? Binder mechanism?

  • Is the Android lifecycle related to startup mode?

  • Which open source libraries are used in your project? How does that work? (OKhttp, RxJava, Retroit focus, if useful)

  • Android packaging process? What’s in apK? How does the signature algorithm work?

  • What plug-in techniques do you know?

  • LinearLayout layout process?

  • What about Mvp?

  • How does Android keep alive?

algorithm

  • Sorting related (quick sorting, analysis of different sorting differences, time complexity, etc.)

  • String, array related (sliding window, double pointer)

  • Linked list (reverse linked list)

  • Recursive Fibonacci sequence (stair climbing)

  • Dynamic programming

Problem solving skills

Analysis of the examination site

A technical interview is a comprehensive assessment of a candidate by a technical interviewer

From the perspective of the interviewer to analyze, in the interview process of the candidate some examination points. There is no danger of losing a battle by knowing yourself and your opponent. A wave of reverse thinking during the interview process can help us deal with the technical aspects.

  • Does the candidate’s profile match the resume

Basically see whether the candidate is honest and true, this will directly affect can not pass. The candidate’s project experience and skill points should match the candidate as much as possible. For example, the candidate says he has done XX project, but can’t answer when asked how to achieve it, or he is familiar with XX skill points, but only calls the commonly used API, and is not familiar with the details of its source code, which is mostly not given. If a candidate wants to boast B, it is also feasible to show that he can boast B. For example, the “x” module was actually done by a colleague, but you fully understand that you can answer it fluently and the interviewer will not care about it.

  • Solid technical skills and project experience matching degree

The test includes technical understanding and problem solving skills, including some details, application scenarios, implementation principles, etc. The purpose is to test the upper limit of the candidate’s skill level. The more clear and in-depth the answer, and the more firmly you can grasp the details, the better. It is not necessary to give perfect answers to get the offer, but the effect of these answers can affect the offer price most. Small factories focus on skills and project experience matching, while large factories focus on fundamentals and principles. In small companies, interviewers often want candidates to get started quickly, and they want candidates with experience in competing products or feature development, so you can prepare for that as well. Large companies may present scenarios to test candidates’ designs, which require deep knowledge and logical reasoning. The above set of questions I did not write the answer, because I think there is no standard answer for many questions, there is no need to recite the “standard answer”, excellent answer, should form their own understanding of the output, said well grounded on the line.

  • Highlights and strengths of candidates

It is usually a plus for the candidate, or the interviewer wants to open up the topic quickly, understand the candidate’s strengths, and test the candidate’s strengths to what extent. If this question is answered well, a candidate can even turn it around.

  • Ability to communicate

Those who have moved bricks in the front line should know that they usually spend less than half of their time writing code every day. They also have to spend a lot of time with the product, with the background, with the UI and so on. Therefore, communication and coordination skills are also very important. Candidates need to understand the intention of the interviewer and express logically. It is best that the candidate can establish an atmosphere for discussing technology with the interviewer. This is something that most candidates tend to overlook, but it’s important. The interviewer may not be able to hire you directly, but he or she can probably eliminate you directly. If the candidate is arrogant and technical, it is also easy to fall over, but it should not be too timid and appear to have no technical confidence, so it is best to have a harmonious discussion atmosphere.

  • Learning ability, self-drive

The general director or person in charge will pay more attention to this.

Answer your questions

  1. To understand the interviewer’s intentions, questions, that is, pay attention to the topic, not irrelevant answer, if the interviewer’s questions is not very understanding, timely and further communication, ask the question, this also reflected the ability to communicate, after all, work at ordinary times, also received some demand is not very clear, get more clear on their own needs and the excellent quality of the programmer.

  2. Try to be as clear and accurate as possible, preferably to get to the heart of the question and show that you have explored the technology at a deeper level. Also pay attention to the feedback of the interviewer.

  • If the interviewer listened with interest and kept asking questions to make them harder, congratulations, you answered them well!

  • If the interviewer is getting impatient, shorten your response — time is limited — and cut out any long-winded remarks that aren’t relevant to the question.

  • If it is found that the interviewer asks the question more and more simple, more and more conventional surface, then have to be vigilant, may be your answer before too general, make the interviewer feel you compare dishes, so don’t give you a problem, even if this kind of circumstance to offer, for the most part the price also came up and even may be in order to give you a step down, Then you’ll be sent home to wait for an indefinite notice, in which case you’ll have to go a little deeper, answer as many questions as you know, and be as proactive as possible.

Answer no (not sure) questions

  1. First of all, to have a certain thinking and analysis of this problem, do not easily say no, but also can not completely blind answer, completely not or dare to say no, honesty is also a necessary quality.

  2. How do you think about analysis? In my experience, I think mainly in terms of relational knowledge of the problem or alternative solutions. Know about problems is not very clear, try from the associated knowledge known to make reasonable speculation, such as the surface of a concept from some open source database, or from the Android source code inside a concept, but this kind of situation will have to tell the interviewer what’s going on, you are speculating, also say why speculation, avoid the interviewer think you knows nothing but pretends to know. Alternatively, you can offer an alternative solution to the problem.

Sample analysis

Some of the problems in the above set seem rather brief, so I’ll give you a few typical examples to expand on, and the other problems are similar.

What performance optimizations have been made? How is it evaluated and specifically optimized? (1) There are many ways to ask questions.

Performance optimization is usually designed to fluency, start the optimization, apk slimming optimization, network optimization, power optimization, the direction of the first give the interviewer throws several big, watch as he answered the interviewer feedback, usually the interviewer will pick one or two from these aspects, and make you interested in further, if not, Then you should give a brief answer to each area that captures the core key points. For example, to keep you talking about fluency optimization, you have to think about, how do you measure fluency? What tools or techniques were used? For example, using GPU program pattern analysis, using SM index of Tencent GT plug-in, using TraceView, Systrace, Hierarchy Viewer and so on, it is likely that the interviewer will ask, What is the principle of Caton? What can lead to congestion? This is where you have to answer the FPS, vSYNC principle. And then you have to say what techniques did you use to optimize it, and what did it look like? That number is certainly the most convincing, so we usually have to do a good record before and after optimization. After you answer questions about optimization techniques, such as reducing overdrawing and layout optimization, you might ask the difference between gone and ViewStub, and what scenes are used for each? How does it work? Why is it optimized?

  • Reflection point: when working at ordinary times, we need to pay more attention to technical details and principles. We should not only know how to use them, but also know the mechanism behind them.

Which open source libraries are used in your project? How does that work?

Answer open source library related questions, to answer well, you have to think of a few questions, these questions think clearly, can be freely answered.

  • What does this library do?

  • Why use this library in your project?

  • What are the uses of this library? What are the application scenarios?

  • What are the strengths and weaknesses of this library, compared to similar types of libraries?

  • What are the core implementation principles of this library? If you were asked to implement some of the library’s core features, how would you do it?

  • What valuable or useful design lessons have you learned from this library?

Algorithmic dependent

First of all, if you want to answer well, you still need to understand more data structure, go to LeetCode to brush more questions, and summarize more routines. I’m weak here too, so I can only give you a few insights. Of those interviewed, about half looked at handwriting algorithms on white paper. Moreover, I did not answer many questions perfectly, but I still got the offer, so I will talk about some headwind coping skills. Take, for example, climbing stairs.

Suppose you’re climbing stairs. It takes n steps to get to the top. You can climb one or two steps at a time. How many different ways can you climb to the top?

  • You should confirm the range of n with the interviewer (this shows your ability to communicate and understand the requirements).

  • After the trial, found or a face meng force, do not know how to start. Calm down, don’t try to solve the optimal solution, worry about the time complexity and so on, solve the answer first. If violent solutions to all can’t think of, then the title first narrow scope, the n explicit, such as how to climb the stairs is 3 order, this time can generally drawing as an aid to find their own way of thinking, intuitive than dry direct mind image, is likely to be such a, you can find order operation, find the way, even if the last really didn’t write the specific algorithm, Tell the interviewer what you already know and what’s blocking you, and you may pass the interview (this process shows your ability to solve unknown problems, the ability of a programmer to solve unknown problems is an important quality).

  • After you draw the graph, you realize that this is a tree structure. Based on the routine summary of the brush problem, the general tree structure problem can usually be solved recursively. And, coincidentally, it’s also a Fibonacci sequence problem. So when you start writing code, and you use recursive algorithms, you have to pay attention to some of the features of recursion, like recursive termination conditions. After you have written it, you can explain your ideas and analyze time complexity to the interviewer.

  • That’s not all. Your algorithms class will tell you that some recursive algorithms can be further optimized using dynamic programming. You take a closer look and realize that this problem can also be optimized using dynamic programming.

Interview preparation materials recommended

Books:

  • Android Development Art Exploration, Ren Yugang

  • Android Advanced Light by Liu Wangshu

  • Android Advanced Decryption Liu Wangshu

  • Understanding the Java Virtual Machine in Depth by Zhiming Zhou

  • “Android source code design pattern” He Honghui care people

  • In-depth Understanding of Android kernel Design Ideas, Lin Xuesen

Community and public accounts

  • Hon the WanAndroid

  • Liu Wangshu

  • Jade has just said

  • Guo Lin

— END — END

Related articles

  • Android interview process in the second half of 2018

  • A girl’s Android autumn recruitment interview summary (received 7 oral offers from BAT and other companies)

  • How did I get through the interview with Ali?

  • The most down-to-earth Android interview summary

  • Android interview questions, understand?

Sharing technologies such as big front-end, Java and cross-platform,

Focus on career development and industry trends.