First, the future of Android
I keep hearing a lot of people talk about whether Android has a future, that Android development is on the decline, and that Android jobs are hard to find. My view on this is very simple. It’s really not the end of Android development yet, and I can’t predict what the future holds.
Now the major companies are in fact very short of Android RESEARCH and development (senior), constantly in the recruitment, take a lot of first-line Internet, let alone to interview people, on the resume can not get too much, need to spend a lot of time to find a resume.
Therefore, for students with Android development experience, more should think about how to explore deeper, rather than thinking about changing direction, no matter which direction, will face the time point from elementary to senior to senior and then to expert. So I think the right career planning should be pyramid-shaped, the core competitiveness must be solid!
2. Detailed list of knowledge points
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, Serializing 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 micro app Hybrid Flutter
Three, analysis of 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 code the use of the familiar and unfamiliar, 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 performance of an APP is good or not should 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
Here is a list of learning ideas for performance optimization:
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.
Learning ideas about NDK module development:
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.
Flutter learning mind map:
Four. How much distance is there between us and the big bull?
Like many people, I came out of college with the feeling that I could achieve something as a programmer with a little hard work and talent.
After working for a period of time, MY understanding of myself and others became clearer and clearer. Gradually, I realized that the gap between programmers might be bigger than the gap between humans and monkeys. It made me depressed for a long time to accept this fact.
After a period of time, I found myself able to objectively evaluate my ability and realized that the distance was not so important, as long as I tried to run faster, it was enough.
Write at the end
No matter what difficulties we meet, they should not be a reason for us to give up!
A lot of people who are new to the industry or hit a brick wall have some problems, such as feeling directionless after learning for a while, which I think android developers will see in two or three years. The reasons are basically the same as follows:
- Poor economy reduces demand
- The abundance of open source libraries has gradually lowered the threshold for development,
- Old lessons like 2.3 compatibility and so on are useless now
- Android due to compatibility and other issues, the threshold rate is higher than ios plus smart home framework development and so on will be more saturated than ios
But we can refer to the above suggestions, or go audio and video, senior Android development engineer, or turn to the background, front-end development, The Times are evolving, we also go to think more, for our future plan!
Android learning PDF+ architecture video + interview document + source notes
Thank you for being patient enough to read my long-winded article.
We are willing to exchange and learn from each other and make progress together with our fellow Android developers!
Here I also share a self-collected and organized Android learning PDF+ architecture video + interview document + source notes, and advanced architecture technology advanced brain map, Android development interview topic information, advanced architecture information to help you learn to improve the advanced, but also save you on the Internet search information time to learn, You can also share it with your friends to learn together
If you have the need, you can like + comment, follow me