[Gold three silver four] 2022 Android face-to-face record

1 Introduction

When the spring water is in full bloom, there is an endless stream of anglers, and the fish can't hold back, flapping their tail fins and jumping out of the water to sell at a good price.

This article truly records my whole process from preparation -> review -> interview, and shares some of my real experiences, hoping to help everyone.

2. Preparations

Before starting preparations, consider a few questions:

  • How to prepare
  • What needs to be reviewed
  • how to review
  • How to review most effectively
  • career planning
  1. How to prepare and where to start? The first is to think about whether you really need to change jobs, and then start writing your resume after confirming that you need to change jobs, and write down your personal skills, business experience, business achievements, etc.

  2. What needs to be reviewed? I personally think that the first is to review the basics of Java and Android, and then review the relevant knowledge points based on the skill points and business experience written on the resume. Sometimes, something you have done may not be described clearly, or you can't remember how to do it at all. At this time, you need to review the code and review it.

Here are some points I need to review:

  • Project experience, business, difficulties
  • Java foundation, JVM, collection principle
  • Android foundation, View system, View drawing process, event distribution, screen refresh, animation principle
  • Common tripartite library principles
  • Jetpack
  • Android Framework
  • algorithm
  • Kotlin
  1. How should I study? Take out the blogs or notes written before learning this part and review them, combined with the source code. If you have not written relevant notes before, look for relevant technical articles, summarize them, and take a look.

  2. How to study most efficiently? For a technical point or business done, it is best to review it first, and then describe it in your own words. It is best to write it in words and record it on the cloud notes for easy review at any time. Of course, this is just a point review. And there are many, many such points on the resume. We need to set a dead line , set a total review time, and what date is the deadline, and the review must be completed before the end of that date. Then arrange the points that need to be reviewed in detail to each day . What needs to be reviewed every day must be completed on the same day. It is forbidden to delay it until the next day. It is best to complete the content of tomorrow's task today, and then go to review the day after tomorrow. task content. Give yourself leeway so that even if you don't have time to review one day, you won't fall behind schedule. It is best to list all the things that need to be read for each knowledge point before starting the review plan, such as which notes, which articles, which parts of the code need to be reviewed, etc. When reviewing, you don’t need to worry about where to review. , just follow the plan that was arranged before.

Here are some parts of my plan while reviewing, tick when done

2022 Ladder Plan

  1. career planning? Before you start looking for a job, it is best to think about what you want to do in your next job, what kind of company you want to go to, and how you want to develop in the future.

3. My review materials

In this section, everyone should try to do a special review according to the content of their resume. Below are some of the materials I used when reviewing. Because these are your own skill points, you need to speed up the review a little bit and control the total review time.

3.1 Algorithm part

  • Hit the World Binary Tree https://github.com/xfhy/Android-Notes/blob/master/Blogs/Algorithm/ Hit the World Binary Tree.md
  • labuladong的fucking-algorithm https://github.com/labuladong/fucking-algorithm

3.2 Java Basics

  • Java collection source code review
  • ArrayList source code analysis https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collection/ArrayList source code analysis.md
  • LinkedList source code analysis https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collection/LinkedList source code analysis.md
  • CopyOnWriteArrayList source code analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collection/CopyOnWriteArrayList source code analysis.md
  • HashMap source code analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collection/HashMap source code analysis.md
  • ConcurrentHashMap source code analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collection/ConcurrentHashMap source code analysis.md
  • TreeMap and LinkedHashMap https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collections/TreeMap and LinkedHashMap.md
  • HashSet and TreeSet https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collections/HashSet and TreeSet.md
  • Bundle, SparseArray and ArrayMap in Android https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/collections/Bundle, SparseArray and ArrayMap in Android.md
  • Thoroughly understand String, StringBuffer, StringBuilder_20180420 from the source code point of view https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/basic/ Thoroughly understand String, StringBuffer, StringBuilder_20180420.md from the source code point of view
  • String https://github.com/xfhy/Android-Notes/blob/master/Blogs/java/foundation/String.md
  • Generics https://github.com/xfhy/Android-Notes/blob/master/Blogs/java/basic/generics.md
  • exception https://github.com/xfhy/Android-Notes/blob/master/Blogs/java/base/exception.md
  • reflection https://github.com/xfhy/Android-Notes/blob/master/Blogs/java/foundation/reflection.md
  • Annotations https://github.com/xfhy/Android-Notes/blob/master/Blogs/java/basic/annotations.md
  • Reflection performance overhead principle and optimizationhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/basic/reflection performance overhead principle and optimization.md
  • "In-depth understanding of the Java virtual machine"
  • JVM memory data area https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/1.JVM memory data area.md
  • HotSpot virtual machine object https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/2.HotSpot virtual machine object.md
  • Garbage collector and memory allocation strategy https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/3. Garbage collector and memory allocation strategy.md
  • Interpretation of Java bytecode (class file)https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/4.Interpretation of Java bytecode (class file).md
  • Introduction to bytecode instructionshttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/5.Introduction to bytecode instructions.md
  • Virtual Machine Class Loading Mechanism https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/6. Virtual Machine Class Loading Mechanism.md
  • Virtual machine bytecode execution enginehttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/7.Virtual machine bytecode execution engine.md
  • Front-end compilation and optimization https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/8. Front-end compilation and optimization.md
  • Back-end compilation and optimization https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/9. Back-end compilation and optimization.md
  • Java Memory Model and Threads https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/10.Java Memory Model and Threads.md
  • Thread Safety and Lock Optimization https://github.com/xfhy/Android-Notes/blob/master/Blogs/Java/JVM/11.Thread Safety and Lock Optimization.md
  • Pull hook education - "Android Engineer Advanced 34 Lectures"
  • Pull hook education - "Java Concurrent Programming 78 Lectures"

3.3 Android

  • "Exploring the Art of Android Development"
  • Everything you need to know about the working principle of Android_Viewhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/Everything you need to know about the working principle of Android_View.md
  • Dead Android_App_ startup process (including _Activity_ startup process) https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/ Dead Android_App_ startup process (including _Activity) _startup process).md
  • Dead Android_Service Startup Process Analysis (1) https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/System Source Code Analysis/ Dead Android_Service Startup Process Analysis (1).md
  • Dead Android_Service Binding Process Analysis (2) https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/System Source Code Analysis/ Dead Android_Service Binding Process Analysis (2).md
  • Dead Android_BroadcastReceiver_Working Processhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/System Source Code Analysis/Dead Android_BroadcastReceiver_Working Process.md
  • Lifecycle_principle analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/Lifecycle_principle analysis.md
  • ViewModel_use and principle analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/ViewModel_use and principle analysis.md
  • Jetpack family bucket https://juejin.cn/post/7013640663824597005
  • Learning Android Jetpack? Practice and tutorials are all here! https://juejin.cn/post/6844903889574051848
  • Lifecycle https://juejin.cn/post/6893870636733890574
  • LiveData https://juejin.cn/post/6903143273737814029
  • ViewModel https://juejin.cn/post/6915012483421831175
  • MVVM https://juejin.cn/post/6921321173661777933
  • DataBinding https://juejin.cn/post/6923859213403979789
  • Everything you need to know about the Handler mechanismhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/everything you need to know about the Handler mechanism.md
  • Dead Android_ContentProvider_Start https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/System Source Code Analysis/ Dead Android_ContentProvider_Start.md
  • LiveData_use and principle analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/LiveData_use and principle analysis.md
  • The relationship between Window, Activity and View https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/Window, Activity, View relationship.md
  • Handler synchronization barrier https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/Handler synchronization barrier.md
  • Choreographer principle and applicationhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/Choreographer principle and application.md
  • Handler related knowledge points https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/system source code analysis/Handler related knowledge points.md
  • LeakCanary principle explorationhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/triple library principle/LeakCanary_principle exploration.md
  • Exploration of the principle of OkHttp3https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/principle of tripartite library/OkHttp3_principle exploration.md
  • Retrofit principle analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/triple library principle/Retrofit_principle analysis.md
  • Glide main process source code analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/triple library principle/Glide main process source code analysis.md
  • RxJava3 principle analysishttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/triple library principle/RxJava3 principle analysis.md
  • Detailed explanation of Android-skin-support skinning principlehttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/triple library principle/Android-skin-support detailed explanation of skinning principle.md
  • Screen Adaptationhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Combat FAQ/Screen Adaptation.md
  • Plug-in https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Combat FAQ/plug-in.md
  • Hot Update https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Combat FAQ/Hot Update.md
  • Gradle Series (1) Groovy Foundation https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle Series (1)_Groovy_Basic.md
  • Gradle series (2) Gradle execution sequence and tasks https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle series (2) _Gradle execution sequence and tasks.md
  • Gradle series (3) Gradle configuration build and channel package https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle series (3) _Gradle configuration build and channel package.md
  • Gradle series (four) Gradle plugin https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle series (four)_Gradle plugin.md
  • Gradle Series Plugin Exercises - Dynamically Remove Permissionshttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Gradle Series_Plugin Exercises - Dynamically Remove Permissions.md
  • Teach you how to use Transform API and ASM to implement an anti-quick click casehttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/Gradle/Teach you how to use Transform_API and ASM to achieve an anti-quick click case.md
  • Android inter-process communication: AIDL in simple terms https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/multi-process/AIDL-detailed.md
  • Android inter-process communication: Messenger detailed explanationhttps://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/multi-process/Messenger detailed explanation.md
  • Android inter-process communication: Binder detailed explanation https://github.com/xfhy/Android-Notes/blob/master/Blogs/Android/multi-process/Binder detailed explanation.md
  • Hardcore! In-depth analysis of the whole process of Android application startup! (Process creation + message mechanism + Activity component management + Application and Activity initialization + UI layout and drawing + RenderThread rendering + SurfaceFlinger synthesis) https://mp.weixin.qq.com/s/b6-leHKQZkuxkjll-1109A
  • The principle and application of Choreographerhttps://blog.csdn.net/xfhy_/article/details/115436765?spm=1001.2014.3001.5502
  • Finally understand, screen refresh https://juejin.cn/post/6863756420380196877
  • How View works https://juejin.cn/post/6854573212374663182
  • Compilation base https://juejin.cn/post/6844904106545414157
  • Android plug-in principle (1) Activity plug-in https://juejin.cn/post/6844903613865672718
  • ClassLoader http://liuwangshu.cn/tags/ClassLoader/
  • All Kotlin parts of hencoder https://rengwuxian.com/tag/kotlin/
  • All custom View parts of hencoder https://rengwuxian.com/tag/custom-view/
  • Coroutine principle https://juejin.cn/post/6862548590092140558
  • flow https://juejin.cn/post/6914802148614242312
  • Reflection | Officials are also powerless? Design and Implementation of Android SharedPreferences https://juejin.cn/post/6884505736836022280
  • Understanding of ActivityThreadhttps://blog.csdn.net/hzwailll/article/details/85339714
  • Learn about AMS http://liuwangshu.cn/tags/ActivityManagerService/
  • Detailed explanation of Android Gradle custom task https://blog.csdn.net/zhaoyanjun6/article/details/76408024
  • Compilation and packaging process https://juejin.cn/post/6844904106545414157
  • Android Gradle is enough to read this article https://juejin.cn/post/6844903446814916621#comment

4. Technical interview questions

Only some companies and some topics are recorded. Sometimes I forget to record them after the interview, and I can't remember them later.

Company 1:

  • Package size optimization
  • handler principle
  • How to quit the app
  • synchronized和lock
  • Did Hongmeng understand?
  • Did you know about flutter? What about compose?
  • Cross-process communication, thread communication
  • How does componentization work?
  • Projects you have done, what are you mainly responsible for?
  • role
  • What's the hardest? how to solve
  • What is the development process like? Do you have design documentation?
  • Career planning, why do Android? Does Hongmeng understand?
  • How do you usually study? What have you learned recently? What are the benefits to work?
  • Which technical books have you read?
  • What are your hobbies?
  • What are the requirements for the company team you want to work for? Or what kind of project group do you want to go to?

Company 2:

  • The difference between sleep and wait
  • mvp
  • componentized
  • livedata, viewmodel principle
  • memory optimization
  • Start optimization
  • leakcanary principle
  • skinning principle
  • how to hook ams

Company 3:

  • Principles of volatile, synchronized, and atomic classes
  • How database optimization is done
  • performance optimization
  • kotlin companion object and init
  • Fibonacci sequence
  • reverse linked list

Company 4:

  • fragment life cycle
  • screen refresh mechanism
  • binder understands
  • bindService check: permission, package name
  • The principle of https
  • reactive programming
  • Hotfix: classes and resources
  • The difference between invalidate and postInvalidate
  • The handler principle, how is sendMessageDelayed implemented, why is it not stuck on the main thread, and how does the bottom layer notify the process to resume blocking?
  • To what extent have you mastered java, what about kotlin? what about android?
  • reactive programming
  • Which books have you read? Recommend a book that you think is good, why is it good
  • Android frameworks worth paying attention to in the past 2 years
  • Agile development model
  • You rate your own level and plan how to improve and refine your technology stack

Company 5:

  • The app startup process + activity startup process, the principle of launchmode in the activity startup process
  • handler
  • java method overloading problem, generics related
  • Caton optimization, cold start optimization, online monitoring method
  • Online monitoring of slow functions

Company 6:

  • How to execute 3 threads sequentially
  • Design an image loading library, lrucache principle, linkedhashmap implementation
  • lifecycle, viewmodel principle
  • view event dispatch

Company 7:

  • gc roots
  • JVM garbage collection algorithm, Android virtual machine garbage collection algorithm
  • Generational recycling ideas
  • Java class loading mechanism
  • There are several types of thread pools, what are their characteristics, what needs to be paid attention to in custom thread pools, and what is the number of core threads
  • Hashmap principle (will the red-black tree return to a linked list? Under what circumstances?), ConcurrentHashMap principle, Hashtable principle
  • StringBuilder and StringBuffer principle
  • The principle of reflection and its advantages and disadvantages
  • What are generics used for?
  • Synchronized usage and principle, what optimizations have been made in 1.6, Mark word
  • Commonly used three-party library principles, just pick one and say
  • skinning principle
  • What kinds of animation are there, the principle of attribute animation, vsync
  • View drawing process
  • When requestLayout is called multiple times in a short period of time, which Views will be redrawn
  • Cold start optimization
  • Package size optimization
  • Plug-in principle, startActivity
  • mvc,mvp,mvvm
  • requestLayout process
  • Algorithm 1: Reverse words
  • Algorithm 2: The ring linked list finds the entry node of the ring, the fast and slow pointers are not allowed, O(1) space complexity, O(n) time complexity, the pointer and data of the linked list node can be modified. Cannot add attributes to linked list nodes

Company 8:

  • Tell me about the structure of the project, which part are you mainly responsible for? Tell me how it was designed
  • principle of livedata
  • handler principle
  • Componentized delivery of big data
  • Data thread safety in singleton
  • Memory optimization, freeze optimization, cold start optimization
  • How to detect objects that have memory leaks? don't know who that object is
  • Coroutine and RxJava principle, difference

Company 9:

  • view drawing process
  • Event distribution process, external interception method, internal interception method
  • Kotlin coroutine, coroutine principle, how to open coroutine, how to cut thread
  • Viewpager internal view height is inconsistent, how to solve
  • startActivity process
  • Startup optimization, package size optimization
  • principle of livedata
  • gradle vest bag
  • skinning principle
  • coroutine state machine
  • The difference between let and also
  • mvvm

5. HR side

Generally speaking, the HR face is relatively easy, and it will not involve any difficult problems. Usually, you will be asked why you left, where you live, whether you have a partner, are you married, have children, how old are the children, have you bought a house, where are you from, and then HR will introduce the company’s situation, products, company plans, and benefits. Category. The following are some of the more important issues that I have collected on the Internet, and I need to get to know HR in detail.

Every question is important and must be asked

  • Salary is *12?
  • Is there a year end?
  • Five insurances and one housing fund are the full amount? What percentage?
  • Working overtime for money?
  • promotion system, salary increase system
  • annual leave?
  • What is the performance appraisal like?
  • lunch break, commute time
  • Double break?
  • How long is the trial period? Standardization
  • Work intensity

6. Other Notes

  • Technical review: After each round of technical interviews, there must be some questions that were not answered well or not answered. After returning, you need to sort out and review them in time. It is best to retell this question in your own words.
  • Know in advance the products and directions of the company you are going to interview for
  • Know in advance how long it will take for your current company to resign
  • Social security and provident fund cannot be interrupted
  • Try to interview remotely to avoid delaying your current job

7. Finally

Now is the peak recruitment season for gold, silver and silver. I wish all partners who are looking for jobs can find the jobs they like.

Guess you like

Origin blog.csdn.net/xfhy_/article/details/123285535