Background description

This is an interview shared by a fan friend. He has been in the Android development industry for more than 5 years and has worked in three Internet companies, all of which are engaged in Android development. One of the last companies to leave was also one of the longest-serving, having worked for more than three years.

Let’s cut to the chase. 👇 👇 👇

As for the reason for leaving?

In fact, this problem has not been a single problem, it is a multi-dimensional problem. For me, it is mainly reflected in the following aspects:

  1. The technology currently in use is not very good for growth;
  2. Currently, the development space of the project in charge has reached a certain bottleneck;
  3. Think that their workplace resume needs to have a large factory experience; (This is something every programmer wants to add to their resume.)
  4. That is, frequent changes in organizational structure lead to frequent changes in business lines, which is very bad for business and requires constant adaptation.

Interview objective order

At that time, I did not have a single goal, as you can see from the picture below:

Because this interview is a big factory, so the interview preparation cycle is a little long, prepared for more than 2 months, review, study, brush questions and other operations.

The interview thinking

Interview is a long process, this process is not simply the interview so simple, it is also a process of self-examination, in this process is also pay attention to methods. Below, I will make a simple exposition from two aspects of self-examination and methods.

Self study

Technical ability is the premise of the interview, you need to know yourself very clearly, understand the position you want to interview, this is to determine the success of the interview prerequisite.

For example, I have worked for more than 4 years, and I want to interview for the position of senior Android engineer. Can MY qualifications meet the requirements of the interview position?

In fact, I was not sure about this when I was just interviewed, because I had been working in the company for three years, during which I did not know the development of the outside world, so I did the following things:

  1. Summarize the project business as a whole.
  2. Summarize all the techniques used in the project.
  3. Review common framework/system source code, such as Glide, Okhttp, Reteofit, Activity start process, Hander, HashMap, lock and so on common source code principles.
  4. To view the BOSS, check the skills required by the position.

methods

Even if you have a lot of technical skills and project experience during the interview process, you will also have knowledge blind spots and technical points that you did not take into account. When these points are concentrated, your interview success rate will be greatly reduced. So I have summarized the following procedures for interviews:

1. The interview is divided into three stages (early stage, middle stage and high offer period).

Initial stage: mainly through (BOSS, pull hook delivery), the initial stage is mainly delivered to small companies, this branch has two purposes. The first is to exchange technical points and constantly improve their technical coverage. The second is to understand the demand points of the current market.

Medium-term: mainly through the headhunter to delivery, this stage the main delivery midfielder, technical depth required for this company will be a bit more than the early company, algorithm can aggravate, at the same time, the technical level of the interviewer will be some on the high side, and even some midfielder interview difficulty may reach the level of large field, the medium-term last longer as easy as possible, very beneficial to the follow-up interview experience.

High offer period: This is the stage where you are applying to your target company, and remember to start with the least interested company as a priority. The job is also sent through headhunters, which speeds up the interview process. The above mid and early stages are more about perfecting your technical coverage and your interview feel. In order to put yourself in the best position to challenge the company you most want to work for, you will greatly increase your interview success rate along the way.

In addition to testing your technical skills, the interview is also more important, that is, communication skills, the higher the position you interview, the higher the requirements for your communication skills.

Communication is particularly important in determining whether you can articulate what you know and what you think.

Our interview process is a process of self-marketing, so when you feel that your communication skills are not very strong, then you need to summarize the following points:

For example, an excellent self-introduction, the most difficult problem encountered in the project, how you should design a structure, a brief introduction of the business you are in charge of, etc..

I suggest 15-30 days for the interview cycle.

In the initial stage: for small companies, I suggest 3 interviews per day, 4 if you have energy. Here, we need to pay attention to that there are many unreliable ones in small companies, such as those who still use Eclipse, and those who hit you before they ask about technology. You can find the opportunity to leave without wasting time. Keep your interview time to 60 minutes or less and don’t get too detailed. Conditional can open recorder, convenient after the end of the evening redisk. Three or four days into your second interview you will find that the interview is repeating itself in large numbers.

Mid-stage: I recommend a maximum of 2 interviews per day at this stage, as the mid-stage usually consists of 3 or more rounds of interviews, some of which are completed all the way. So you need to allow time for the second and third interviews to fully communicate. Do not finish the plan to leave, because the first two three aspects of the investigation is completely different, one is mainly the foundation, the second is mainly framework/source code/resume technology, three aspects will generally talk about projects, programs or ideas.

High offer period: this link needs you to wait for your chance according to the actual situation, because some big factories are finished with one long interview, some are individually arranged for each interview, but the general process of big factories is relatively slow, can be more than 1 week to complete the whole interview. They are usually between 4 and 6 sides. However, it is recommended to arrange at most two interviews a day, which will have many uncertain factors. If the interviewer doesn’t hate you, it’s usually 60 minutes or more.

The basic process of interview

I interviewed about 20 companies successively, and finally got about 8 offers. I finally chose Ali, which I want to go to. I will briefly summarize the interview content below, which can be divided into two parts. One is the frequency of the interview is relatively high, the second is the interview of these companies to share some experience.

Frequent interview question areas:

  • What is the difference between HashMap 1.7 and 1.8
  • What Map can be used to ensure thread-safety, and why? Why is ConcurrentHashMap thread safe? What is the difference between 1.7 and 1.8?
  • How many singleton patterns are there, whether enumerations are singletons, and what is the problem with not using volatile in singletons? What is the volatile property? Why enumerations are not recommended in Android.
  • Process priority
  • Output string in reverse
  • Merge two ordered linked lists
  • String removes extra Spaces and capitalizes the first character of the technical word.
  • A path that neutralizes a binary tree
  • The difference between local broadcasting and regular broadcasting
  • The low binary value changes to the high binary value
  • String array reweight
  • Binary tree Determines whether it is a search binary tree
  • The Activity startup process, the Launcher startup process
  • Glide how to achieve picture loading progress bar, Glide cache is how to design? Why weak references.
  • What’s the difference between Implementation and API?
  • The process of event distribution, and how to resolve sliding conflicts?
  • How did the event come about? Why is mFirstTarget a linked list?
  • What are the steps you need to go through to customize a View?
  • What is the life cycle of the two pages when A goes to B? When is A stop() not executed?
  • What are the different startup modes in Activity 4?
  • How many queues are there in okHTTP? What are they for? How do I cancel a request?
  • What are the differences between Rxjava’s map and flatMap operators?
  • If Rxjava sends combined tasks and intermediate tasks are abnormal, how do I handle other tasks?
  • Which scenario will memory leaks occur? How to detect and resolve memory leaks? And what’s inside Leak Cannery? Why new versions do not need to be registered with Application?
  • How to deal with the problem of mobile phone adaptation, what are the plans?
  • What new features are updated in Android9, 10 and 11? How to deal with the inability to obtain IMEI in the new version?
  • Data sequence is serialized and Parcelable
  • How componentization is layered, how components communicate with each other.
  • How to prevent the program crashes, if have to Thread UncaughtExceptionHandler whether can continue running your program.
  • Handler Looper mesaageQueue Specifies the relationship between messages.
  • Must child threads not update the UI? When will it be ok? When not. Detect at what stage the logic is initialized.
  • What is the mechanism of ANR occurrence? How to troubleshoot?
  • Say the realization principle of routing ARoute, how to deal with the problem of too many pages and too much memory.
  • When are thread pools used, how are they created, and what do the arguments in the constructor mean?

Company interview experience sharing

Fitting the future

  • The interview experience of this company is very good. There are three rounds of interviews, two technical interviews and one HR interview.
  • A: Custom View, Handler mechanism, componentization and plug-in, source code for HashMap, retrofit and OKHTTP, what design patterns are used for the source code, NDK static library and dynamic library compilation process, openGL rendering mode, what are the differences between animation in Android, talk about MVVM .
  • The second part: I will talk about which part of the previous project I was responsible for, which architecture and design mode the business adopted, which thorny problems encountered in the project and how to solve them.
  • Three: HR will ask questions about the previous company as a whole
  • In general, interviewers will ask questions based on the resume. Experience experience is to do a good review of their previous projects, organized language in advance, mining project highlights.

baidu

  • I was mainly responsible for mobile phone development, and I had three interviews in total.
  • Content of one side:
  1. Java references, and reference queues, and usage scenarios;
  2. Container loading
  3. LeakCanary
  4. map
  5. On-line performance monitoring
  6. A problem with SharedPrefrence
  7. The handwriting algorithms
  • Content of the second interview:
  1. Handler
  2. Interprocess communication
  3. serialization
  4. Animation,
  5. Native crash capture principle
  6. Questions based on projects
  7. Click event principle of Recyclerview
  8. Start an empty APK and start several threads
  9. The handwriting algorithms
  • Three aspects:
  1. Job-hopping reason
  2. Original Company size
  3. Expected salary
  4. Personal advantage
  • Personal experience:
  1. The resume must understand, and understand the principle
  2. Familiarize yourself with the project and find features you can talk about
  3. Crash capture, and resolution (Java, Native)
  4. Optimization needs to know (big factories ask)
  5. To understand from point to surface, we need to link up the knowledge

Soft international

  • Honor mobile phone built-in APP- mainly responsible for push, a total of two sides
  • One side: which projects use hook technology, how to achieve, Okhttp basic principle, click the application icon startup process, hashMap in Java7 and Java8 difference, why to introduce red-black tree
  • Second side: how is the project set up, which technical points are used, what technical points are used by Arouter, what problems are used to solve, the underlying principle of socket, how to lead the team, how is a function from the analysis of demand to the implementation
  • Personal experience: Brush around the points on the resume to the interview questions as far as possible, not necessarily is thoroughly studied, was asked about his points are not ripe, you can try to try to bring to their familiar point, I asked before for example the PMS how management package information, I said I don’t know much about the PMS, mainly studies the ams, and then understand themselves say it is good.

Hangzhou Red Flowers (three sides in total)

  • On the one hand, the interaction between Fragment and Activity life cycle, some methods of Fragment display and hide, Handler principle, View drawing process, event distribution, what APP does from installation to startup, design mode related.
  • Second side: Threads have all those states, thread locks, symmetric and asymmetric encryption, HTTPS request processes, arrays, linked lists, red-black trees, binary trees and other data structure things, and some open questions
  • HR: Feel free to answer
  • Personal experience: basic knowledge is the most important, not only to be able to use, but also to know the principle.

Jingdong Home (three sides in total)

  • Side: Thread, process, message, communication, Handler, OKHTTP
  • Second side: event distribution, Java some foundation, algorithm
  • Three sides: Talk about the project
  • Experience: In addition to technical skills, good communication and understanding skills

Apus (three sides in total)

  • A: How do you use hashMap to change the subscript of a hashMap array to the power of 2? How do you change the subscript of a hashMap array to the power of 2? Also why apply causes ANR, the drawing process of View, how to detect application frame rate, gradle some knowledge.
  • Second side: Maybe because I know more about the drawing process of view, I mainly asked this part of the content, measurement, layout, drawing, and then came up with an effect, asked me how to achieve
  • HR: The company works in Beijing and Zhengzhou together and often needs to cooperate with them. If there is a problem, how to solve it
  • Personal feelings: the foundation should be familiar with, if there is a good answer in one direction, the second interview may be in-depth in that direction

alibaba

  • I interviewed for the position of audio and video development, including 3 rounds of technical and 1 round of HR.
  • Content of one side:
  1. MediaCodec serial: MediaCodec reported an error with only the error code and no other information. How to solve this problem? What are the problems with MediaCodec? What is the difference between synchronous and asynchronous use?
  2. How do you calculate audio frames? How big is an audio frame
  3. YUV basic knowledge, compared to RGB reduced how much space, YUV each component is 0 actually render out what color, NV21 and NV12 what is the difference
  4. How does MP4 store audio and video files? What is its structure
  5. OpenSL related issues, how to use. What can I do and what can I not do
  6. Combine project issues
  • Content of the second interview:
  1. SurfaceView and TextureView
  2. OpenGL ES: What is the difference between MVP matrix left multiplied and right multiplied
  3. How does OpenGL render a View
  4. What is VBO used for? What problem does it solve
  5. Ask questions about the project
  • Three aspects:
  1. What is the structure of the project, how is it designed and why
  2. Algorithm: String inversion
  3. How do you study at ordinary times
  • OpenGL ES asks a lot about audio and video development. Check out LearnOpenGL for more on this topic.

In fact, there are several small companies of the interview, I will not explain one by one, because the length of the article is limited, so I selected a few of their own feel good companies to share with you. Fortunately, when I got the OFFER I wanted from Ali, I did not waste more than two months ‘preparation for the interview.

Recommended to share

When he was preparing for the interview, he searched and collected some documents related to Android development, interview questions, Android core notes and other documents from the Internet, and reviewed the knowledge related to Android through arithmetic exercises. He also experienced the results of the interview effect test this time. Half of the reason why I can pass the interview is that my skills are not good enough, and the other half is because I have absorbed the essence of these learning documents.

Therefore, I would like to share with you, hoping to help you learn and improve, and successfully pass the interview. If there is any need can go directly to my GitHub:https://github.com/733gh/Android-T3 reference