Preface I started looking at it at the end of last year. There are not many good opportunities for Android, but it’s okay. There are still some interview opportunities for those with more than 3 years of Android development experience. However, the threshold is not as low as it was a few years ago. The general experience is that small startups pay more attention to whether your project experience fits your own and whether you can come here to work independently. In addition to project experience, large companies also pay more attention to the breadth of your knowledge, which is a multi-faceted assessment of breadth, depth, and solutions. You need to accumulate enough knowledge during work. If you only practice questions temporarily, you probably won’t pass the test if you only talk about the fur. [[229936]] Below is a summary of some of the questions I encountered, in various styles. Here are the questions first. Interview questions The coordinates are hz, and the letters of the factory names are used. You can guess for yourself. This compilation of questions does not guarantee that you will encounter the same questions. Depending on the position and the interviewer, the questions may be very different. For example, students who work on middleware are asked about the details of hot fixes, etc. Generally speaking, Alibaba's interviews are very formal, starting from the basics of Android to a certain degree of understanding and summary questions, and then returning to the basics and principles of Java. They mainly focus on questions on the resume, or diverge from the resume. The questions will gradually go deeper from the surface to the inside, and they will test your understanding of the project you are responsible for and the knowledge principles used in it. Because it is written down from memory, the following questions are not in order. Here they are classified by position, which can give a gradual feeling. 1.tb: Phone interview - What is dp and sp? What is the difference?
- What callbacks should be paid attention to when customizing View and ViewGroup?
- Causes and solutions for interface freezes
- Storage Types in Android
- Have you used service? Basic calling methods
- Handler mechanism
- LinearLayout, FrameLayout, RelativeLayout performance comparison, why
- Activity life cycle, will other life cycles continue after finish is called?
- Are you familiar with the FW layer? Have you read the source code?
- Are you familiar with the GC recycling mechanism? Do you know the generational algorithm?
- Java class loading principle
- How to troubleshoot memory leaks, MAT analysis methods and principles, and what are the causes of various leaks, such as
- Why Handler leaks
- Are you familiar with gradle? Do you know automatic packaging?
- Introduce the first app architecture and communication
- What modules have you been responsible for? What are your advantages compared with your colleagues?
- What impressive problems did you encounter and how did you solve them?
On-site interviews: three First: - What work have you done recently?
- What impressive problems did you encounter? A: I will ask about the specific implementation of the project you introduced.
- Does push message have rich text?
- Do you know about hot fixes? What do you use?
- Is there a limit on the size of the APK package? How to reduce the package size?
- Have you used or written any tools at work? Scripts, plugins, etc.
- For example, when multiple people are collaborating on a project, they may each have a copy of the same resource. Is there a way to automatically detect this duplication?
- Have you ever written native low-level code?
- Are you familiar with view drawing? Please introduce it to me.
- gc related algorithms
- What causes anr and how to troubleshoot it
- Are there any optimization measures for the interface? For example, list display, etc. Have you encountered memory problems? How did you optimize it?
- What design patterns have you used?
Second: - What have you done in the past year?
- We will ask you about the skills highlighted on your resume in detail:
- For example: the specific steps of audio synthesis, as well as some problems encountered and detailed processing.
- Some questions will be asked based on the interview, such as, how to avoid the problem of some lag when playing again after reaching the end of the seek method, from the perspective of interactive design or technology. (I personally said that I didn't pay much attention to this.)
- How many people are in the project team and how to allocate work?
- How do threads communicate with each other?
- What is the architecture of the app, and why is it like this? What are the advantages and disadvantages?
- Are you familiar with the algorithm? Given a binary sorted tree, an algorithm problem is given to find the next element (the next one in order of size) of a given node.
- Why are you looking for a job? What are your advantages?
Third: Technical questions are no longer limited to resumes, but may be progressive and diffuse based on the resume and answers. - I feel that the technical interviewers did not communicate with each other before and might ask similar questions.
- Introduce your main responsibilities
- What is the life cycle of Activity? Do you know onRestart? Please introduce it to me
- Do you know savedInstanceState? What is it used for? When does it have a value? When is it empty? How is it usually used?
- Are you familiar with View drawing? Can you introduce it and explain the implementation principle?
- What development tools and analysis tools do you usually use?
- What is ANR? How to check it? Can Service cause ANR?
- What are the startup modes of Activity? The stack is ABC. I want to go directly to A and clear BC. How many ways can I do this? How many instances of A are produced by these methods?
- Is there any tool to see the Activity stack information? If there are multiple stacks, is there a way to get the Activity list of each stack separately?
- What commands are you familiar with? Do you know how to start an Activity with a command?
- What is the difference between apply and commit of SharedPrefrences?
- Have you seen functions with $ in Java? What does it mean?
- Is MD5 an encryption method? What about Base64?
- I have a blog and github. What do I write about? What are the people paying attention to?
- What are the new features of Android 8.0?
That's about it. ***Every interviewer will let you ask him questions. two. - Glide cache strategy? Does the same image have anything to do with size?
- What are the animations in android
- View event delivery mechanism
- How to troubleshoot and optimize interface freezes?
- What is the difference between replace and end of Fragment?
- MVP, MVVM, MVC explanation and practice
- Beyond the project, insights into technology and expanding knowledge
Second side: - How to implement WeChat Jump Plug-in and how to detect it?
- How to effectively detect rectangles in a solid color background?
- Do you know the SO algorithm for docking? Have you come into contact with related libraries?
- Choose one of the three algorithm questions and write a test case: print all prime numbers between nm; count the number of times 1 appears between nm; specify the sorting of the number sequence;
- What source code of the Android API layer are you familiar with? Explain
- When is ACTION_CANCEL triggered? Will touching the button and then sliding to the outside and lifting it trigger a click event? Will sliding back and lifting it after + + trigger a click event?
- How to deal with the sliding conflict of nested Views
- Are you familiar with the principles and frameworks related to hot fixes?
- Are you familiar with the gradle packaging process?
Random Question Session: You can actually ask questions you encountered in previous interviews: For example, when developing multiple modules, different responsible persons may introduce duplicate resources, the same string, the same icon, etc., but the file names are different. How to remove the duplicates? 3. NetBase: - The underlying mechanism of Canvas, drawing framework, the principle of hardware acceleration, and the buffer of canvas lock
- surfaceview, suface, surfacetexure, etc., as well as the underlying principles
- Android file storage, the evolution of permission control of storage locations in each version, external storage, internal storage
- What pitfalls do upper-level business activities and fragments encounter? Some pitfalls and optimization experiences in page display
- Open source framework for network requests: Introduction to OKHttp, have you ever written an interceptor?
4. Netbase: AI - Is there unified management of the data layer? How is data caching done? Is there unified management of http requests?
- Is there any useful mode? Is the logic in the Activity layer? How to separate it?
- If some decoupling strategies are used, how to manage the life cycle?
- Is there any way to increase compilation speed?
- Is there any unified management of threads in the application?
- JNI algorithm providers are all main thread? Do you want to ask about the service class?
- What is edge detection used for? Does anyone know anything about deep learning?
- Have you done any performance analysis on the app after it goes online?
5.yz: - How to communicate between processes? How many parts does Binder consist of?
- Difference between HttpClient and HttpConnection
- View event delivery mechanism
- What are MVC, MVP, and MVVM?
- What are the commonly used design patterns in Android? What are three more advanced ones?
- Memory optimization, OOM causes and troubleshooting methods
- How to change the height of listview?
- What is Https?
- In addition to daily development, what other work have you done? For example, continuous integration, automated testing, etc.
6. DiDi: More comprehensive - ActivityA jumps to ActivityB and then B presses back to return to A. The order of their respective life cycles is opaque to both A and B.
- What is the difference between the Synchronize keyword followed by a class or an object?
- In the DCL mode of a singleton, should the private variable of that singleton be added with the volatile keyword? What is the use of this keyword?
- JVM reference tree, what variables can be used as GCRoot? Several methods of GC garbage collection
- What is ThreadLocal? Why is there no ANR in the message dead loop in Looper?
- Where is the main method entry in Android
- jdk1.5? How do SparseArray and ArrayMap find their own data structures?
- Implementation, the difference from HashMap
- What are the differences between Runnable and Callable, Future, and FutureTask? Which one is used by AsyncTask? Is AsyncTask executed sequentially? Will there be any exceptions if new AsyncTask is executed 200 times in a for loop?
- What is the life cycle of IntentService, where to use it, etc.
- What is the difference between RecyclerView and ListView? Partial refresh? How to avoid sliding lag in multiple types of scenarios when using the former. How to implement lazy loading and how to optimize the sliding experience.
- Have you ever used SQLite database upgrade?
- Open question: How to improve the startup speed and what issues to pay attention to when designing a lazy loading framework or SDK.
- What methods does Scroller have and how to use it?
- Share the problems encountered in the project
- Webview understands how to communicate with javascript? Mutual communication. @JavascriptInterface has a bug in the version. Is there any other solution to call Android methods besides this?
- How much do you know about ReactiveNative
- Are you familiar with JNI and NDK? How to call Java and C methods?
Some suggestions - The resume must be written truthfully, and the relevant knowledge points must be thoroughly understood.
- The foundation is solid. There is a lot of information on the knowledge tree related to Android and Java on the Internet. Even if you have read it, you may not be able to explain it well.
- Summarize in advance, what other technologies are you good at? This kind of open question depends on your knowledge.
- Learn to ask questions. Do you have any questions for me? This polite question is also a good opportunity to get to know the other person.
- Good psychological quality. No matter what situation you encounter, if the interviewer is late, has a cold and impolite attitude, questions your answers, etc., don't panic or reject it. You must stay calm, think patiently and actively, and answer the other party's questions.
- I recommend a few books. After several interviews, I found that most of the answers are covered in them. "Exploration of the Art of Android Development", "Android Source Code Design Patterns - Analysis and Practice", "Android Advanced Light", "In-depth Understanding of Java Virtual Machine", read them several times.
The interview process of large companies is relatively long, and the interview is a comprehensive test. If you want to change jobs, it is best to prepare fully in advance. |