Android development for eight years, interview 50+ company experience summary: Android interview process needs to master the technology

Preface

This article hopes to give some reference to friends who want to quit.

With the increase of working hours and the accumulation of technical experience. The original company may not be able to continue to provide you with the development space and prospects you want. To be straightforward, there are wives, children, and old parents at home. We need higher salaries for them to lead a better life. So job-hopping is a good choice.

At the end of last year, I had the idea of ​​quitting. Then I ran many interviews with many companies. It took nearly two months before and after. I got offers from Huawei, Meituan, Qunar and some lesser-known companies.

CV is important

The first is to prepare a resume, and then to pass the interview questions.

In fact, the preparation of your resume may need to pay attention to several points:

1. The title is directly filled in according to the format of name-years of work experience-application position.

For example, Xiao Ming-four years of work experience-senior engineer in Android development. Because you need to know that HR screening resumes is very fast, you have to let him see the information he wants to see the first time. HR is most concerned about working years and positions at the beginning. It will be much better if you write it in the largest font directly in the title bar than many people have introduced the half-day project at the end.

2. Write personal information first.

In fact, there is no need to write a lot of things in the personal information column. The most important ones are the name, contact information, and gender. If the school is a prestigious school, write it here. If the undergraduate major is computer science, you can write it here. Write at the end, because the first thing is always the first thing you see, and it is also your most competitive and show-off capital.

3. Those with technical blogs and github open source projects must be written first.

This is a living example. When I was interviewing Huawei, the interviewer deliberately went to the blog on my csdn. Then it was said that the writing was good, leaving him a good impression, so this is an absolute bonus, it is best to write it at the top.

In fact, I didn't brush too much on the interview questions at the beginning, that is, I simply looked at some basic knowledge points. Because I always feel that the more I watch, the more I can’t remember, and the most important thing is that you don’t know what the interviewer will ask. Instead of blindly looking at the knowledge points, it’s better to go out and find a few small companies for an interview to find out the feeling and know the interview The officials will inquire about which places, and then come back to take a targeted look.

The skills you need to master in the Android interview process

An interview has a process. Take the Android interview as an example. The content of the interview cannot be all Android questions. There should be questions related to programming basics. I classified the questions in the Android interview as follows:

category description
Data structure and algorithm Familiar or know
Java Proficient
Android Proficient
Design patterns and architecture Familiar with

Generally speaking, an Android application development position does not require too strong data structures and algorithms, but this does not mean that candidates can completely do not understand data structures and algorithms, so you still need to understand a little bit about data structures and algorithms. Since it is not necessary, it doesn't matter if the answer is not good during the interview process, as long as the following Java and Android related questions can be answered perfectly. Some students and I reported that the interview was hung on the data structure and algorithm. This should be rare in social recruitment. This is mostly because Android’s questions have not been answered well. This is social recruitment and school recruitment. The difference between the school recruitment depends on the basics, and the social recruitment depends on the technical depth and business.

Regarding design patterns and architecture, in fact, the requirements for this in intermediate and senior interviews are not particularly high. It is basically ok to be familiar with common design patterns, such as singleton mode, engineering mode, and observer mode.

Next, I mainly describe the requirements for Android technology in the interview process. Next, I divided the Android technology categories as follows:

category description Level required by developers
Basic knowledge points Proficient Elementary and Intermediate
In-depth knowledge Proficient Intermediate to high level
Details of basic knowledge points grasp advanced
System core mechanism Familiar and master Senior, senior
Trivial knowledge To understanding All levels

For most interviewees, everyone’s target position should be mid-to-senior level. The knowledge points for intermediate positions (Baidu T4) are: basic knowledge points and in-depth knowledge points; the knowledge points for senior positions (Baidu T5) are : Basic knowledge points, in-depth knowledge points, details of basic knowledge points and core system mechanisms.

  1. Basic knowledge points,
    such as how to use the four major components, how to create a Service, how to layout, etc. This kind of knowledge requires proficiency and is not difficult.
  2. Slightly in-depth knowledge points,
    such as AIDL, Binder, multi-process, View drawing process, event distribution, message queue, etc. This kind of knowledge is also necessary for senior developers, but I believe that many candidates cannot be fully aware of these issues before the interview. These questions are basically common questions in the interview process, and they are also questions that must be mastered for senior positions. If these questions are not solved, they cannot meet the standards of Baidu's senior engineers, so it is impossible to pass the interview.
  3. The details of basic knowledge points,
    such as the start mode and flag bit of the Activity, the stop problem when the Service is in the start and bind states at the same time, the synchronization and asynchronous problem of AsyncTask, and the limitation of use, there are many such problems. You may not pay attention to this kind of knowledge during the development process. This will lead to a problem, that is, there is no problem in developing the application, but the interviewer only needs to ask for details or special circumstances during the interview. . This type of question is also something that senior developers need to master. Some interviewers like to ask some seemingly tricky questions, but it’s not good if the candidate can’t answer them.
  4. System core mechanisms
    such as the message loop of the main thread, how the main thread interacts with AMS across processes, the working methods of various services in the SystemServer process, and the working principle of AsyncTask. This kind of knowledge is also recommended for advanced developers, because they can allow developers to understand the Android operating system. Not all Android interviews will involve these types of questions, but large companies with high technical content may be involved in such questions.
  5. Trivial
    knowledge points I define these knowledge points as some important but not technically difficult questions, such as how to open a webpage, how to call, how to send text messages, how to locate, multi-touch, etc. These types of questions are often It's not easy to remember, but you can check it when you need it. This type of question basically does not appear in the interview process.

Based on your own Android learning process and interview experience, are all the questions encountered in the interview included in the above 5 categories? Regarding 1 and 5, I believe that everyone is fine, but comparing the content in 2, 3, and 4, can everyone cover it well? In other words, if the contents of 2, 3, and 4 are well mastered by everyone, can the interview questions still stump us? As mentioned in the previous analysis, technology is the key factor in the success of the interview. What you need to do before the interview is to do a good job of technology and pay attention to communication and attitude. Isn't it easy to pass the interview?

This is my 【GitHub】need study notes and advanced route, you can click on my GitHub to view.


How to learn the skills needed in an Android interview

This mainly refers to the technologies in the above three categories 2, 3 and 4. To be honest, this is not a very simple matter. So how to learn, let's talk about it first, and then there will be a series of blogs to introduce the learning process of these technologies in detail. First of all, we must read the source code, because many questions in the interview need to find answers from the source code. Second, we must actively learn some technologies that are not encountered in normal work. Due to project reasons, it is impossible for us to release all of Android through the company’s project. This is an important technology, especially for some small-scale projects. At this time, take the initiative to learn.

Someone may ask: "How do I know what needs to be actively learned?" This is indeed a problem, but I have made some examples in the previous classification. You can try to learn those techniques first, they are all very important And technical problems often appear in interviews. In addition, you should pay attention to accumulation during the learning process, such as blogging and taking notes. At the same time, it is also a good choice to open source on Github.

In addition, in order to learn the skills required in the Android interview better and faster, you can learn about my Android advanced learning route! (Attached with interview questions and study materials)

At present, the mainstream language for Android APP development is the Java language. The biggest feature of the Java language is to increase the possibility of software interaction. It can be said that almost all applications on Android phones are written in the Java language.
For audio and video, complete Android intermediate and advanced advanced or complete outline, you can go to my [ GitHub ] to see

Knowledge points:
1. Java serialization, generics, reflection
2. The underlying principle of virtual machine
3. Android memory principle
4. Java high concurrency principle detailed explanation
5. Compile-time technology mastery and actual combat
6. JDK advanced dynamic agent
7. Advanced data structure And algorithm
8, Java IO operation

image

Android R Frame Work source code and UI

In Android, Framework refers to the system architecture layer. Framework means "framework" in Chinese. In software development, it usually refers to the development framework. It is above the kernel layer in a system and provides interfaces for top-level applications. It is designed to help developers quickly develop top-level applications without having to care about the system. The kernel operating mechanism, usually Framework will hide the main function and other necessary components of the application, developers only need to focus on the realization of the function code. To put it simply, the specific work of Framework is to provide a series of services and API interfaces for developers of android application development.
UI does not simply refer to the effect the user sees. Because in Android development, there is a deep-level system behind each control. Naturally, UI does not simply refer to custom controls. We should also know the execution process behind custom controls, including from Activity Creation, analysis of XML, measurement, layout, and drawing of each control. Of course, there are also knowledge points such as animation, event distribution mechanism, and nested sliding mechanism. There are also some UI frameworks provided by Google, such as Jetpack component library, Material Design, etc.

Knowledge points:
1. FrameWork source code analysis
2. In-depth analysis of common Android components
3. In-depth analysis and customization of UI
4. Jetpack family bucket
5. Android R
6, RXJava responsive programming framework design

360° all-round performance tuning

Performance optimization is for the entire app development. When a good project is developed, not only is the product better, the developer also needs to know why the app I developed can run on most mobile phones, and why most mobile phones do not have bugs when users use it. Our apk file can be optimized to be very small. For example, if you make a project, it may be 10m after packaging, but after optimization, it may only be 8m or even smaller. In addition, how safe is the project we are doing? Why do we conclude that the app we made is safe? These are all involved in performance optimization.

1. Design ideas and code quality optimization

Whether an app’s performance is good or not, we need to work on two levels.
The first level: you need to pay attention when writing code, make your own code high-performance and high-availability code, this process is to write high-performance code; the
second level: check the code problem with tools for the already formed code , To guide us to delete and modify the code through the checked problems, this process is called tuning.
How to write high-performance code? Then we need to have a deep code knowledge, which is the basis of the code, such as: the data structure can be written according to the application scenario to meet the current scenario of the special structure, for example, Google developed sparseArray instead of HashMap for the characteristics of the Android platform. In addition, he has his own unique insights into commonly used algorithms. There are hundreds of questions on LeetCode, so that you can almost achieve the ability to be proficient in the most commonly used algorithms such as sorting and searching dynamic programming. Furthermore, if efficient algorithms and memory-saving data structures are matched with excellent design patterns that meet application scenarios, these provide a basis for high-performance code.
The other is to tune the written code. Then the direction of tuning is to use the Profiler tool to test and check to see where there are performance-consuming operations, and then analyze the problems with the code. The direction of tuning becomes how to optimize memory, power consumption, network traffic, and of course, there are reasons for startup speed, page switching effect and speed, boot white screen experience, and splash screen. Wait for analysis and tuning. Finally, add a screen adapter camera adapter.

2. Program performance optimization

Start-up speed and execution efficiency optimization
layout detection and optimization
memory optimization
power consumption optimization
network transmission and data storage optimization
APK size optimization

3. Optimization of development efficiency

Distributed version control system Git
automated build system Gradle

4. Project actual combat

Start-up speed, fluency, practice of Douyin in APK package size resource optimization, Youku responsive layout technology, full analysis, network optimization, mobile phone Taobao double eleven performance optimization project, revealing the source code dependence analysis of the entire link of AutoNavi APP, and completely eliminating OOM actual combat experience sharing WeChat Android Terminal memory optimization practice

Benchmarking the necessary technologies for Tencent T3.3 architects

Android framework architecture (advanced UI+FrameWork source code) This piece of knowledge is currently the most users, and we call it the technology of Android from 2013 to 2016.

Android developers are often familiar and unfamiliar with this frequently "used" code because they are used to copying code online: the familiar is dealing with them almost every day, and copying the code every day; the unfamiliar is that although with these codes every day Dealing with codes, but I haven't studied the principles of these codes in depth and the connotations in the depths of the codes.

Key points of knowledge in this article:
1. Code design guidelines necessary for architects
2. Component-based architecture design
3. Plug-in architecture design
4. Hot fix design
5. Open source framework source code analysis and implementation

Advanced audio and video (audio and video series)

From the perspective of future trends, with the advent of the 5G era, audio and video have gradually become necessities in people's daily lives. In addition to online education, audio and video conferences, and instant messaging products that must use audio and video technology, other products also need to add audio and video elements.

It is precisely because of such a big trend that in addition to major factories, other small factories are also starting to look for audio and video talents.

A slightly better audio and video talent may now have 3-4 companies rushing to get it, vying for it. The demand for audio and video talents has changed from a niche to the general public, which is more a result of everyone's expectations of the future market.

Why are audio and video talents rare?

Audio and video knowledge is complex, and there are very few easy-to-understand materials;

Online blogs and videos are filled with a lot of wrong information, making many beginners unable to climb out of the pit.

For example, according to the traditional audio and video learning method: first contact a large number of audio and video open source libraries, such as FFmpeg, MediaCodec, and often these APIs have already made your head bigger. Staying on the API will not allow you to adapt to changing needs. The first direction was wrong. No matter how hard I tried, I couldn't learn audio and video.

Key points of this article:
1. Basic syntax
2. H264 video coding
3. H265 coding principle
4. H265 coding application
5. MediaCode

  • Interpretation of Android-related source code
    As long as it is a programmer, whether it is Java or Android, if you don’t read the source code and only look at the API documentation, it will just stay on the skin. This is not good for the establishment and completeness of our knowledge system and the improvement of actual combat technology. of.

The above advanced BATJ learning materials can be shared with everyone for free. Friends who need the full version, [ click here to see all the content ].

Guess you like

Origin blog.csdn.net/A_pyf/article/details/114830652