In the interview this month, I read a lot of articles, but also brush a lot of interview questions, but really deep, suitable for 4 years and above Android senior engineer content is very few

In the interview preparation stage, the author prepared for about three months, combined with relevant materials and source code, completed a series of deep learning and output

  • In the system source level, including system start, application start, four components related, plug-in;
  • In the aspect of concurrency, completed ConcurrentHashmap, CopyOnWriteArrayList, CountDownLatch and other related source code analysis, and thread collaboration related content output
  • In the plug-in aspect, completed the plug-in overall program summary and output, and VirtualApk core source code analysis; For details, please click here to view **.

Interview Preparation Tips

If there’s a tip for preparing for an interview, it’s my experience that depth is more important than breadth

How to enhance the depth of knowledge?

For high-level interviews, even the simplest questions (such as the cliche Handler) will have extraordinary depth, and the so-called depth, that is, the understanding of the system source code. Therefore, the study of source code is very important

My learning methodology is input + output. If there is no output, firstly, I will forget it, and secondly, I cannot internalize my knowledge. Everyone reads technical articles, but are you still impressed after two days? Most of the time, no

Therefore, whether it is to organize notes or write articles to share, output is very necessary. The process of communicating with others is also a process of constant internalization and growth

In the interview of senior engineers, the depth of the interviewees’ understanding of technical problems is generally emphasized. My suggestion is to carry out deep learning in several points, such as system source code, plug-in and so on

When you’re writing your resume, make it a point to show the interviewer that this is one of my strengths and be sure to ask me!

How to increase the breadth of knowledge?

Will tell with respect to breadth, basically see the accumulation at ordinary times actually, but the review of interview is indispensable also

In terms of content, including performance optimization, multi-threading concurrency, JVM virtual machine related, algorithm problems, design patterns, network related knowledge, and so on;

In terms of performance optimization, there are some mature open source libraries for reference, such as Tencent’s Matrix and Didi’s Booster. Click here for more information.

For specific optimization details, relevant open source libraries and related principles are involved. Tripartite libraries can be referred to as:

  • LeakCanary, memory leak detection
  • BlockCanary, UI stuck monitoring
  • Glide, Bitmap memory optimization and prevent memory leaks
  • Jetpack, the official support library, avoids memory leaks
  • AspectJ, AOP aspect programming

Different job directions have different emphases, which will be covered in the following sharing.

In the interview of big factory, there are also some interviewers (especially one side of the time) will take some common interview questions to investigate, such as UI drawing, custom view, touch event distribution and other high-frequency test points should also focus on review and master.

So, if you don’t have directions to prepare for an interview, it’s ok to warm up with a selection of interview questions.

I compiled a list of interview questions during the interview, and posted here for your reference. If you need a full set of interview questions, just click on me.

How to prepare a resume?

In the process of chatting with the HR of Liepin.com, we talked about their paid resume modification program. In fact, writing a resume is not difficult, difficult is how to write a suitable for their own, can highlight their own advantages of high quality resume.

Here I assume that we have finished the preparatory work for the interview, and now what we need to do is to put the full preparation, depth and technical content in our resume.

Use your resume’s best areas

When preparing a resume, consider how HR (or hiring) reviews it.

The golden area is the beginning of the first page of a resume and, in my experience, is usually reserved for a brief biography (education, self-statement, etc.) and key technical points.

Let’s take a look at an example

Zhao XX | Android Engineer

Age: XXX | experience: X years | Blog: XXXX

Phone/wechat: XXX | Email: XXX

Education background: XXX (20XX /9– 20XX /6)

Professional Background: XXX

Personal profile

Since 20XX, I have been engaged in Android development for more than x years. I have experienced XXX development, XXX development, XXX project research and development, XXX program research and implementation, and XXX customized Android device application research and development.

I have accumulated certain project experience and technical strength, strong technical ability and learning ability, have certain research on XXX, XXX, XXX related source code for in-depth research and learning

The core focus of your resume

For HR, the most concerned points are as follows

  • Whether the major meets the requirements
  • Whether the degree meets the requirements
  • Whether the working years meet the requirements (there is a certain limit on the working years for advanced drivers, experts and senior engineers)
  • Age match

For the recruitment department, the most concerned points are as follows

  • Whether past projects match
  • Are you interested in the department’s projects
  • Have a certain depth of field research and learning ability

Therefore, a clear description of these concerns in the gold zone is one of our goals.

In the Sample above, the author put age, working years, educational background and professional background in the most prominent position, in order to let HR see the information they need to know at a glance.

In the personal profile, the author briefly introduces his work experience, project experience, and his in-depth research field, which is to judge whether it meets the needs of the employing department during the review.

What should be noted here is that, highlight their strengths, strengths and circumvent weaknesses, no value (or resume reviewers do not care about, or their own weaknesses) content should not be put in this area as far as possible.

Professional Skills

Once HR (or the employing department) has preliminarily determined that the candidate meets the requirements, it looks at expertise points and project experience.

For the interviewer, in the interview process, the interviewer will focus on the resume of professional skills, we write skills, generally use the understanding, familiar with, proficient in such words to describe.

In the author’s opinion, even if you are very proficient in a certain aspect, you need to use some smooth descriptions to express it, such as having a profound understanding of XXX, having your own understanding of XXX, and having certain practices and unique insights for XXX, so as to avoid the interviewer asking too deep questions.

What does the skill point say?

In terms of specific skill points, the author suggests that they can be divided into two parts: Java and Android (if you have native development experience, it can be written according to the situation). In terms of specific details, you need to fill in according to the degree of preliminary preparation.

For high open, the so-called Java basics are far from basics, but involve JVM memory areas, the JMM memory model, multithreading concurrency, encapsulation inheritance polymorphism, and how and why the JVM is implemented.

For Android basics, try to dig deeper. For example, when it comes to the four major components, one of the most commonly asked questions is how an Activity starts (or how an application starts).

There are many points that can be further investigated:

  • Test your understanding of the source code
  • How does AMS communicate with Zygote and fork out processes
  • How does AMS communicate with the application layer
  • How is ActivityThread started
  • What exactly is ActivityThread for
  • How is the main thread Looper initialized
  • How does AMS bind the Binder objects of ActivityThread
  • How is binder initialized, how does it make cross-process calls, how does it transfer data across processes, and what are the limitations

For more details, please click: Interview essential: Android Activity start process source code analysis.

This is why it is recommended that we focus on the depth of preparation in the preparation stage. If you read the relevant system source code, I believe that these problems can be easily dealt with.

In terms of professional skills, it is impossible for the author to cover all of them. Here are some skills that you can choose according to your own situation.

Java related

  • Containers (HashMap, HashSet, LinkedList, ArrayList, array, etc.)
  • The memory model
  • Garbage Collection algorithm (JVM)
  • What’s the difference between garbage collection and calling System.gc()?
  • Class loading process (need to see more, more understanding, more important for hot fixes and plug-ins)
  • reflection
  • Multithreading and thread pools
  • Design patterns (Six basic principles, design patterns commonly used in projects, handwritten singletons, etc.)
  • Four Java references
  • Java generics
  • The difference between final, finally and Finalize
  • The difference between interface and abstract class

Android

  • The custom View
  • Event interception distribution
  • Solved some performance problems and applied them in the project
  • Performance optimization tool
  • Performance tuning (Tell me about a performance tuning you did on your own project)
  • Http[S] solutions to slow requests (DNS, carry data, direct access IP)
  • How to cache itself (LRUCache principle)
  • Graphic image correlation: OpenGL ES pipeline flow, understanding of EGL, Shader correlation
  • SurfaceView, TextureView, GLSurfaceView differences and usage scenarios
  • Animation, Differentiator, estimator (View animation and property animation in Android – Brief book, Introduction and Use of Android animation)
  • MVC, MVP, MVVM
  • Principles and applications of Handler, ThreadLocal, AsyncTask, and IntentService
  • Gradle (Groovy syntax, Gradle plugin development foundation)
  • Hot repair, plug-in
  • Componentized architecture idea
  • System Packaging Process
  • How does Android store data?
  • SharedPrefrence source code and problem points;
  • Sqlite related
  • AMS, PMS,
  • Activity startup process, App startup process
  • Binder mechanism (use of IPC, AIDL)

The above content is placed in the open source project”Lot”, free to share, friends in need to take.

How to handle an interview?

We’ve talked about how to prepare for an interview and send out your resume, but let’s start with the interview itself.

For technical interviews, some people may not pay attention to the so-called skills; The skills that THE author says here, is not what strange skill lewd crafty, but in front of the preparation part has been relatively complete under the circumstances, how to better reflect their own technical strength in the interview.

How to better communicate with the interviewer?

Generally speaking, the first and second interviews in big companies will be conducted online, especially in the current situation of the pandemic, we may face more online interviews.

Here are some interview tips from both online and offline perspectives.

Online interview

In the process of online interview, various problems may occur, such as unstable network, poor communication with the interviewer and so on.

For online, we should be prepared for the following:

  • An online interview will last 1-3 hours (one side plus two interviews), so it’s important to have drinking water ready. Imagine talking for 2 hours without drinking water!
  • Online interviews are inconvenient. In order to better demonstrate your technical skills, try to make an appointment with HR/ interviewer for an offline interview.
  • Different interviewers have different styles. Some prefer to interrupt while others prefer to listen to the interviewer before asking questions. Online interview environment, more aggravating communication inconvenience, so we should communicate with the interviewer in advance, more smoothly complete the interview process; Before the interview, I always tell the interviewer to interrupt me and ask questions if I don’t make anything clear.
  • When I go to an online interview, I usually go to the interview room half an hour in advance to wait for the interviewer, not only so that I can be in a better state to deal with the interview, but also so that I can take an online test in advance.
  • If the network quality is poor, change to voice interview. The network quality may be caused by the interviewer or the interviewer. Switch to voice interview only when poor network quality cannot be solved.

Offline interview

An in-person interview solves most of these problems, so when you can make an in-person interview, make sure it’s a priority.

Pay attention to the details of offline interviews:

  • First, we can have more buffer time to deal with the unexpected situation on the way. Second, we can adjust our state after arriving at the interview, reading the technical article or our own interview summary.
  • Although we arrive early for the interview, don’t go in too early. Most large companies need to book a conference room for the interview, and the interviewer may have other work to do outside of the scheduled time.

How to guide the interviewer to ask questions?

Guide the interviewer to ask questions, one is to make an issue of the resume, put their own prepared more in-depth content in a prominent position, plus a deep understanding of XXX and other descriptors; The second is to answer the interviewer’s other technical questions, as far as possible to mention some relevant, their own better prepared content.

How to deal with questions you don’t know/don’t know?

We prepared a lot of technical depth skills in front of us, such as plug-in, multi-threading, multi-process, Android system source code, etc., but the questions we encountered in the interview were very strange, because different positions have different requirements.

Take the Android system source code, the source code of the complex, decided that we can only find a few direction and the application of the more closely related to the amount of direction to study, such as four components, application startup; But when I interviewed a security company, the interviewer saw that I wrote on the resume Android system source code has a certain depth of research, said that you talk about the Android system application installation process.

This aspect of the problem I did not prepare, also did not read this aspect of the source code, for this situation, there are two answers:

  • Expand thinking on the basis of the question answer here is mainly to see the type of the question, if the code understanding ability and design ability, can do the expansion of the answer
  • Frankly, I don’t know much about this area. If it is to investigate fixed technical points and there is no room for expansion, I can tell the interviewer where I have conducted in-depth study and guide the interviewer to ask questions

The last

If you want to go to a good company, but the current hard strength is not enough, I think it is necessary to try, the level of technical ability can determine how far you go, the level of platform can determine your height.

If you’ve worked your way into the company of your choice, don’t slack off. Career growth is like learning new technology.