Kotlin is not popular now! Alibaba's internal Android notes are popular in IT circles, with an annual salary of over 800,000!

Preface

The advent of the Internet age has made it easier for us to acquire knowledge. In theory, as long as you want to learn, there will be endless knowledge waiting for you. As long as the method is right and hard work, anyone can become a big cow.

On the basis of my hard work, I also learned some efficient learning methods, which made me more efficient and quicker in the learning process. The following are some of my routines for learning Android.

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 be an excellent Android developer, you need a complete knowledge system. Here, let us grow up to 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.

As for how to go deep into the data structure, I also recommend that everyone go to the open class of "Data Structure" at 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 well, you must first sharpen your tools. How to improve the efficiency of development? Many developers are very time-consuming to load code because gradle is not used during development. These are wastes of your work costs. And the use of git can also 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.

At last

I have seen many technical leaders meet older programmers who are in a period of confusion during interviews, who are older than the interviewer. These people have some common characteristics: they may have worked for 5 or 6 years, or they write code to the business department repeatedly every day. The repetitive content of the work is relatively high, and there is no technical content. When asked about their career plans, they didn't have much ideas.

In fact, the age of 30 to 40 is the golden stage of a person’s career development. You must have your own plan for business expansion, technical breadth and depth enhancement, to help you have a sustainable development path in career development. Not to stand still.

Keep running, you will know the meaning of learning!

"Android Senior Architect Interview Guidance + 2021 Big Factory Interview Questions" free to receive

8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

[External link image is being transferred...(img-blJVyWrm-1611211736393)]

Guess you like

Origin blog.csdn.net/CHAMPION8888/article/details/112947324