Android development must learn: sort out the most comprehensive Android interview knowledge points, have already taken an offer to join

Preface

Recently, a classmate participated in an interview with Alibaba Cloud and was asked: If MySQL causes excessive CPU consumption, how would you optimize it? He said that he encountered this question for the first time. At that time, he was at a loss and didn't know how to answer it. Fortunately, his mechanism at the time said that the bottom layer of MySQL was not the focus of his research, so the interviewer did not go deep into this area~~~

Therefore, we found an article on the Internet that can answer this question, hoping to help everyone.

Is embedded development difficult?

After this exchange with classmates, I also learned a lot. Because I don't understand many things about embedded, I can be considered learning.

From my personal point of view, combined with previous learning experience. I think embedded development is Javastill a bit more difficult than soft opening on the Internet (such as back-end). For example, we are engaged in Javadevelopment. After all, it is basically user-mode things, but many embedded things have penetrated into the kernel mode . So there must be some difficulty, which is manifested in several aspects:

  • First of all , it is embedded at the bottom level, and both software and hardware must be understood, and the requirements for capabilities are much higher;
  • Secondly , the learning threshold of embedded development is also higher, and like Linuxthe development process under the platform, many people are not used to it and can't figure it out;
  • Furthermore , the positive feedback of embedded learning may be slow, especially in the early learning stage, which leads to a lack of sense of accomplishment and can't stick to it, so it is often abandoned.

But having said that, doing IT is like this. The more you go to the bottom, the higher the training of human ability, so for ability, it is upgrading , so on the contrary, if embedded is done well, I think it will be the Internet problem It's not too big, it will be a dimensionality reduction blow .


Overall learning ideas

In general, embedded learning can be divided into three major stages:

First, the basic learning stage , which includes general programming foundation (C language, data structure/algorithm, operating system, computing network, computing group, Linux system foundation) and basic hardware foundation . A solid grasp of these two foundations is the follow-up The source of power for development and continuous progress.

The second is the embedded application programming stage , or the system platform programming stage. Because I usually rely on a specific embedded platform and a specific embedded operating system, I am familiar with the programming methods and processes on this system platform. Take a common ARM+Linuxplatform as an example, you need to master several major aspects from memory management to multi-task programming, file I/O, network programming, and even graphical interface programming.

The last step is to go deep into the low-level embedded development stage . The most common ones are kernel development and driver development. These all belong to the category of kernel development, so you need to learn and understand the internal mechanisms of the operating system. On this basis, you need to master the migration from system to The details of kernel development and driver development are the road to godhood.

The general idea is this, let’s take a look at the detailed learning route and knowledge points.


Learning route + knowledge combing

It took a long time to organize this detailed brain map of the knowledge route. Of course, due to limited time and abilities, after all, the entire embedded system is too large. Including my embedded classmates, it is impossible to understand everything. Some things may not be covered, and the shortcomings are still small. Partners communicate and supplement together, improve and progress together.

img


Recommended books

Finally, according to the overall learning route, recommend some corresponding classic books:

img

End of sentence

When you plan to quit, you should put "What can I learn after a successful job hopping? What are the benefits for my future development" in the first place. These things are the key to truly guide you. Try to "make the best use of everything" before hopping, and do your job well. It is best to complete a project or get promoted before leaving. Job-hopping is not an end, but a means to achieve the ultimate professional goal

Finally, I wish you a job promotion and salary increase, and an interview with your favorite Offer.
For this reason, I have compiled some information about mobile developers’ needs at the end of the article. Welcome everyone to receive the method for free
: click on my GitHub


-1611133573759)]
[External link pictures are being transferred...(img-5aUG2cp2-1611133573762)]

Guess you like

Origin blog.csdn.net/fanzhang_vip0723/article/details/112898467