Gold nine silver ten, give you sorted out the monthly salary of 20K Android interview questions will ask highlights, I hope to let you check the missing, finally I wish everyone can find a good job in gold nine silver ten!

Detailed list of knowledge points

There’s always a lot of talk about how hard it is to build Android, the bad environment, the few pits, the low pay, the layoffs.

In fact, what is the Internet winter? You’re just wearing less!

And want to become a good Android development, you need a complete knowledge system, here, let us grow together as they think ~.

For the current Android and mobile Internet, we need to master the technology, I made a list: Generics principle, Reflection principle, Java Virtual Machine principle, thread pool principle, annotation principle, serialization, Activity knowledge system (Activity life cycle, Activity task stack, Activity startup mode, View source code, Fragment kernel related, Service principle, etc Code framework structure optimization (data structure, sorting algorithm, design mode) APP performance optimization (user experience optimization, adaptation, code tuning) hot repair hot upgrade Hook technology, IOC architecture design, NDK (C programming, C++, JNI, LINUX) how to improve the development efficiency? MVC, MVP, MVVM, wechat applet, Hybrid, Flutter, etc

Analyze knowledge points, why to learn

1. Data structure and algorithm

Data structure and algorithm are actually separate things, we need to master all kinds of data structure first, and then to deepen the algorithm, data structure and algorithm actually belong to the foundation, but it is now more and more important, so I will take out separately.

I also recommend you to see tsinghua or Zhejiang University “Data structure” open class, especially tsinghua, worth repeated research.

As for algorithms, the first thing to do is to do it, directly on LeetCode!

The second stage is to summarize the ideas and routines of various algorithms, such as recursion and dynamic programming, which have routines. In LeetCode, there are also screening categories based on data structure and algorithm, so you can practice and summarize accordingly.

Of course, for an Android programmer, it is very good to be able to brush questions on LeetCode every day, so you must stick to it. When you stick to it for a certain period of time, you will find that you are more and more skilled. I started to brush questions on LeetCode at the end of 2018, and so far I have brushed more than 200 questions. Xiaomi’s interview is also very algorithmic, but also able to write.

And for some companies that are very algorithmic, the algorithm part of the assessment is very strict, yes, strict, not strict.

2. Design patterns

Design principles, design patterns are included with the actually for Android developers, design patterns that 23, know and understand the design pattern is the first stage, is only at this stage is not enough, general interview also won’t ask you the concept of a design pattern, and will give you a specific about your understanding of a certain design patterns and use, Its advantages and disadvantages, so, the second stage is to use them, followed by the Android source code to use the design pattern place to combine learning.

Examples include builder mode, which is used to create dialogs in Andoird, singleton mode, adapter mode, observer mode, etc. These are very common design patterns in Android, and also come up frequently in interviews.

3. Language learning and developing languages

Android applications are developed by Java voice, and the SDK is written in Java, so we need to learn the Java language. In addition, Kotlin is also being compiled into The Java language, although it has been officially promoted by Android. For Android development.

As long as the SDK is not rewritten by Kotlin, the Java language needs to be learned. And Android APK background server procedures are most likely to be built in the Java language, so learning Java is an inevitable.

So those things in Java that are relevant to our slightly more difficult Java basics in Android are almost a threshold, like generics, multithreading, reflection, JVM, JavaIO, annotations, serialization, etc.

4. Knowledge of APP development framework

This piece of knowledge is the most widely used technology today, which we call Android2013-2016. But, even if is such a technology, many developers also often because of the habit of a lot of copy code online familiar with the use of the code and stranger, is familiar with them every day every day in the copy, strange is deal with no further studied their everyday, to study the source code, to imitate the source code, and then hook the source code, That’s how you get the idea.

5.App performance optimization

Whether the west energy of an APP is good or not needs to be analyzed from two aspects:

1, from the time you write code, make your code high performance high availability code, the process is to write high performance code

2, to have formed the code through the tool to detect code problems, through the inspection of the problem to guide us to delete the code this process is called tuning

So how do you write high-performance code?

We need to have a deep code foundation, which is the basis of the code, such as: data structure can be written according to the application scenario of the current scene of the special structure, for example, Google for Android platform features developed SparseArray instead of HashMap. In addition, the commonly used algorithms also have their own unique views

6.NDK module development

Audio and video, high definition pictures, artificial intelligence, Douyin live broadcast and other technologies are closely related to users in recent years. The technologies most relevant to our life have been looking for the final technology landing platform, which used to be Windows system, but now is mobile system. Android has the largest percentage of mobile devices. So NDK can be said to be a must to learn, in addition to audio and video codec technology streaming media protocol, FFMEPEG, C, C ++,JNI, Linux are all audio and video development skills. And OpenCV \OpenGI these are necessary for image processing.

7. How to improve development efficiency?

Gradle doesn’t use gradle, so it takes a lot of time to load code, which is a waste of your work cost. Git also helps us manage our code, which is very important because it allows us to modify code without losing it due to misoperations. In addition, mobile developers at least need to know how to grab web packages. Among them, the most commonly used stetho is a very useful tool that can grab network packages.

8. Mixed development

The Hybrid development of Flutter has gradually become the mainstream hybrid development framework. In addition, due to the strong presence of Alibaba, all alibaba companies are using Weex hybrid architecture. These are essential basic skills for an Android engineer to expand his vision and move into the future.

advice

When we go out to look for a job, or ready to find a job, we must think, I what is the goal of the interview, what are my own technology stack, recently have what, what, my list of planned to complete, although two days before the nuggets some bosses in to barge, their view is, don’t cry because it is their point of view, Expand their own, affect their learning rhythm. The foundation largely decides the thickness of your own technical level, you again skilled framework or, will be cheaper than you, cost-effective replacement, a very realistic problem but also have crisis awareness, when we are a big grade, what are the highlights, and more vigorous than our young engineers, competition.

  • No matter how you now level must continue to learn without chicken soup, others look effortless, in fact, cost very vigorously, these four words is my suggestion !!!!!!!!!

  • Think about how to write a resume, imagine, I think, technology is your best resume

  • I hope every IT engineer who works hard in life will get what they want, because we work hard and we deserve it.

  • If you have any questions, please send me a message and comment

[Attached] Relevant structure and information

To collect data

Get it for free here

Contains past Android advanced architecture information, source code, notes, video. Advanced UI, Performance Optimization, Architect course, NDK, Hybrid Development (ReactNative+Weex) micro app, All aspects of Flutter Advanced Practical Android technology