It’s the peak of the traditional “gold nine silver ten” job-switching season. In the Internet winter, it’s important to seize the opportunity, especially now that mobile development has been severely saturated. So what should we as Android engineers prepare for? For example, whether to include unfamiliar skills on your resume, which Android components to brush up on, and whether to brush up on algorithms, you probably think about these questions carefully before the interview. Based on my own experience and understanding, I will help you sort out what you need to prepare for your resume, interview and algorithm, and share some of my experiences so that you can get an Offer from a big factory even in the cold winter (PS: This article will not cover too much Android interview questions, but rather analyze some of the soft skills of Android interview from a macro perspective. If you want to see interview questions, you can refer to: The most comprehensive Collection of Android interview questions ever).

resume

The resume plays a very important role in the interview process, so we need to pay attention to it. During the interview process, the interviewer will pay a lot of attention to the three sections of your resume: work experience, project description, and skills. If the company has no fixed topics, there will be a lot of questions about these three parts of your resume. Therefore, our resume must be concise and to the point, and do have depth and breadth. At the same time, you need to pay attention to the relevant skills of writing, first you want to let the interviewer know what your interview rating is, and then be prepared to optimize. Most of the time, a position corresponds to many levels, in the resume, your resume needs to let the interviewer give you a more clear grading, otherwise the interview process will be more passive, but also affect the interviewer’s judgment of you. Therefore, this part of the content needs to highlight their own expertise, but also to write some of the company is relatively concerned about the problem, for example, you are familiar with plug-in, hot repair, componentization, performance optimization, etc., you can clearly write, but if not very familiar with so try not to write.

In addition, the project section is also a critical part of the resume, this part of the content must highlight their own contributions and project difficulties. Many students may have been engaged in the development of requirements in the company, and feel that their project experience is not bright, and the difficulty is not so great, and they will feel that they are losing in this part of the content. Actually, each of the requirements development you would have a demand for the own design, in the process, would you consider how to minimal impact on existing code, how to fast and clear functionality, these can be as introduced the content of the project, and then consider how to put these design and thinking of you on your resume, is also a good description.

In addition, you can also write about your learning and sharing experiences, such as open sourcing a library or blogging about your development experience, which will be a plus in your interview.

The interview

For Android engineers, the interview begins with a few questions about Java and Android basics and algorithms. For the basics of Java, I suggest you take a look at three books: Code Out Efficiently: a Java Development Manual, Understanding the Java Virtual Machine in Depth, and The Art of Concurrent Programming in Java. For Android interview questions, most are related to the content of the system principle, but there are many questions without accurate answers, such as the principle of the four components of the topic, you need to explain the four components from a macro point of view, or you can also be separated, and then explain one by one.

At the same time, you need to prepare in advance before the interview, adjust your attitude, avoid answering questions in a disorganized manner, resulting in the interviewer to your logical thinking ability and language ability of bad judgment. In Android interviews, you will often be asked some basic concepts of Android, corresponding to these basic concepts must be clear, For example, handler. postDelay mechanism, touch event mechanism, custom View, how to calculate View size, container control how to layout child controls, basic database operation, Binder mechanism, LMK mechanism, etc.

If you are using open source frameworks, the interviewer will probably ask you how open source frameworks work. I recommend that you also learn more about good networking frameworks, image loading frameworks, logging frameworks, EventBus, and AAC frameworks. For relatively complex plug-in and hot repair, hot repair can go to the “In-depth exploration of Android hot repair” book, plug-in can go to the “Android plug-in principle analysis” series of articles.

Finally, the content related to performance optimization involves a lot of content. I have made a special summary and introduction before. In recent years, the company pays a lot of attention to performance optimization. However, most students may focus on business requirements development at ordinary times, and the actual performance optimization may not be very much. I suggest you find some points in the business development process. For example, when doing some common business components that need to be initialized at startup, you need to pay attention to the performance during initialization. Or how to ensure sliding performance in a complex list View when making a list page. Believe you can have oneself to take an examination of in the development process at ordinary times, can combine specific situation to tell.

After the interview, the interviewer will start with the project and ask questions about the development of the project, so you need to do detailed preparation for the project you have developed before the interview. For example, the interviewer will ask you to introduce your project, you need to reflect the difficulties of the project, your contribution to the project, the specific implementation of the project, etc., may also be asked some specific details, so the advice is to tell the truth, but must be very clear about their modules. In addition to technical interviews, soft skills may also be examined, such as cross-departmental collaboration, communication, time management, task allocation, and career planning.

Interview and examination, more or want to rely on the usual accumulation and face a play, so there is no regular summary is very important, because a lot of content is not often use will forget after a period of time, it will appear originally what they have done, because forget the details, the results can not very well during the interview process. For example, plugins and hot fixes are relatively simple in principle, but there are many pitfalls in the development process. If you don’t have a written record of some key points, you may forget what purpose a certain piece of code is for after a period of time. Therefore, after completing a requirement, summarize as much as possible the difficulties in the project, the framework used and the principle of the framework, as well as the parts that took the longest time. In addition, summarize the reasons for the most bugs, so that you don’t have to go through the code again before the interview and know the details of your project.

For review, we need to have a comprehensive understanding of the work we are engaged in. I carry out this process by drawing a brain map. I will meditate on the general knowledge system as a whole, and draw it like the picture below. Think about what you can learn from each point of knowledge, make a note of your own ambiguity, and then look at the interview questions summarized by your classmates online, and then answer each question. This is a continuous iterative process. When you can answer all the expected questions, you need to dig into the technical details and depth. For example, I developed a PLT Hook tool in my work, which may be modified by referring to the open source project and encapsulation, but I do not know the details. At this point you should do a systematics of what the open source project involves.

On the other hand, the interview is a process of learning from each other. For example, the interviewer may not be good at what I am good at, so it is a good choice to go in the direction I am familiar with, which will improve the interviewer’s evaluation of me in the interview. For example, most people answer GC questions by repeating the content in Understanding the Java Virtual Machine, which is basically ok. After all, Java virtual machine GC and Android virtual machine GC are somewhat different. If you have read about Android virtual machine GC or analyzed the source code yourself, you can explain GC from the perspective of Android virtual machine. Incremental and parallel collection with MarkSweep in Android virtual machines, Background GC and foreground GC, VisitRoot execution process, GC trigger mode, TLAB processing, principle of ConcurrentGC, Trim process of heap, memory fragment solution, Reference processing, Finalize function call, etc. If you’re familiar with a mechanic of The Android system, you can raise your interviewer’s rating by bringing it up and talking about it level by level.

Algorithms and data agencies

Algorithms and data organizations are basically the end of the interview environment, I once went to byte interview because algorithms and data structures fail the interview. Therefore, if you want to go to Dachang, the algorithm must be reviewed, in the process of many interviews will be interspersed algorithm questions. Interview algorithm questions are generally not difficult, which can be divided into basic data structures, such as array, linked list, stack, queue, binary tree, heap use. The basic operations of these common data structures must be familiar, such as linked list inversion, delete, obtain the KTH element, determine whether there is a ring, etc. Binary tree flipping, depth traversal, level traversal, tree depth, common parent node, etc. The other is a common search, sorting algorithm, these two kinds of algorithm frequency is very high, we must know their common several implementation methods, such as the sort of bubble, quick row, insert, merge, heap sort, etc.. Note that you should not simply memorize the algorithm implementation, because you may not be asked to write the algorithm directly in the interview. You may be asked to use search or sorting algorithms, which you can filter through the tags in LeetCode.

The other part of the algorithm is focused on actual combat, mainly focused on greed, dynamic programming, divide-and-conquer algorithm, deep search and wide search, this kind of algorithm relative need some skill. But interview algorithm questions usually don’t require many lines of code to complete, usually in a few dozen lines, so you can prioritize classic questions such as stair climbing, maximum suborder sums, and maximum rectangle problems. But there are also some relatively complex problems that combine several algorithms, such as the maximum path sum of binary trees, which is used with deep search and dynamic programming. In addition, it is possible to encounter some algorithm problems derived from other problems, such as HashMap may lead to the implementation of red-black trees, etc.

Data structures and Algorithms — C Pointers, Arrays, and Structures 1. Data Structures and Algorithms Interview questions Series — Strings 2. Data Structures and Algorithms Interview questions Series — Linked Lists 3. Data Structures and Algorithms interview questions Series – Binary heap 5. 6. Data Structures and Algorithms interview Questions Series – Binary Tree Interview Questions Summary 7. Data structures and Algorithms Interview questions series – Binary search algorithms in detail 8. Data Structures and algorithms Interview questions series – Basic sorting algorithms Data Structures and Algorithms Interview questions series — Quicksort for Sorting algorithms Data Structures and Algorithms interview Questions series – Summary of Recursive Algorithms 12. Data Structures and Algorithms interview questions series – Summary of numerical questions

conclusion

Today we did not cover too many specific interview questions, but explained how to prepare for the interview from a macro level, and the preparation for the interview is actually accumulated bit by bit in our daily work process, review is just a means to consolidate knowledge before the interview. The review process is mainly the arrangement and summary of knowledge points, you can think about the problems that may be encountered in the interview, and how to express.

However, I would like to say that although the preparation of “cramming at the last minute” may sometimes be useful, it is difficult to understand a knowledge point in a deeper level by “cramming” in a short time, and the breadth of knowledge also needs time and experience to accumulate. So no matter whether you need an interview or not, you need to think more, train more and summarize more in the usual work process, so that you can accumulate a lot when you need it.