This world has a "two-eight principle" that works in many places, and I think it is equally useful in Android development. To do an Android development, you may only use 20% of the Android development knowledge, and 80% of it may not be useful if you learn it.
The same is true for the interviewer, he may only have 20% of the knowledge, and an interview will not have enough time to show you all of your knowledge, but often only pay attention to the 20% most frequently encountered in development . At this time, the depth of your understanding of these issues is particularly important. Answered 10 questions, and each question is just a simple analysis. It is better for the interviewer to add points without you having a thorough and comprehensive question.
Of course, this does not mean that when you are preparing for job-hopping and preparing for an interview, you will only focus on a few topics that interest you, learn hard, and forget about other knowledge points. When you want to interview the interviewer, the easiest and safest way is to brush all the interview questions in a complete system, and then conduct self-summarization. And I successfully joined Ali's top P7 from a small factory by relying on such a method. Of course, the biggest "hero" is a set of very systematic interview questions (with in-depth answer analysis) that my college students in Ali gave me. .
Next, please allow me to share the introduction of this great hero with everyone. If you are preparing for an interview or plan to change jobs, I believe it will be of great help to you. Due to space reasons, only partial screenshots are shown. Friends who need a complete document can like + follow, and reply [888] to get it by private message!
Four major component related issues
- Activity deep analysis
- Service in-depth analysis
- Content Provider in-depth analysis
- In-depth analysis of Broadcast Receiver
- When switching between horizontal and vertical screens, the life cycle of Activity in various situations
- Life cycle comparison between Activity and Fragment
- The life cycle when the Home button is pressed when there is a Dialog on the Activity
- Comparison of the four startup modes of Activity and usage scenarios
- Which methods must be executed when jumping between two activities?
- Activity state saving and restoration
- How is Activity bound to Service
- How do Service and Activity interact with data?
- How to open the service
- Please describe the life cycle of Service
- Talk about your understanding of ContentProvider
- The relationship between ContentProvider, ContentResolver, ContentObserver
- The difference between Application and Activity Context object
Fragment related knowledge
- What is Fragment
- Fragment and Activity communication method
- Fragment life cycle in various situations
- How to transfer data between fragments?
- Have you encountered any pitfalls with Fragment and how to solve it
- The difference between getFragmentManager, getSupportFragmentManager, getChildFragmentManager
- The difference and usage scenarios of FragmentPagerAdapter and FragmentStatePagerAdapter
Custom components, animation related issues
- Describe the drawing process of View
- Talk about several constructors of custom view
- The role of onSavedInstanceState and onRestoreInstanceState in View
- The difference between onLayout() and Layout()
- Describe getX, getRawX, getTranslationX
- What are the types of animation in Android, what are their characteristics and differences
- The role of Interpolator and TypeEvaluator
- What is the difference between onTouch and onTouchEvent in event distribution, and how to use it?
- View refresh mechanism
Storage related issues
- Describe the data storage method you know
- What is the core principle of the application scenario of SharedPreferences
- Describe the way pictures are stored locally
- SQLite upgrade, adding field statement
- Database framework comparison and source code analysis
- Database optimization
- Database data migration issues
Network related issues
- Describe the flow of a network request
- HTTP message structure
- The difference between HttpClient and HttpURLConnection
- The difference between Volley, okhttp, retrofit and core principles and usage scenarios
- Describe https
- Tell me about the details of the three handshake and four wave of hands
- Describe what a socket is
- Load a 10M picture from the network and talk about the precautions
- The difference between TCP and UDP
- The difference between WebSocket and socket
Picture related issues
- Talk about the principle of three-level cache
- Describe the memory cache container
- Picture library comparison
- Source code analysis of image library
- LRUCache principle
- Talk about the specific implementation of Glide memory cache?
Layout related issues
- Talk about the ranking of layout performance, who is the most efficient
- Describe the constraint layout
- How to detect layout depth
Performance optimization related issues
- What is the cause of ANR?
- What is oom?
- What is a memory leak?
- How to prevent thread memory leaks?
- Solutions to memory leaks
- Difference between memory leak and memory overflow?
- How to analyze and optimize the performance of Android applications?
- How to analyze systrace for performance optimization?
- How to solve the performance problems caused by Java multithreading?
- Solve the white screen and black screen of the startup page?
- How to solve the slow startup?
- App startup crash exception capture
- Custom View considerations
- Https request slow solution
- Performance comparison between RecyclerView and ListView
- Optimization of ListView
- RecycleView optimization
- View rendering
- How does Bitmap handle large images, such as a 30M large image, and how to prevent OOM
- If a strong reference is set to null, will it be recycled?
JNI related issues
- Please introduce NDK
- How to register native functions in JNI, there are several ways to register?
- How does Java call c and c++ languages?
- How does JNI call java layer code?
- Have you implemented any functions with JNI? How did it happen?
Inter-process communication related issues
- How to communicate between processes?
- The role and principle of the Binder mechanism
- What is AIDL?
- Android process classification?
- Process scheduling
- Talk about the understanding of process sharing and thread safety
WebView related issues
- Describe the interaction between WebView and js
- Describe the caching mechanism of WebView
Process keep-alive related issues
- Process priority
- Android process recycling strategy
- Scheme to increase process priority
Other common problems
- Handler mechanism and underlying implementation
- The difference between Handler, Thread and HandlerThread
- ThreadLocal principle, implementation and how to ensure Local property?
- Please explain the relationship between Message, Handler, Message Queue, Looper in the single-threaded model
- AsyncTask mechanism
- How to intercept and abort a text message via broadcast?
- SpareArray principle
- The working principle of ActivityThread, AMS, WMS
- The difference between Activity-Window-View
- ViewPager usage details, how to set it to initialize only the current one each time
- Draw the general architecture diagram of Android
- Talk about the understanding of Volley
Finally, I will share an interview carefully, that is, the interview process must be polite! Even if you feel that the interviewer does not respect you and often interrupts your explanation, or you feel that he is inferior to you and the questions asked lack professionalism, you must also respect him. Who told him to choose you now and wait for you to get the offer Then you choose him. Finally, I wish everyone can enter your favorite factory!
Friends who need a complete document can like + follow and reply by private message【888】