Soul torture! I took offers from 9 companies in one breath, and my salary was doubled

Preface

I saw an article mentioning that "there have been a lot of junior Android programmers in China in recent years, but middle and senior Android technical talents are still scarce." This is true. Judging from some interviews I conducted at Baidu, It is indeed not easy to find a suitable senior Android engineer. Generally, a lot of interviews are required to select a more satisfactory one. Why are there not many high-level Android programmers? This is a question that I can't answer, but I want to write an article to describe the learning path of Android, hoping to help more Android programmers improve themselves. Since I also came from a rookie, I will combine my personal experience and my understanding of the Android learning process to write this article. This will make this article more real, rather than just talking about it.

Why is NDK more and more important?

One is the rapid development of short video, live broadcast and other industries . Audio and video + social networking has become a new growth point for traffic. In the past two years, short video, live broadcast, online video and other industries have continued to explode. Among them, Douyin has become a leader, with daily activity exceeding 250 million, replacing QQ/WeChat on the 19th Year of the Pig Spring Festival Gala and becoming another national-level APP.

The second is a new round of integration and development of new technologies such as artificial intelligence, 5G, and the Internet of Things . We will continue to find practical locations. In the era when mobile is king, Android with 80% market share is the biggest beneficiary. According to operator news, 5G mobile phones will be launched in China in the second half of 2019 and will be fully commercialized in 2020, when audio and video will usher in another wave of upsurge.

In actual specific applications, in addition to the short video directions mentioned above, there are also major video applications. Image processing, filters, cropping and other operations require professional audio and video development knowledge to make.

So, how to start NDK learning?

We know that the field of NDK is becoming more and more extensive, as machine learning, AI mobile terminal landing requires the use of C and C++ compiled library functions.

To give a simple example, the original loading images generally use Universal-Image-Loader or Picasso, but the performance of the image loading library fresco made by Facebook kills all the image libraries before it can even achieve an order of magnitude performance improvement on some data. How did Facebook do it?

It uses the anonymous shared memory (Ashmem, Anonymous Shared Memory) that the image library has not used before. This part of the memory is not within the scope of Android GC and needs to be managed by itself, but in this way it can break through the heap memory limit allocated by Android. The efficiency is greatly improved. The use of Ashmem is completely realized through C++, not to mention that many core algorithms, multimedia libraries, etc. are all made with NDK.

In fact, it is not only C++, but also requires Framework and architecture refactoring. In the final analysis, I just want to explain one point. If you are just an ordinary Android code farmer, then Java is enough, but if your ideal is bigger than this, C++ is a necessary skill for you to advance.

Of course, our NDK is not easy to learn. When we talk about C++, we think of the wonderful and unforgettable time in university. In 996, an Internet company that has become a common practice, we have no way to spare a lot of time to explore and learn. The cost of trial and error is hard to estimate. At this time, it is understandable to use some successful experience.

At last

If you see this and think the article is well written, give it a thumbs up? If you think it deserves improvement, please leave me a message. Will definitely inquire carefully and correct the deficiency. Thank you.

Finally, for Android programmers, I have compiled some information for you, including not limited to advanced UI, performance optimization, mobile architects, NDK, hybrid development (ReactNative+Weex) WeChat applets, Flutter and other all aspects of Android High-level practical technology; I hope to help you, and save everyone's time to search for information on the Internet to learn, and you can also share dynamics with friends around you to learn together!

Friends who need information can click on my GitHub to get it for free

BF%E9%AB%98%E8%96%AA%EF%BC%81.md)

Guess you like

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