Android development training experience! What does the history of a big company like BAT mean? user's guidance

The current state of Android development

At present, mobile development is already in a saturated stage, and Android development is not as popular as it was in the past, and it is no longer as popular as it was a few years ago. Just as a programming language has experienced its peak, it must have such a curve, like the sine curve we learned, first rises rapidly, then reaches the peak, then falls, and finally approaches a stable value.
It can be seen that starting from the second half of 2016, the mobile Internet is basically in a stage of slow development, and many bigwigs call it the second half of the Internet. If the first half of the mobile Internet is an extensive and strong turf stage, then the second half is the stage of defending the turf. At this stage, there will be many oligarchs.
Technically, compared to the previous interview, only the four major components of Android were asked. The database, network and project experience are different. Now the interview for Android positions will design various principles (including some principles of the system and principles and processes of third-party libraries), Android Optimization and cross-platform technology related to Android. In addition, slightly larger companies will also require App user experience, fluency, etc., so Android interviews are no longer the same.

The interview techniques are as follows:

1. Senior UI engineer

1. UI drawing process and principle
2. Event delivery mechanism in-depth source code layer analysis
3. Detailed explanation of the principle of attribute animation
4. Actual combat custom view hardware acceleration principle and application
5. High performance, page rendering, component business

2. Android bottom development engineer

1. Basic knowledge: Function Linux memory layout principle 2.
C++ basic promotion: class inheritance, polymorphism, abstract class, template inheritance
3. MakeFile syntax: Android.mk file and so packaging process
4. Shell syntax: variable definition To use, method parameter transfer mechanism, shell script writing and execution compiling ffmpeg library
5. AS compiling So principle
6. Audio and video principle and realization, audio and video acquisition and coding
7. Opencv principle detailed explanation
8. QQ video call core technology-WebRTC Realize the principle of point-to-point communication

3. Android senior architect [first-line Internet core architecture design direction, framework direction]


1. Android event framework design 2. No dead angle analysis Android system coding
3. Skinning core technology
4. Component framework design
5. Plug-in framework design (Hook style)
6. Database framework design
7. OkHttp network access framework design
8 .Glide picture loading framework
9. RXJava2 architecture analysis and source code detailed explanation
10. IOC framework design and design pattern
four. Flutter aspect
1. Dart syntax detailed explanation and compilation principle
2. Why Flutter is a cross-platform technology revolution
3. Fliutter advancement and optimization- How to further improve Flutter memory performance

HR interview:

1. Why did you leave the last company?
2. What do you think of your future career? (Including the distribution of work and family, how to balance the relationship between family and work, overtime, considerations when choosing a company, etc.)
3. Expectation of salary (don’t just count, never show how much money or what level I don’t Go, this is a matter of taste, not ability)

Some questions that candidates have been asked:

1. What is the biggest challenge encountered in the project? How to solve it?
2. What is the most fulfilling thing?
3. What do you think are your shortcomings/strengths in your work?
4. Talk about your own character's strengths and weaknesses (describe your own character)
5. In the eyes of your friends, what kind of person do you look like in the eyes of your relatives?
6. What do you think about overtime (can you accept 996, 997, 007)? If the candidate's tone is in line (official enough), you can answer this way: I think we must make more efforts to realize our dreams, so I am ready and I am willing to fight with my friends. It is possible to work overtime. I work overtime more intensely now. Because I like this thing, I want to do it well.
7. Is salary cut acceptable? (Like Ant, you know) If the candidate's tone is in line (official enough), you can answer this way: I also understand the current salary structure of Ant Financial, and I believe the company will give a reasonable salary based on my ability. The plan, I believe that as long as things are done well, there must be something for a department like Ant, "We are making history and we are doing something that no one has ever done before, so it must be difficult, it must be It takes a lot of effort", interviewers will especially like this.

Interview skills :

1. The status of the interview is very important: two examples, a candidate who had a successful offer last month, has a non-Internet background, and the company is not in the front line, but he showed a strong interest in Ali during the interview, and HR specifically mentioned it to us afterwards , I was very impressed with this candidate; another candidate who just got listed today won both rounds of technology in one fell swoop. Finally, HR was hung up. The feedback from HR to us is that the candidate has just joined his own startup company. Leaving the job, it seems that he is very depressed, and he has no thoughts about himself. In summary, during the interview, you should neither be conscientious, be too passive, nor be too exaggerated, but to show your respect for and strive for a good opportunity, so that the interviewer feels that you have great interest in them and in this position.

2. Answer the wrong question: When you feel that the answer is said, the other person will not wait to see you, you can do: Relevant answer the wrong question, pay attention to emphasizing your own ideas, and strive to make the interviewer empathetic. For example, the housing prices in Shenzhen can attract empathy. E-commerce-related large platforms, stability, and room for growth, etc.

Precautions:

1. All the HRs in Ali understand the business, and will combine the judgment of candidates and the control of the business to screen, don't fool them, just do what you do...

2. Ali pays more attention to feelings and dreams than most companies

Ali's eight-character motto: optimistic, smart, pragmatic, and self-examination

Written in the learning experience at the back.
Remember that someone often asked such a question before, how do programmers learn correctly?

I answered a question on Zhihu before: Is it efficient to learn programming and type in other people's codes? Then, I gave an answer to my learning style, but I didn't expect the response to be quite good. In fact, through this question, we can just talk about the method and efficiency of learning. I hope this article of mine can inspire you

Let's talk about how to improve the efficiency of programming for beginners, and how to master the problem of introductory programming methods.

In fact, for beginners, it is certainly impossible to just read it and type it out at once, unless it has the genius of memorable. Every beginner has such a slow learning process. For beginners, learning efficiency should not be considered too much. More attention should be paid to the quality of learning.

By typing line by line according to other people's or the code in the book, the biggest gain is to practice the speed and ability of typing.

Let me give you an example. In fact, even if you follow the code line by line, if you don't understand it, you will really make a mistake. Even if it feels like you are typing in the code in the book or video. Examples are:

When a friend was learning Java and Android, it often happened that they had the same class name, but under different package paths. At this time, if you look at the code typing, you may lead the wrong package path, resulting in incorrect usage. When importing the package, you use the shortcut keys. When you follow the video to learn, you may not know the path? Then you lead the wrong package path, which makes it unavailable, and you get an error when you run it. I started looking for various errors. Why did the code on the video work normally? I typed exactly the same as what he typed. Why did I report an error?

For example, Date, some are in the sql path, and some are in the util package path. There are many such cases in Java. If you don't understand the usage and principles, this will happen.

What does this example tell us? It's very simple, what is it to read? Instead of reading a book to follow him to type the code bit by bit, but reading a book is to read the knowledge points and principles in the book. It is necessary to understand the knowledge points and the principles and methods of these chapters in the book. This is reading and learning. Reading to learn, what is particular about reading.

The next step that you understand is to knock . What did you do before typing the code? I have understood the principles, methods and knowledge points, so now that I understand, can I try blind knocking? Don't read books, don't watch videos, ** I think about it according to my understanding! **Of course. Otherwise, you just watched it for nothing.

When you can't knock, or when your thoughts are stuck, then go to the book or watch the video to see how they write it? This way you will have a deep memory, and you have to think at the same time, why am I stuck here? Is it because I don't have a thorough understanding of this knowledge point? do not understand? Or have you not mastered the familiar yet? Then get to know it again, and continue to knock yourself. Until he knocked it out completely. Repeatedly, little by little exercise, your ability will be knocked out.

In fact, I feel that when reading books, there is still a very big problem, especially for beginners or new things and knowledge points. I don’t know if you have encountered it. Sometimes, when learning the previous knowledge, it involves the latter knowledge. Because you have just learned, and you don’t know the latter, you can’t understand it, or it feels very difficult, which makes you very irritable.

to sum up

This article explains some of my views on the status quo of Android development. Some people may think that my views are wrong, but I think there is no absolute right or wrong. Let time prove everything! I am willing to learn from each other and make progress together with all the compatriots who stick to it!

Here I also share a collection of ** Android learning PDF+architecture video+interview document+source notes , as well as advanced architecture technology advanced mind map, Android development interview topic materials, advanced advanced architecture materials** to help everyone Learning to improve advanced level, it also saves everyone's time to search for information on the Internet to learn, and you can also share with friends around you to learn together

Guess you like

Origin blog.csdn.net/chayel123/article/details/114261203