Distressed! As an Android developer, if you want to join Meituan, you don’t even know these knowledge points!

Write at the beginning

After spending 2 years in outsourcing, I found that it didn’t help the technology. So at the end of 19 I decided to switch to a better location. I didn’t expect that compared with previous years, this year’s interview did not look so smooth, and it was somewhat affected by the epidemic. , So the initial interview was not very smooth, but I was surprised that the first company that gave me an interview opportunity turned out to be Meituan. When I first received the interview notice, I felt very complicated, nervous and excited. This interview, a total of three rounds, a total of about four hours, these three rounds of interviews are simply soul torture to me. As for the ending, let's look down!

Not much to say, how about the interview scene, everyone, let's take a look. In addition, the answers to the interview questions and review materials involved in the following are all shared in the full PDF version. If you need a partner, click here to see all the content .

I divided the interview questions into several modules, so they did not follow the order of the interview:

Android basic knowledge points

1. The life cycle of the four major components
2. The communication method between activities
3. The life cycle of the Activity in various situations when switching between horizontal and vertical screens
4. The life cycle comparison between Activity and Fragment
5. When there is a Dialog on the Activity Life cycle when you press the Home key
6. Which methods must be executed when jumping between two activities?
7, the foreground switches to the background, and then back to the foreground, the Activity life cycle callback method. Pop up Dialog, life value cycle callback method.
8. Comparison of the four startup modes of
Activity 9. The activity state is saved in recovery
10. How is the life cycle of fragment management under various conditions
11. What is the principle of opening the Service?
12. Please describe the life cycle of Service.
13. Please describe the understanding of broadcasting BroadcastReceiver, the classification of broadcasting, and what is the underlying principle of communication?
14. The difference between AlertDialog, popupWindow, and Activity
15. The difference between Application and Activity's Context object
16. Android attribute animation characteristics
17. How to import external databases?
18. LinearLayout, RelativeLayout, FrameLayout characteristics and comparison, and introduce the usage scenarios
19. Talk Talk about the understanding of interfaces and callbacks
20. Introduce SurfceView, what is its application scenario, and what is the difference between it and ordinary View?
21. The role of serialization, and the difference between the two serializations in Android
22, the differencer
23, the estimator
24, the data storage method in Android

Android source code analysis

1. The realization principle of Android animation framework
2. The difference of API of each version of Android
3. The difference and connection of Requestlayout, onlayout, onDraw, DrawChild
4. The difference and use of invalidate and postInvalidate 5. The difference between
Activity-Window-View
6. How Optimizing a custom view, what is your general direction for optimization?
7. How to implement high version api in low version SDK?
8. Describe the process of a network request.
9. The relationship between HttpUrlConnection and okhttp.
10. The understanding of Bitmap objects.
11. The looper architecture.
12. The working principle of ActivityThread. AMS .. WMS.
13. How to consider the model adaptation of the custom View.
14. AstncTask+HttpClient. What is the difference with AsyncHttpClient?
15. LaunchMode application scenario
16. How to use AsyncTask?
17. SpareArray principle
18. Several ways of communication between AndroidService and Activity
19. IntentService principle and function?
20. Talk about the relationship between Activity, Intent, and Service
21. The difference between ApplicationContext and ActivityContext
22. Is the SP process synchronized? Is there any way to achieve synchronization?
23. Talk about the use of multithreading in Android
24. The life cycle of processes and applications.
25. How to know the size of the view when encapsulating the View.
26. The principle of RecycleView. How to avoid the memory problems caused by RecycleView.
27. The role and understanding of AndroidManifest

Some common principle problems

1. Handler mechanism and underlying implementation
2. Differences between Handler, Thread and HandlerThread
3. Handler sends messages to child threads. How to start looper?
4. Regarding the Handler, what thread is the new Handler everywhere?
5. ThreadLocal principle, implementation and how to ensure the Local property?
6. Please explain the relationship between Message, Handler, Message Queue and Looper in the single-threaded model.
7. Please describe the View event delivery and distribution mechanism.
8. Touch event delivery process.
9. What is the difference between onTouch and onTouchEvent in event distribution. , How to use it?
10. What are the callback methods related to event distribution for View and ViewGroup respectively.
11. View refresh mechanism.
12. View drawing process.
13. Custom control principle.
14. How does a customized View provide an interface for obtaining View properties?
15. Implementation of WAP-based networking in Android code
16. AsyncTask mechanism
17, AsyncTask principle and shortcomings
18. How to cancel AsyncTask?
19. Why can't I update the UI in the child thread?
20. What is the cause of ANR?
21. ANR positioning and correction
22. What is oom?
23. What causes oom?
24. Is there any solution to avoid OOM?
25. Can Oom try catch? Why
26. What is a memory leak?
27. What causes the memory leak?
28. How to prevent thread memory leaks?
29. The solution to the memory leak field
30. The difference between memory leak and memory overflow?
31. The default cache size of LruCache is
32, and the permission management of ContentProvider
33. How to intercept and abort a text message through broadcast?
34. Can broadcast request the network?
35. What is the time limit for anr caused by broadcasting?
36. Calculate the nesting level of a view
37. Activity stack
38. Is there an upper limit for Android threads?
39. Is there an upper limit for the thread pool?
40. Why does Android introduce Parcelable?
41. Have you tried to simplify the use of Parcelable?
42. Can the loading process of the dex file be described?

About my learning style

  • Multiple summary, multiple output

Write more articles and output quality content

In addition to the well-known blogging, knowledge can also be linked by drawing pictures

Including flowcharts and mind maps, first draw the parts you remember on the map (Xmind is recommended here)

For example, I do this for mind maps:

Android development knowledge system→Java basic knowledge, Android basic knowledge, performance optimization, NDK...

Then performance optimization is subdivided into startup optimization, UI rendering optimization, memory optimization, APK optimization...

If you continue to build in this way step by step in the long run, you will have a qualitative leap in your own knowledge control!

If you just find a knowledge system diagram of a training institution, you can also play a role in checking and filling vacancies yourself:

In the process of drawing your own map, if you encounter something that you can’t write, I think you know which one you want to improve, right?

This has another advantage: systematic learning

Usually when everyone learns (jie) learns (jue) knows (BUG) knowledge, it is fragmented knowledge, and it is very easy to forget later, and if you use the form of mind map to integrate these fragmented knowledge, even Use it frequently at work, the effect will be very good.

  • Learn the various technologies of first-line manufacturers

Dachang is our technology pioneer, not only various technologies, but also many eye-opening methods of use. Learning these is conducive to the improvement of your own competitiveness. After deep understanding, you can further improve your learning efficiency.

In this regard, usually for those questions that I can’t answer, I will directly ask the interviewer how to solve this or what ideas should be done. After the interview, I quickly write it down and go back and operate it a few times.

In addition, there are omnipotent group friends, and you can learn a lot when you communicate.

  • Regular interview

Go out for an interview every once in a while. The purpose of the interview is not necessarily to find a good job, but to know what your strengths and weaknesses are? Know what kind of people the market needs?

Regular interviews can help you understand which technologies are needed in the current market, and it is easier to determine where your shortcomings are. At the same time, you can learn more in a more targeted manner, and you will encounter points that you do not know during the interview. You can also take the opportunity to ask questions to the interviewer and learn a wave of technical operations of big factories

If you are lucky and get a high-paying offer, wouldn't it be more profitable?

Similarly, because the interviewer is also a peer, you can also collide with different ideas.

Just imagine? If you stay in a company and don't know what's going on outside, it's very scary, at least I think so.

I've said this before, and I copied it again shamelessly...

  • Read more of the study notes of the boss, and learn the design ideas of the boss

After communicating with a big guy before, I got his "Notes on Android Development Core Knowledge Points"

The pure catalog pages are very, very long...Big guy, worthy of being a big guy...

Now he has uploaded "Notes on Android Development Core Knowledge Points" to GitHub, friends who want to see can go directly to GitHub

  • Cooperate with various materials to assist learning

In the current era of information sharing, many resources can be found on the Internet, depending on whether you are willing to find or find the right method.

Many friends are not without information, most of them have dozens or hundreds of Gs, but they are messy and they don't know how to look at them, or even forget them after reading them.

At this time, you can read the source code, read the actual combat notes, and learn the ideas of God

"Programming language is the way the programmer expresses, and the architecture is the programmer's perception of the world." Therefore, if programmers want to quickly understand and learn the architecture, reading the source code is essential. Reading the source code is to solve problems + understand things, and more importantly: see the ideas behind the source code; programmers say: read thousands of lines of source code, and practice thousands of ways.

Mainly include WeChat MMKV source code, AsyncTask source code, Volley source code, Retrofit source code, OkHttp source code, etc.

"486 pages of super comprehensive Android development related source code refined analysis"

At last

I want to share with you:

"If you love, then please continue to love, your efforts will eventually be matched with the rewards. If you feel that there is no hope in front of you, you may wish to hold on for a while,' Today is cruel, tomorrow is cruel, but the day after tomorrow is beautiful ' ' Winter has already come, can spring be far behind? ""

The truth is this truth, but "everyone knows the great truth", and those who are successful apply these principles to work and life.

Finally, the above content is free to share with everyone, friends who need the full version, click here to see all the content . Or follow the homepage scan and WeChat to get it.

 

Guess you like

Origin blog.csdn.net/weixin_44339238/article/details/111463395