Basic introduction
I was laid off during the pandemic.
Review and prepare interview questions from the beginning of March. The review materials are mainly “Exploring the Art of Android Development” and the blog of @Jsonchao, as well as other blog materials online. First introduce their basic situation: slag this graduation fast 4 years, has been in a small factory fish muddle along, education background and resume background is not very good-looking, so the interview invitation is not a lot of, the interview is also everywhere. Interviews begin in mid-March and continue until the end of April. I interviewed 9 companies and nearly 20 rounds of interviews. I got offers from 2 small companies and 1 listed company (not a famous one), and finally prepared to work for a listed company. I also applied for the positions of BAT, 360, Douyin, Kuaishou, Ping An and other large factories, but most of them did not give me the opportunity of interview. A few large factories also rejected me in the follow-up interview, because of my lack of solid basic knowledge and technical depth.
Share the interview
Every round of interview will have a self-introduction, so you can prepare a self-introduction before the interview, to introduce yourself to the interviewer. I’m only going to share the Android technology interview questions here (grouped by company and aggregated over several rounds of interviews), and the interviewer will continue to ask you “No” at each interview. As for the answers to the interview questions, Google your answers and try to be as complete as possible during the interview to score points with the interviewer. It is suggested that before you start interviewing for a job, you should first find a few small companies to get a sense of the interview, and then invest in the company you expect.
Here are the interview questions:
The company a
- Componentization and Arouter’s principle
- Recyclerview is different from ListView
- Glide process, compression before cache, cache hit
- APP performance optimization, memory optimization, layout optimization, drawing optimization, memory leakage
- Http is different from Https
- The socket heartbeat packets
- JVM virtual machine, heap and stack structure
- Activity startup mode, what are the differences
- Stack Features: Custom stack structure
- Kotlin disadvantages
The company
- Custom view, Chinese and English string width and height measurement display, measurement algorithm, scalability
- Event distribution mechanism
- The Activity, view, contact window
- Hot repair and plug-in principles
- Synchronized underlying principle, Java lock mechanism
- Java container, difference between HashMap and HashTable, principle of HashMap, capacity expansion process, advantages of perturbation algorithm
- ArrayList< String > = ArrayList< String > = ArrayList< String > = ArrayList< String > = ArrayList< String > = ArrayList< String
- Http is different from Https, SSL/TLS process
- Android Performance Optimization
- JVM, heap and stack structures, stack frames, JMM
- Componentization note, communication mechanism between components
- What are the thread-safe singleton patterns
- Familiar design patterns
Three company
- MVC,MVP,MVVM
- The Activity and the fragment lifecycle difference, the difference between normal add fragments and viewpager added, fragments lazy loading principle, FragmentPagerAdapter and FragmentStatePagerAdapter
- Hot fixes and plugins
- Umeng bug statistics, how to locate the bug after confusion. In the APP without access to hot repair, how to solve the bug after going online
- View drawing principle (can talk about basic view drawing first, then talk about screen refresh mechanism)
- Use Analyze to reduce APK volume, principle
- Android Version Differences
The company four
- Base type bytes, how many bytes are Chinese characters, threads and processes
- There are four major components, fileProvider and Contentprovide, and activity startup process
- MVC,MVP,MVVM
- TCP three handshakes, four waves
- Eventbus, Glide principle
- Performance optimization, memory jitter, memory leak, memory overflow, handler mechanism, IntentService and handlerThread, methods for child threads to update view contents
- GC recovery algorithm
- Recyclerview is different from ListView
- Componentization, modularization, plug-in, hot repair
- How did you solve the problems you encountered at work
- When does Kotlin use semicolons, run,with,apply, inline functions, and higher-order functions
- APK volume optimization
- Interprocess communication
- Singleton pattern, which is safe
- Retrofit design patterns
- The custom view
- Have you done audio, video and IM?
- APK performance optimization
- CurrentHashMap1.7 is different from 1.8
- What is atomicity guaranteed for the volatile keyword?
- Network optimization
- Ideas about new technology
- Java generics, covariant and contravariant
The company five
- HTTPS Procedure
- Common design patterns, proxy patterns and decorator patterns are different
- If the server returns the wrong JSON data, how can the client customize the model
- Hook technology
- Kotlin understands coroutines
- Screen adaptation
- Usage and principles of the packet capture tool
- Network optimization
- Future expectations, understanding of the company
- Okhttp rxjava, glide, retrofit, the principle of Okhttp underlying data transmission principle, HTTP style structure
- APK volume optimization
- Android Jetpack usage and principle, new technology view
- CrashHandler Obtains information about the application crash
- Recyclerview and ListView cache difference
- Android common crash analysis and general solutions
- NestedScrollView touch mechanism, AOP related knowledge
- Design APP and select the overall architecture
- The Android sandbox communicates with underlying Linux
- When is ACTION_CANCLE triggered
- Thread Pool Principle
The company six
- Componentization, Arouter, componentization UI, and routing frameworks. AS debugging method
- MVC,MVP,MVVM,Jetpack
- JVM,JMM, Java steps for loading objects, classLoader,GC collection algorithm
- Plug-in and hot fix
- Unique Android ID, Knowledge of Android security, encryption algorithm, determine the activity foreground process
- TCP three handshakes and four waves
- Hash algorithm, HashMap, how to resolve hash conflicts
- Load big picture, Glide caching mechanism, design mode, double detection of the singleton mode why check twice, their own design picture loading framework ideas
- Start an unregistered Activity
- AOP, Bluetooth development, IOT
- Glide cache clearance: Lrucache algorithm
- Glide cache file is too large, search efficiency is slow how to optimize? Glide download HD picture optimization
- Recently studied technology, encountered the most difficult thing, expectations of the company
Company seven
- Componentization, advantages and disadvantages of Arouter
- MVC,MVP,MVVM
- Highlights of the project, understanding of architecture
- Handler principle and related knowledge, message recycling policy
- Hashmap principle, ArrayMap principle, compare performance.
- Why is a hashMap greater than 8 converted to a red-black tree and why is the loading factor 0.75
- Synchronized underlying principle, Java lock mechanism
- Services and Broadcasting
- Activity start mode (give example specific analysis, A(standard)- B(singleton)- C(singleTop)- D(singleTask), analyze several stacks, each stack of activities)
- Common design pattern, thread-safe singleton pattern
The company eight
- The static and final; Inheritance and polymorphism
- Componentization, advantages and disadvantages of Arouter
- Context
- This section describes the principles of the Handler cache pool.
- Performance optimization, startup speed optimization, architecture
- Java Virtual machines are different from Dalvik and ART
- Kotlin coroutines, extension functions and properties, and associated objects
- How to design an APP architecture for the home page of e-commerce APP
- A: Network requests and Javabeans are related to data models
- Glide’s memory EngineKey is guaranteed to be unique. A: There is a queue that stores the EngineKey for comparison after each generation. I did not find the right position in the source code, if you know, please help to explain.
- How does Retrofit translate the Service interface into the Javabeans we need?
- How to do management, new technology learning
The company nine
- SqLite is different from contentProvider
- Fragment interval. The switchover interval between two fragments changes. The two fragments communicate
- HTTPS certificate verification, encryption related, network request framework
- Glide loading process, large picture display, picture size calculation
- View drawing (starting with onSync())
- Thread memory model, communication between threads
- The width and height of the view, the way to update the view, the main thread message mechanism
- OOM, Memory leak, Memory overflow, Java reference type, ANR analysis
- APP performance optimization, WebView related, Webview optimization, Intermodulation between Android and JS in WebView
- Plug-in and hot fix
conclusion
Resume to write things, must first understand, especially resume on the professional skills. The most feedback I received in this interview is that the basic knowledge is not solid enough, and the technical depth is not enough. Now most of Android development needs to know some C++ and Linux knowledge, large factories also need to brush algorithm interview questions, in the following learning process, I will start from the above aspects. Of course also must learn basic knowledge firm, technical depth makes depth bit.
Finally, I wish everyone can get the desired offer!