Android Caijimaimai asks for help: 4 years of development experience, less than 15K in Shenzhen, what should I do?

I visited Maimai recently and saw such a post, which aroused my attention. The host has 4 years of development experience, and the monthly salary is less than 15K, full of powerlessness!

Some netizens complained:
there are post-elections, no post-elections before, no after-no-forwards, algorithms are also sweet, conditions permit, no brain back end, promising future, scheduled executives, followed by front-end, frequent demand, adequate food and clothing, good people Difficulty, algorithm data, considerable income, best master and Ph.D, high-end job, test and development, but also a battle, casually, monthly income of over 10,000, desperate, go home to farm, sunrise and sunset, happy life, ghosts, come to the client , The surface is prosperous, but in fact it is inward scrolling, work is idle, interviewing rockets, less than three years, all finished, 65 in the back, green hat in front, good-hearted, golden and good words, advise you, brighten your eyes, if you have it, change it, nothing Then reluctantly.

The same is for android development. In recent years, the mobile development market does not seem to be optimistic. The rise of small programs and fast applications has brought the growth of many apps to a bottleneck,
especially Android development.

Now that the bonus period has passed, it needs more refined technology as support. Like the current mid-to-high-level recruitment requirements, in addition to educational requirements and
Android foundation, JNI/NDK/Framework, and even JS and server-side development are also used as improvement points. , Is
the prototype of the full stack direction.

In fact, Andrews development practitioners will find that major companies have significantly increased in the high-end jobs, it also means that Android developers have entered
into a technology-enabled business era, so to enhance the competitiveness of the individual, that is, Android development capabilities necessary .

I myself have been in a small factory, I have also been to a large factory such as Huawei, OPPO and so on. In May of 19, I entered ByteDance until now.
So, let’s summarize with you the development direction of Android developers.

First: horizontal improvement

Based on the trend of full-stack development, we should expand horizontally while delving into our field of expertise.
The horizontal improvement mentioned here is the transformation to the front-end. In addition to hybrid development (web, native, front-end
interaction, hardware interaction) in APP , web development, WeChat applet, and H5 are also needed.
For example, server-side development, we do Android developers a lot of time, to rely on the interface returns the data to the server, you can own try
the build it, at least for the structure theory server and serve the communication between services, polymerization is what kind of process is Need
to be heard.

Second: Vertical reshaping

There have always been two sayings about Android development. If it is for application development,
it is more appropriate to develop in the direction of application architecture ; if it is for system-level development, the underlying driver is often more appropriate.

What should I learn specifically?

1. Mobile architecture
Architecture display layer—MVC, MVP, MVVM, Clean, Flux, AndroidArchitectureComponents;
architecture layer—modularization—>componentization—> pluginization— >sandbox/dual open technology, such as dual open WeChat, similar to Docker, each
Each page is a plug-in, similar to each page in Vue.js is a component.

2. Basic Advanced
This direction may be more, such as view, Android animation mechanism, the working principle of the four major components, multimedia technology and so on.
The View sliding conflict problem we usually encounter in our work
can be easily solved by mastering the View working mechanism and the Android touch time system.
And for the need to develop gorgeous animation effects, you must have a certain understanding of some features of view animation and attribute animation.
The working mechanism of the four major components in Android is actually the Binder mechanism. We might as well send the AIdL interface to
learn about Binder.
JNI and NDK development are also relatively common, especially for some NDK projects, this development process also needs
to be mastered.
NDK development is also one of the methods used by servants to distinguish applicants. Companies do not need to use them, but they can
select talents by mastering NDK.

3. Language learning and development language
Here we need to correct that learning language is not a cross-industry. For example, Kotlin can be said to be the first-class citizen of the Android world, and
sometimes the more popular Python and GO, and the low-level C/C+++ is essential.

4, the source
requirements can understand and become familiar with the source code (of their own choice of several third-party libraries can also be), to be familiar with the original source code and its implementation
management, and the second package to be able to do their own (or their own contribution to the tripartite library ) Three-party library.
In this way, you will gradually become an expert in this technical block in maintenance. I think the output is forced to input is a good
way to learn.

How to read the source code?

Android refined source code analysis directory

1. In-depth analysis of WeChat MMKV source code
MMKV  is a KV repository open sourced by WeChat on September 20, 2018. It is similar to SharedPreferences, but it solves the disadvantages of not supporting cross-process reading and writing with higher efficiency.

2. In-depth analysis of Alibaba routing framework ARouter source code
Componentization is adopted by more and more Android projects, and as the basis of componentization-routing is also a top priority. Therefore, a detailed analysis of Alibaba's open source routing framework ARouter. Explain why it is used this way and what to avoid from the perspective of the source code, so that you can use it smoothly.

3. In-depth analysis of the AsyncTask source code (a built-in asynchronous task execution library
in Android ) AsyncTask is a framework for executing asynchronous tasks provided in the Android SDK. It was widely used in the early days of the rise of Android, but now it has been used by RxJava and coroutines. And other emerging frameworks. Although it has some shortcomings, we can still try to understand its implementation principles and existing shortcomings.

4. In-depth analysis of Volley source code (a web request framework launched by Google)
Volley is a web request framework developed by Google, which has stopped updating. Although everyone's focus is on third-party network request frameworks such as Retrofit and OkHttp, and these two frameworks are also used in the team's project, there are still many excellent design ideas in Volley that we can learn from.

5. In-depth analysis of Retrofit source code
In Android development, network requests are very common, and in the Android network request library, Retrofit is the hottest network request library at the moment.

❤️The space is limited, for more detailed content, click me to get the full version pdf to view❤️

6. In-depth analysis of OkHttp source code
OkHttp is an open source project for processing network requests. It is the most popular lightweight framework on the Android side. It is contributed by mobile payment Square to replace HttpUrlConnection and Apache HttpClient. As OkHttp continues to mature, more and more Android developers use OkHttp as a network framework.

7. In-depth analysisButterKnife source code
As an Android developer, everyone must know the famous butterknife. It greatly improves the development efficiency. Although everyone has started to use it a long time ago, but only knows that it is achieved through annotations, but has not carefully studied the code of Daniel. So it is necessary to systematically analyze the realization principle of butterknife.

8. In-depth analysis of Okio source code (a set of concise and efficient I/O library)
There are two very important interfaces in Okio-Sink and Source, both of which inherit Closeable. Among them, Sink corresponds to the OutputStream we originally used, and Source corresponds to the InputStream we used originally.
The entrance of Okio is the Okio class, which is a factory class, and objects such as Sink and Source can be created through some of its internal static methods.

9. In-depth analysis of SharedPreferences source code
SharedPreference is a KV repository that comes with Android development and is suitable for saving lightweight data. It uses XML to store data. For example, I often use it to save some lightweight data such as user login information. Level data.

10. In-depth analysis of EventBus source code
EventBus is an Android event publish/subscribe framework.
Traditional event delivery methods include: Handler (message processing mechanism, generally used to update the UI), BroadCastReceiver (broadcast receiver), Interface callback.

Advantages of EventBus:

  • The communication between Activity, Fragment, Service and thread is very common. EventBus can just shield some thread switching problems and simply implement the publish and subscribe function.
  • The code is concise, simple to use, and fully decouples event publishing and subscription.

11. Preliminary exploration of Android custom annotations
Since many open source frameworks used before, such as GreenDao, EventBus, ButterKnife, ARouter, etc., use custom annotations, it is necessary to study custom annotations.

12. View's working mechanism source code analysis

13.Source code analysis of Android touch event distribution mechanism

14.Source code analysis of Android key event distribution mechanism

15. In-depth analysis of Handler source code
Android's message mechanism is implemented based on Handler. Many people think that if they know Handler, Looper, and MessageQueue, they think they understand the principle of Handler. But in fact, when you look at the source code, you will slowly discover that the content of Handler is more than this. Knowledge such as synchronization barriers, blocking and wake-up mechanisms of the native layer of Handler, etc. have not been clearly understood before.

16. In-depth analysis of Binder source code
Binder is called the "Yi Jin Jing" in the martial arts cheats in Android, and both novices and veterans are fascinated by it. The Binder architecture is the most commonly used means of communication between processes, and the basic functions of the four major components can be realized only by relying on Binder.
In order for developers to use java and cpp for binder communication, the design of binder runs through the framework, native and kernel layers. Developers can easily use binder in the upper layer to initiate data communication to other processes.

17. In-depth analysis of JNI source code During the
development of Android NDK, it is often necessary to use the JNI mechanism to call into the Native environment for c/cpp operations for reasons of efficiency and safety.

18. In-depth analysis of Glide source code.
Glide has rich functions, three-level image cache, deep customization (inherit AppGlideModule, LibraryGlideModule for more functions), modify the network request library, and support the conversion of multiple input and output resources (such as input Stream, output bitmap, etc.) Etc.), life cycle management. Therefore, it is necessary to analyze the source code in depth

19. The principle of RxJava and how to encapsulate the use of
RxJava can be described as an essential skill for Android developers, and the importance need not be repeated.

20. LeakCanary core principle Source code analysis
LeakCanary is a framework for Android memory leaks. As a "common question in interviews", it must have something worth learning.

21. The definition of plug-in architecture and the practical ideas of plug-in architecture analyze the
babel plug-in, webpack plug-in, and vue-cli plug-in. Why do so many excellent frameworks use the plug-in system? What is the plug-in architecture? What are the benefits? What scenarios can it be applied to?

Android refined source code analysis

22. Hot repair principle of hot repair design
Hot repair technology is a relatively advanced and popular knowledge point in the current Android development, and it is a skill that intermediate developers must master when leading to advanced development. At the same time, in the Android industry, hot repair technology is blooming, and major manufacturers have launched their own hot repair solutions. Therefore, it is also necessary to understand and learn the principle of hot repair.

❤️The space is limited, for more detailed content, click me to get the full version pdf to view❤️

Enter the BATJ factory and so on (preparation)! Nowadays, it’s said that the Internet is cold. In fact, it’s nothing more than you got in the wrong car and you wear less (skills). If you get in the right car and your own technical ability is strong enough, the company’s replacement cost is high. How could you be laid off? It's just to eliminate the end business Curd! Nowadays, there is a flood of junior programmers in the market. Source code learning is aimed at Android development engineers who are 1-6 years old. They are in a bottleneck period. Those who want to break through their salary increases in the next year, advanced Android intermediate and senior, architects are even more comfortable for you. , Get it quickly!

Guess you like

Origin blog.csdn.net/weixin_43901866/article/details/112916291