I will graduate in 2017. I have been engaged in Android development for 3 years now. I just finished a job hopping some time ago and interviewed several companies.

resume

The first is the resume, usually find a template, fill in the skills and project experience.

A good template is available on Github, github.com/CyC2018/Mar…

After the project clone, personality resuem. md can be, and then export as a PDF file.

The recommended length for a resume is two pages, too long or too short.

It is suggested to replace understanding and mastery with mastery and proficiency.

Brush the topic

Algorithm problem can be said to be looking for a job must brush now. However, according to my interview experience, the algorithm questions in general asked or less, and some companies are basic do not ask the algorithm.

Of course, if you encounter bytes, fast hand this round to ask the algorithm of the company, if because of the algorithm problem can not get the offer is a pity.

Algorithm problem is like the college entrance examination Chinese ancient poetry memorization, scores are not much, but lost is a pity.

In my experience, about 100 questions is enough for an interview.

Of course, complete mastery requires repeated practice, not brushing.

Here recommend the geek time qin Chao five times brushing method:

Five times brushing method

1. First time, look directly at the solution

Multiple solutions, compare the advantages and disadvantages of solutions, written solutions

2. The second time, open LeetCode and start writing directly

Comparison and tuning of various solutions

3. Do it again a day later

4. The fourth time, after a week, again and again.

5. The fifth time, one week before the interview, recovery training

Every Thursday on geek time, Qin Chao will have a live interview, which is quite wonderful. You can have a look. Of course, there is no need to buy algorithm class, look at the live, to understand the idea of brush problem.

Repeat the above method, about 100 questions should be enough for the interview, if 3 per day, about a month of preparation

The question bank

Brush questions should also pay attention to, do not brush a question, such as Leetcode’s daily one

It is suggested to classify knowledge points so that it is convenient to repeat exercises and grasp knowledge points

After the knowledge is brushed again, it can also be classified according to the company or LeetCode hot 100 brush, the general company algorithm problem is also a question bank

Here are some recommended question banks for you to use

Classification by knowledge

Github.com/yuanguangxi…

Github.com/zhangyixing…

By Company

Github.com/afatcoder/L…

Hot topic 100

zhuanlan.zhihu.com/p/84230862

Face the

The next is the company’s face, share out for your reference.

Company 1 Interview

1. What features does Java have, what is the use of inheritance, and what is the use of polymorphism

2. What is reflection, where is it used, and how do you create an object using reflection

3. The difference between agent mode and decorative mode, handwritten a static agent, a dynamic agent

4. Object loading process, properties or methods are loaded first

5. Garbage collection mechanism and JVM structure

6. Custom View, event distribution mechanism talk about

7. What’s the difference between HTTP and HTTPS

8. The Activity startup mode and the life cycle of each startup mode

9. Why can’t static objects inherit static methods

10. How does an Activity start a Service? How does an Activity interact with a Service

Introduce Android animation

12. The process of launching an App from Launcher, with several inter-process communication (sockets)

13.Handler communication and Binder communication

14. What memory leaks have you encountered? How to deal with them

15. How to switch threads in RXJava

16.Fragment hide show Life cycle

17. What are commonly used locks and what is the underlying principle of synchronized

The company 2

1. Brief description of Handler,Handler is how to switch threads,Handler synchronization barrier

2.Glide cache, what deep API has Glide been used, what stage is the custom model in Glide

3. Talk about MEMORY leakage of MVC, MVP mode and Presenter

4. Did ANR understand it? No experience with actual ANR positioning problems

5. What performance optimizations have you done?

6. What experience have you had in solving UI lag optimization

7. Do you have any practical experience in Bitmap optimization

8. What experience do you have in the process of building the project? What gradle scripts are useful

9. Have you learned about componentization in detail? Detailed principle of ARouter

RecyclerView = RecyclerView = RecyclerView = RecyclerView = RecyclerView

11. Does LargeHeap in Mainfest allocate a large amount of memory?

Company 3

1. How to sort a roughly ordered array in the fastest time complexity

2. If asked to achieve, how would you achieve a multi-theme effect

3. How to customize a FlexLayout

4. What is the principle of Tinker, what other hotfix frames have you used, and what is the principle of robust?

5. Tell me what you know about annotations. How do you interpret them

Is a synchronized or a ReteranLock? How does it work

7. How are generics resolved, such as in Retrofit

8. MVP and MVVM, MVVM how to update UI,databinding is used much,databinding principle?

9.kotlin ? The principle of

10. Is TCP/socket used to send messages directly in the project

11. How to avoid memory leaks in a network framework without releasing subscriptions in a presenter

12. How is the lifecycle invoked? Have you ever used AIDL?

13. Talk about the RecyclerView cache mechanism, slide 10, and then slide back, there will be a few implementation of onBindView

How to realize the RecyclerView partial update, using payload,notifyItemChange method parameters?

15. Talk about the data structure of LinkedHashMap

16. What’s the difference between putting and Posting

17. Is there any way to interrupt the life cycle change of A Activity?

18.Fragment hide show Life cycle changes

19. The Fragment Replace lifecycle changes

Company 3 Second interview

1. Why are you considering changing your job

2. What has screen adaptation done?

3. What do you use for your network framework? Why is that?

4. If let you develop a page of B station, which page can start quickly

5. What work have you done in performance optimization?

6. What kind of work have you done?

7. What are the main advantages and disadvantages of pluginization?

8. What do you think is wrong with the current APP of B station?

9. If a product asked you to develop an audio player, how would you go about it? What pits are expected?

10. What is the most time-consuming for ViewPager to switch to fragments?

11. Methods of synchronization between threads

12. Differences between locks

Company 3 on three sides

1. Introduce yourself and the project

2. Tell me why you are considering leaving

3. Tell me your impression of the company

4. Why do you want to come to Station B? What do you often look at at station B?

5. What are your salary expectations?

How do you feel about moving to Shanghai?

Company 4

1. Describe the architecture of your project

2. How does Rxjava implement thread switching

3.Rxjava custom operators

4. ARouter principle

5. How can ARouter implement the interface call

6. How does ARouter implement page interception

7. How does MVP deal with memory leaks

8. How does OkHttp implement connection pooling

9. If you were to implement a network framework, what would you consider

10. What performance optimization work have you done

11. The principle of hotfix, the principle of resource hotfix, will there be resource conflict

12. How to deal with sliding conflicts with nested ViewPager

13. What are the design patterns in android source code

14. Explain how binder works

Company 4 Second interview

1. Why are you considering changing your job?

2. How have you enjoyed your last few years in your company?

3. In terms of technology selection, why do you think so? From the development efficiency, product performance, product quality, product experience and other aspects of consideration

4. Why were your products cut and from what perspective

5. What’s the most rewarding work you’ve done over the years

Is there anything else you want to ask me? There are several offers at present. What is your preference?

The company may

1. ViewPager2 principle

2. How does LifeCycle work?

3. Why does the ViewModel not lose state after rotating the screen

4. What is the difference between Drawable and View

5. Will onDraw be called when the property animation is updated?

6.OkHttp network interceptor, application interceptor? What interceptors are available for OKHttp, and what do they do

7. How to achieve a custom grid

8. What is the difference between PathClassLoader and DexClassLoader

9. What difficult jobs have you had to do over the years?

10. Compile-time annotations versus run-time annotations. Why does Retrofit use run-time annotations? When to use runtime annotations?

11. Kotlin Lazy uses,lazy viewModel

12. Have you checked out Google’s official ViewModel demo

13. What is the difference between initializing ViewModel in an Activity and initializing it in a Fragment?

14. What’s wrong with kotlin calling Java?

15. How does Retrofit make post requests

16. Some methods of interface optimization,ConstraintLayout to achieve three equal partition,ConstraintLayout animation.

17.CoordinatorLayout Custom behavior, what can be intercepted?

Company 5 Second interview

1. What difficult work have you done on your projects?

2. Video playback, how to implement a player preloading, avoid loading

2. WebView loading local images, how to consider the security

3. Http1.0 http1.1, what is the difference between http1.2

4. What’s the difference between HTTPS and HTTP

5. What encryption algorithms have you used? What is the principle of AES,RAS?

6. What about android cross-process communication? Have you used shared memory? How does Binder verify pids? Do binder drivers understand?

7. Can SharedParence communicate across processes? The difference between commit and apply.

The difference between Seriazable and Parceable

9. What is a Bundle? What is used to transmit data

10. What is the memory structure of the Jvm, garbage collection of the Jvm, and what is in the method area?

11. H5 interacts with native, webview. loadUrl is different from webview. evaluateUrl

Company 5 on three sides

1. Have you done any WebView optimizations

2. What are the difficulties in your project?

3. How can NATIVE authenticate H5 so that some pages can be tuned and some pages cannot be tuned

4. Have you seen the source code of any frameworks?

5. How does viewModel implement bidirectional data binding?

6. How does viewModel automate lifecycle processing?

7. Do you have any experience in image loading optimization?

8. What experience does ViewPager have when switching frames?

9. A wrap_content ImageView, load remote image, pass what parameters cropping better?

10. What is the difference between two objects obtained by getDrawable?

11. The difference between tween animation and attribute animation, which is more efficient?

12. JsBridge implementation

13. How do you learn about new knowledge and industry trends? What impressive articles have you read recently

14. What tools do you use to catch bags?

15. What’s the difference between Mvp and Mvvm?

The company 6

1. Communication between Webview and native in the project

2. What enhancements have been made to WebView in the project

What is the difference between synchronized and ReentranLock?

4. Exceptions occur between synchronized and ReentranLock.

5. Algorithm to delete duplicate elements in the array

6. Handwritten double check singleton mode, what’s the difference between each step

7.Activity lifecycle

Company 7

1. What’s the difference between string,equals,==

2.AsyncTask memory leaks

3. DispatchTouchEvent onInterceptEvent, onTouchEvent order relationship

4. OnMeasure onLayout, ontouch relationship

5. Algorithm problem, reverse array

6. Algorithm problem, linked list sum

7. Describe your understanding of coroutines

8. How to cancel coroutine

9. What’s the difference between MVP and MVVM

Company 7 Second interview

1 algorithm problem, the maximum depth of binary tree

2. If the Android side and the IOS side call an interface, one is through and the other is not, how will you solve it

3. If the Android side and IOS side adjust an interface, one is slower and the other is faster, what is the idea

4. How does ARouter work? How do you solve the lotus root without ARouter. Interface? What should I pay attention to when designing an interface?

5. What has H5 done to interact with Native?

6. Login function, login successfully and jump to a new Activity, what is involved? Analysis from event passing, network request,AMS interaction perspective

7. Is the AMS interactive call lifecycle sequential?

8. Can interprocess communication between binders call original process methods?

9. What’s the difference between MVP and MVVM?

10. How do I save the token locally? How to encrypt better?

Company 7 on three sides

1. How can viewModel save data after the Activity is destroyed

2. How does MVVM bidirectional data binding work? ViewModel

3. Tell me about the difficult points in your project.

4. Pseudo code to implement a long press event

5. Implement a download function interface

The company eight

1. What are the advantages of generics?

2. What is the role of dynamic proxy?

3. What kind of rubbish is recycled GCRoot?

4. Do you know the Handler mechanism? How many Looper does a thread have? Why is that?

5. Do you know coroutines? What does a coroutine do? Can rxJava be completely replaced?

6. What messaging mechanism do you use

7. What is difficult about your project? Introduction?

8 algorithm problem, binary tree longest node set

Company 8 Second interview

1. What are the difficulties in your project?

2. Whether compile-time annotations handle bytecode or Java files

3. What design patterns have you applied to your projects?

4. How does ARouter work?

5. How does pluginization work?

6 algorithm problem, K a group of reverse linked list

7. The difference between broadcast and RxBus, global broadcast and local broadcast

Company 8 on three sides

1. What are the difficulties in your project?

2.@JavaScriptInterface why not do it in more than one way?

3. Why not use synchronous methods for jsBridge interaction? Synchronization can be asynchronous, asynchronous cannot be synchronous

4. How to implement network encapsulation?

5. Algorithm problem, different denomination of several coins, how to meet the minimum value of the condition

The company 9

1. How HashMap works

2. Talk about Java memory partitioning

3. Tell me what you know about garbage collection. What’s the old algorithm?

4. What do you use volatile fields for?

5. How to write a ViewPager that can’t slide

6. What do you know about class loading? The difference between a DexClassLoader and a PathClassLoader

7. Talk about the principle of plug-in. How to solve the problem of duplicate plug-in ID of resources?

8. What is the difference between MVP and MVVM?

9. Which JetPack components have you used? What is the principle behind lifeCycle? If I subscribe to onStart, does it call back onCreate?

10. What are the drawbacks of the singleton pattern?

What does the ActivityThread do in its main method? When does the first Activity start?

12. Describe what you know about Handler mechanisms, synchronous messages, asynchronous messages, etc

Tell me what you know about the screen refresh mechanism, double buffering, triple buffering, butter model

14. The onCreate, onResume, onStart, where can we get wide high

15. Why can view. Post get width and height?

16. When is attachToWindow invoked?

17. Do you know the principle of DataBinding?

Company 10 side

1. Do you know the JVM class loading mechanism? When will a class be loaded? What is the lifecycle of the class loading process?

2. What is the GCRoot for Handler memory leak?

3. What design patterns are used in the animation?

4. What design patterns are used in OkHttp?

5. How is OkHttp connection pooling implemented? How does it handle SSL?

6. Why should generics be erased? What about kotlin’s generics? Pecs principles for generics

7. Sync barriers

8. What have you done with performance tuning?

9. What is the cache structure of RecyclerView? What is cached? Does cachedView execute onBindView?

RecyclerView nested RecyclerView, NestScrollView nested ScrollView sliding conflict

11. OnIntercept returns true when ViewGroup is in Action_Move

How many processes are there in the Launcher icon?

13. What does JMM visibility, atomicity, synchronized guarantee?

14. Where is AtomicInt used in the source code

15. Do you know AQS?

16.Activity inside the LinearLayout red wrAP_content, including View green wrap_content, to find the interface color

17. What are the drawbacks of using ViewModel?

18. Have you ever written layouts with DSL, Anko?

19. What is the time complexity of a HashMap lookup?

20. The Ali programming specification does not recommend using thread pools. Why?

21. How do four thread pools work?

22. What algorithms do you know?

23. Have you ever used IdleHandler?

Company 10 second interview

1. How to encapsulate a string to number utility class

2. How to find the depth of the current Activity View

3. How to implement multiple processes? If you start a multi-process APP, how many processes are running?

4. Can reflection reflect final-modified fields?

5.Activity is different from AppCompactActivity. Is an Activity packaged in a package?

6. How to make two threads print alternately

7. How to terminate a Thread?

8. What is the principle of animation continuous invocation?

9. Have you done any SDK operations?

10. Can coroutines be used in Java projects?

11. SharedPreference principles? On which thread is the XML read?

12. Do you know the APK packaging process?

13. What constitutes a class file? What’s in the constant pool?

14. When does autoboxing happen? Compile time or run time

15. How does Bugly log collection work?

16. What have you done with startup optimization? If the home page is going to use the initialization?

17. DataBinding principle

Company 10 on three sides

1. What is the principle of plugins? Is there a non-runtime plug-in solution?

2. How does ARouter work? Whether the annotation handler handles Java or bytecode

3. What’s the difference between Java and bytecode?

4. What is kotlin’s principle of empty safety?

5. What have you done with performance tuning? What tools have you used? Are there tools for accurate measurement?

6. What’s the difference between kotlinc and Javac compiling bytecode?

7. What role do you play in a team?

8. Did you work on any projects

9. How does hotfix work?

The company 11

1. What are the difficulties in your project?

2. How stable is your project? What stability optimization work have you done?

3. What have you done to optimize WebView performance?

4. What does AIDL in out oneWay stand for?

5. What do you know about thread pools? There are several rejection policies. Why newSingleThread

6. How much do you know about cross-process communication? Do you understand the pipeline?

7. Coroutine introduction, talk about a coroutine scope and context, what does the coroutine + sign represent

8. What does Handler sleep look like? How does epoll work? How to implement delayed messages, if removing a delayed message will be unhibernated?

Algorithm Fibonacci steps

10. Handwritten producer message maker model

11.IdleHandler application scenario

Company 11 second interview

1. Customize rounded images

2. How to measure the width and height of a child View for a custom LinearLayout

3. What’s the difference between setFactory and setFactory2?

4. Plug-in skin peels

5. Plug-in principle, startActivity hook which method

6. How to cancel after gesture ActionCancel

7. How to optimize XML inflate time, involving IO and reflection. Do you know something about Compose?

8. Algorithm problem: the leftmost node of each layer of the binary tree

RecyclerView Cache structure, RecyclerView prefetch, RecyclerView partial refresh

11. SetOnTouchListener, onClickeListener and onTouchEvent relationship

Summary of part of the interview questions

  • 1. Performance optimization related examples: Android performance optimization UI lag optimization case analysis
  • 2. Design Patterns related: Use design patterns to encapsulate network request frameworks, design patterns in Retrofit
  • Android programmers need to know about HTTPS and man-in-the middle attacks
  • 4. Concurrent Programming: What Android programmers need to know about concurrent programming
  • 5.Jetpack ViewModel Related: What you should know about the ViewModel
  • 6.Jetpack LiveData Related: What you should know about LiveData
  • What you should know about Java and Kotlin generics
  • Here’s what you should know about customizing a View
  • How to implement a Python coroutine using kotlin?