learn from mistakes! Daniel, who has millions of fans, talks about the journey of learning Android and shares a little interview experience

Preface

This article mainly records and shares my interview preparation process.

Many friends asked me why I left my job

Regarding the reason for resignation, Ma Yun has a classic saying, "Either the money is not in place, or the heart is wronged." I must be familiar with it. I will elaborate on my personal reason for resignation here:

The salary is upside down, and the salary increase is not satisfactory

In the previous small factories, the phenomenon of salary upside-down was serious. The salary of newly recruited employees was significantly higher than that of old employees. The company would rather hire a new employee with a high salary than give our old employees processing wages, which made the old employees very chilling. Grounding caused the resignation of old employees. Then there is another, when you feel that your labor has not gained the corresponding value, it doesn't make much sense to continue staying in the original company.

Ten years of technology

In the three years of working in a small software company, I actually only had one year of technical experience. The technical vision is narrow, the ability to improve slowly, and there is no room for technical improvement. Day after day, year after year, only doing the same thing, going higher is the inevitable choice.

Introductory learning stage

First of all, the official document is definitely the best textbook. You can also read more cases shared by the great gods on the Internet, and practice while learning. Assuming that English is good, and there is a foundation of Java and XML, then learning it slowly according to the official Training is actually an introduction. If your English is not good, you should also have a solid foundation and a good programming language. You should also find more information and do more exercises, at least to master basic Android development knowledge, such as the use of the four major components, creating a Service, layout, simple custom View, etc. are the most basic requirements.

Maybe it is difficult to see everything in the early stage, but don't be impatient, take your time, the lower foundation determines the superstructure. If you learn well in the early stage, you can go far later. Here are a few essential books for beginners to recommend, "The First Line of Code", "Exploring the Art of Android Development", and "Authoritative Guide to Android Programming".

study method

  • Practice and think more

For newcomers who have just stepped into this industry, I think the best way to learn is to practice more, think more, break through yourself in learning, and accumulate experience. For novices, the early stage of Android development is constantly stepping on pits, so the fastest way to grow is to fight to the death of various bugs and constantly polish their own technology. The combination of theory and practice requires you to explore it yourself.

  • Write log

There must be a lot of mistakes in the early learning. Recording and summarizing will help us solve problems quickly. Logging is a way of recording our daily learning. Logging is actually a review and summary of the knowledge system. Not so much that writing a log helps us to learn, it is better to say that recording problems helps us to learn.

In general, there are still many things that junior Android developers need to learn, so everyone must maintain a good attitude, prepare for long-term battles, and enrich themselves step by step.

Intermediate learning stage

At this time, Android developers have already possessed some technically essential capabilities, and they also have a certain understanding of learning Android development. At this time, you can focus on other sharp diamonds and popular technologies to expand your knowledge. You can also get in touch with areas that you want to try but are not familiar with.

In the intermediate learning stage, there is no need to repeat too simple tasks. What we need to improve is the ability to solve problems. Forming our own thinking method and knowledge system is the most important task at present, and this is also a necessary condition for us to become a high-level Android engineer.

study method

  • Participate in open source projects

Starting an open source project or contributing to an open source project can greatly improve our technical level. Many people have this feeling, that is, the key brain hole is often an inspiration. The moment you figure it out is like opening up the two channels of Ren and Du, and suddenly you have practiced Nine Suns. This kind of inspiration is very rare in Android development and learning. I myself have participated in many projects in the open source community and have obtained many useful components. I am the beneficiary of open source projects, so I recommend that you go to the open source community more activities. I believe you will also gain a lot. For example, GitHub is a good open source community. In the project, GitHub gathers programmers from various fields around the world. You can directly read the open source projects of Google and Facebook's top companies. It is very convenient to read the source code of others or contribute code yourself.

  • Read Android source code

The understanding of the Android source code can help us further study and lay a solid foundation for our future ability improvement. Look at the excellent source code, and repeat it if possible. You can't stay on the basic api usage all the time, you should study in a deeper direction, such as the internal operating mechanism of activity, view, Android memory optimization, JNI, etc. In addition to flexible use, you should be able to understand it by reading the source code. Implementation principle.

Advanced learning stage

The most important content of the advanced learning stage is "better". To some extent, no matter how good a project is, it will always have a better design. When it comes to the advanced learning stage, no matter how well the project is completed, we can ask again if there is a more perfect design idea. Although engineers with rich development experience know where the bottleneck is and what needs to be paid attention to before the project starts, creating better solutions has always been the goal pursued by high-level engineers.

learning method

  • systematic learning

Understanding the system and learning to use system thinking are more conducive to problem-solving. For example, FB's Buck construction, how many domestic technical teams have optimized their construction based on this (and have also been promoted). Learning technology requires training in conjunction with projects. The most commonly used architectures in Android are nothing more than MVC, MVP, MVVM, but if these ideas are mixed with modularization, hierarchization, and componentization, it is not such a simple matter. , We need to learn more Android development knowledge in order to know the deep principles.

Learning welfare

[Android detailed knowledge point mind map (skill tree)]

In fact, there are so many knowledge points in Android development, and there are still a few things to ask in interviews. Therefore, there are no other tricks for the interview, just to see how well you prepare for these knowledge points. So, when you go out for an interview, it is good to see which stage you have reached in your review.

Although Android is not as hot as in previous years, the era of finding high-paying jobs with the four major components has passed. This can only show that the positions below the intermediate level of Android are saturated. Now senior engineers are still relatively lacking . Many senior positions are paid really high salaries (you may not be able to find a suitable one if you have more money), so I strive to become a senior engineer. is the most important.

Attached here are dozens of sets of ByteDance related to the above-mentioned interview questions, interview questions from JD.com, Xiaomi, Tencent, Toutiao, Ali, Meituan and other companies in 19 years. The technical points are organized into videos and PDFs (actually, it took a lot of effort than expected), including knowledge + many details.

Due to limited space, I will show you a small part in the form of pictures.

The detailed arrangement can be seen on GitHub;

Android architecture video + BAT interview topic PDF + study notes

There are a lot of materials for learning Android on the Internet, but if the knowledge learned is not structured, and when you encounter problems, you just taste it and stop studying it in depth, then it is difficult to achieve real technological improvement. I hope that this systematic technical system will provide you with a direction reference.

There are a lot of materials for learning Android, but if the knowledge learned is not structured, and when you encounter a problem, you just taste it and stop studying it in depth, then it is difficult to achieve real technical improvement. I hope that this systematic technical system will provide you with a direction reference.

Guess you like

Origin blog.csdn.net/a132445/article/details/113092970