What language is good for Android development! Detailed explanation of the driver core source code and Binder super system learning resources, good in-depth text

Preface

As an Android engineer for 3-5 years, we often encounter these bottlenecks:

1. Narrow technical vision.
Long-term working in small software companies and outsourcing companies, technical vision is too restricted

2. Salary increase is difficult
. There is limited room for salary increase for junior and mid-level Android positions. Basically, if you want to get more than 15k, you can't get anything that doesn't point at the source code layer.

3. Few learning resources.
After getting started, it is difficult to improve. Rely on simple business projects that you have contact with, and practice those cv technologies repeatedly. Most of the technologies on blogs and books are abstract and fragmented. They can be used for reference and guidance, but they cannot be copied into their own.

With this note on Android development core knowledge compiled by Ali P7 , all bottlenecks can be quickly broken.

The entire notes are organized according to the knowledge system of senior engineers. Compared with many fragmented content on the Internet, this knowledge note is completely arranged in accordance with the Android development knowledge system. It is more systematic, from simple to deep, from simple to complex, and it is easy to learn. It won't be very strenuous.

Detailed list of knowledge points

Many people are always talking about how difficult it is to make Android, the environment is poor, there are few pits, low wages, and many layoffs.

In fact, how can there be any Internet winter? It’s just that you wear less!

To become an excellent Android developer, you need a complete knowledge system. Here, let us grow together to be what we think~.

For the current Android and mobile Internet, we need to master the technology, I made a list:
generic 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 core related, service principle, etc.) Code framework structure optimization (data structure, sorting algorithm, design pattern) APP performance optimization (user experience optimization, adaptation, code Tuning) How can hot repair and hot upgrade Hook technology, IOC architecture design, NDK (c programming, C++, JNI, LINUX) improve development efficiency? MVC, MVP, MVVM, WeChat applet, Hybrid, Flutter, etc.

Analyze knowledge points, why learn

1. Data structure and algorithm

Data structure and algorithm are actually separate things. We need to master various data structures first, and then deepen the algorithm. Data structure and algorithm are also basic, but they are becoming more and more important now, so I will take them out separately.

How to get into the data structure. I also recommend everyone to watch the "Data Structure" open class of Tsinghua University or Zhejiang University, especially Tsinghua University. It is worth studying repeatedly.

As for the algorithm, 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. Algorithms such as recursion and dynamic programming have routines. On LeetCode, there are also filtering according to data structure and algorithm classification. You can practice and summarize them.

Of course, for an Android programmer, it’s very good to be able to write 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 at ease. I started at the end of 18. I have written more than 200 questions on LeetCode, and Xiaomi’s interviews are also very algorithmic, and I need to be able to write.

And for some companies that pay special attention to algorithms, the evaluation of algorithms is very strict. Yes, it is strict, not strict.

2. Design pattern

Design patterns include design principles. In fact, for Android developers, there are only 23 design patterns. Knowing and understanding these design patterns is the first stage. It is not enough just to this stage. Generally, interviews will not ask. Your concept of a certain design pattern will let you specifically talk about your in-depth understanding and use of a certain design pattern, its advantages and disadvantages, so the second stage is to use them, and secondly, in the Android source code Apply to the design pattern for combined learning.

For example, the builder mode is used in the Dialog creation in Andoird, and there are also design patterns such as singleton mode, adapter mode, observer mode, etc. that are very commonly used in Android, and they appear frequently in interviews.

3. Language learning and development language

Android applications are developed by Java Voice, and SDK is also written by Java language, so we have to learn Java language. In addition, although the Kotlin language is also popular with Android officials, Kotlin is also compiled into the Java language to run. For Android development.

As long as the SDK is not rewritten in Kotlin, then the Java language needs to be learned. And the background server program of Android apk is probably built in Java language, so learning Java is inevitable.

So those things in Java are more relevant in our Android. The basic Java is almost a threshold, such as generics, multithreading, reflection, JVM, JavaIO, annotations, serialization and so on.

4. Knowledge of APP development framework

This piece of knowledge is currently the most users, we call it Android2013-2016nian technology. However, even with such a technology, many developers are often familiar with the code used in this piece of code because of the habit of copying code on the Internet. The familiar is that they are copied every day, and the stranger is that they are dealing with every day. I haven't studied them in depth. You have to learn the source code, imitate the source code, and then hook the source code so that you can understand this knowledge.

5. App performance optimization

We need to analyze the performance of an app from two levels:

1. From the time of writing code, pay attention to make your own code high-performance and highly available code. This process is to write high-performance code

2. Use tools to detect code problems on the already formed code, and guide us to delete and modify the code by checking the problems. This process is called tuning

So how to write high-performance code?

We need to have a deep code knowledge, which is the basis of the code. For example, the data structure can write a special structure that meets the current scenario according to the application scenario. For example, Google has developed SparseArray instead of HashMap for the characteristics of the Android platform. In addition, for commonly used algorithms Also has his own unique insights

6. NDK module development

Audio and video, high-definition big pictures, artificial intelligence, Douyin live broadcast, etc. have been closely related to users over the years. The most relevant technology in our lives has been looking for the ultimate technology landing platform. It used to be Windows system, but now it is mobile system. The proportion of Android in the mobile system is the largest. So NDK can be said to be necessary to learn. In addition, audio and video encoding and decoding technology streaming media protocol, ffmepeg, c, c++, JNI, linux are all necessary skills for audio and video development. And OpenCV \OpenGI these are necessary for image processing.

7. How to improve development efficiency?

If you want to do your job well, you must first sharpen your tools. How to improve development efficiency? Many developers are very time-consuming to load code because gradle is not used during development. These are waste of your work costs. There is also the use of git to help us manage our code. This is very important, because this tool allows us to modify the code without being lost due to incorrect operations. In addition, we at least need to know how to capture network packets for mobile developers. Among them, the most commonly used stetho is a very easy to use tool that can grab network packets.

8. Hybrid development

The hybrid development of flutter has now gradually become the mainstream hybrid development framework. In addition, due to the strong existence of the Ali department, the companies of the Ali department are using the Weex hybrid architecture. These are all necessary for an Android engineer to broaden his horizons and move towards the future. Basic skills.

end

I also summarized most of the interview questions and answers involved in the Internet company Android programmer interviews, and compiled documents, as well as the system's advanced learning video materials, and shared them for free.
(Including the application of Java in Android development, APP framework knowledge system, advanced UI, all-round performance tuning, NDK development, audio and video technology, artificial intelligence technology, cross-platform technology and other technical materials), I hope to help you before the interview Reviewing and finding a good job will also save everyone time to search for information on the Internet to learn.

How to get it: follow + like + click on my GitHub to get it for free !

BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)!**

image

Guess you like

Origin blog.csdn.net/m0_53537576/article/details/113093286