Essential for Android developers to quit: the knowledge points frequently asked by Android interviewers in those years are shocking. Free download!

How can Android developers improve themselves?

Talk about my two suggestions:

1. Horizontal development: (suitable for people with their own expertise)

While delving into the field of your expertise, besides Hybrid development (Flutter, RN, H5), web development, WeChat applet, etc., you will not have to worry about finding a job in 5 years. However, this is really difficult. The whole stack is easy to develop into a whole dish, that is, you know everything, but you are not refined!

2. Vertical development : (suitable for most people)

If you do application development, you will develop in the direction of application architecture; if you do system-level development, you will delve into the underlying drivers.

You can learn from the following aspects:

Mobile architecture :

Architecture display layer: MVC, MVP, MVVM, Android Architecture Components;

Architecture layer: Modularization->Componentization->Pluginization->Sandbox/Double Open Technology;

Basic advanced:

Such as advanced custom View, Android Framework layer principle, App management mechanism, etc.;

JNI and NDK development are also relatively common. 5G is here, and recruiters are planning small video functions for their companies, but we don’t even understand NDK;

Learning development language:

For example, in Kotlin, it is essential to do low-level C/C++, and there is one of the most overlooked high-level object-oriented ideas of the Java language itself;

Source code:

Understand and be familiar with the source code, familiar with its implementation principles, and strive to be able to package the third party library twice.

Let's take a look at the third aspect of Tencent Microvision. What did the interviewers ask? How much can you answer?

  • Use of ArrayList, and then ask him if he has encountered any pits in the process of using ArrayList;

  • I also asked HashMap for about 20 minutes. There are also aba problems, GC algorithms, and generic margins;

  • Then I asked why the loop method in the handler did not cause the thread to freeze, and the principle of animation, and asked him if he had actually battled tween animation; what is the most difficult bug collected above bugly, and how to solve it?

  • There is also the meaning of MeasureSpec. I asked how to calculate MeasureSpec in general; the difference between custom View and custom ViewGroup; the scheduling process of onmeasure, onLayout, and onDraw; the measure timing of custom View; have you written custom View;

  • Asked about the pits in the use of Glide and the pits in the use of EventBus;

  • There is also the caching mechanism in the network protocol okhttp, the dex loading process, and the principle of componentization;

  • There are also the pits and solutions encountered in the life cycle management of Fragment;

  • There are also sorting algorithms, as well as observer mode and singleton mode, and asked about the relationship between abstract classes and interfaces;

  • There is also the application startup process, activity startup process, why each application has its own virtual machine, and the relationship between this virtual machine and the JVM.

From these questions asked by Tencent interviewers, it can be seen that many things asked in interviews are based on principles .

"MuMu" even complained to me: "Damn, is it so difficult to interview senior engineers now?"

Yes, the requirements for senior Android engineers are so high, and the salary is also high!

**It is true that the overall environment this year is more severe, but some senior positions are still scarce. ** And most programmers are often slow to advance from junior level to mid-level senior level. Even like my friend, five years of experience still fails to win the offer of senior engineer, sometimes the bonus points for working years are not enough. .

to sum up

This is the end of writing. I put a small benefit at the end of the article. The following is a learning idea and direction about Flutter that I compiled during the learning process. When engaged in Internet development, the most important thing is to learn technology. , And learning technology is a slow, long and arduous road. It cannot be learned by a moment’s passion or by staying up for a few days and nights. It is necessary to develop the habit of studying hard in ordinary times, and it is more necessary to learn accurately to achieve effective learning results. .
Since there is more content, only a rough outline is placed. If you need a more detailed learning mind map,  click on my GitHub to get it for free.
There are also free advanced UI, performance optimization, architect courses, NDK, hybrid development (ReactNative+Weex) WeChat applets, Flutter all aspects of Android advanced practical technical materials, and there are technical experts to discuss and solve problems together .

ReactNative+Weex) WeChat applet, Flutter all aspects of Android advanced practical technical materials, and there are technical experts to discuss, exchange and solve problems. **

Cross-platform development: Flutter.png

Guess you like

Origin blog.csdn.net/weixin_52746928/article/details/113105171