The interview questions

For the preparation of the interview, the algorithm suggested to brush “Sword Finger Offer” and “Algorithm” on Niuke.com, and then the third party framework used in the previous project, to understand its core implementation process and framework characteristics and some ingenious details of the implementation. For the foundation of Java, I recommend in-depth Understanding of Java VIRTUAL Machine, Effective Java and the Beauty of Java Concurrent Programming. For Android, I recommend reading Android Development Art Exploration and Android source code Design Pattern analysis and Combat. There is no special depth, can be used as a directory outline, introduction, to do more in-depth study. In addition, for the projects I have done before, the projects I have written on my resume should be deeply explored and explored, and the knowledge points and highlights should be extracted from them.

Android article

  • Handler implementation mechanism, synchronization barrier, IdleHandler
  • Can Looper be created on child threads
  • How does the Handler implement timed sending of messages
  • How HandlerThread is implemented
  • Event passing mechanism, combined with sliding conflict specific scenarios to solve problems
  • View drawing process, from Vsync signal to viewrotimpl to the final View draw
  • Apk packaging process (What happens after you click the Build button in Android Studio
  • Apk installation process
  • How does Handler cause an Activity to leak memory, and how do you detect a link to a reference to GCRoot
  • Fragment life cycle
  • Activity Displays the status after switching between different boot modes
  • The screen reverses the Activity lifecycle change
  • How does the Activity lifecycle change behind the Dialog pop-up?
  • How does an application startup process interact with AMS and PMS
  • How does EventBus work? How do sticky events work? Why and what are the advantages of Using EventBus?
  • Retrofit’s implementation principle is asked in conjunction with dynamic proxies
  • Difference between Picasso and Glide
  • The difference between Volley and Okhttp, the implementation of Okhttp and its advantages
  • How to implement multi-process database and file operation?
  • Android signature, V1, V2
  • How is the life cycle implemented in Glide
  • How does Glide load a Gif
  • Memory leaks and memory optimization in Android
  • The difference between MVP, MVVM, and MVC already applies to scenarios
  • Why doesn’t Android APK work on IOS, and how can it be designed to work?
  • Android system design why to use virtual machines do not directly execute machine code?
  • What are the advantages of the differences between running machine code through virtual machines and executing machine code directly?
  • Dalvik and ART
  • How is the Native lifecycle notified to the Web?
  • Know ANR in Android?
  • What about the OOM in Android?
  • Realization principle of cache in RecyclerView
  • The realization principle of ItemDecoration in RecyclerView
  • Activity, Window, WindowManager, Viewrotimpl how to see the relationship between these
  • What is the difference between broadcast dynamic registration and static registration?
  • The way processes communicate in Android, what are the advantages of Binder?
  • How does SparyArray and ArrayMap work?
  • Have you ever used Koltin?
  • Have you used RxJava and Retrofit?
  • Communication between Web and Native
  • Difference between SurfaceView and TextureView
  • Why does Surface use dual buffering?
  • How to optimize Bitmap loading?
  • The difference between commit and apply in SharePreference

Java related

  • The difference between HashMap and HashTable, ConcurrentHashMap
  • ConcurrentHashMap version 1.7 and 1.8 are different
  • Implementation principle of LinkedHashMap
  • ArrayDeque implementation principle
  • What methods are available in Java Object? When will the equals and hashCode methods be overridden?
  • Pessimistic locking and optimistic locking in Java, give examples and explain their implementation.
  • CAS Implementation Principle
  • Implementation differences between Synchronized and ReentrantLock
  • Synchronized modification of different methods, the difference in the lock object held
  • How ThreadLocal works
  • Volatile usage
  • A little bit about generics
  • Generic erasure
  • When does generic erasure not occur
  • What are the thread-safe and unsafe collection classes in Java?
  • Java garbage collection mechanism
  • Memory allocation mechanisms in the JVM
  • Java class loading mechanism
  • The application of the lock in the usual project
  • What types do Java thread pools provide by default? Which scenarios are suitable for?
  • What do interrupt(), interrupted(), and isInterrupted() mean in Java threads?
  • Dynamic versus static proxies

Algorithms and Data Structures

For the client, there will be no questions with too much difficulty, and the difficulty is at the medium level of “Sword Finger Offer” and “LeetCode”. Basically, you can write bug free. For complicated ones, the interviewer will give you hints or just ask you to talk about some ideas. Everything else is handwritten. Because Baidu does not need to write, investigate ideas, so the difficulty will be more difficult.

  • You have points in two dimensional coordinates, and you take a line that covers as many points as you can
  • The linked list represents a number, the sum of two numbers, return a linked list
  • List inversion
  • Minimum depth path print for binary tree
  • Find two numbers in an unordered array that sum to a value, return the index value
  • Subsequent traversal of binary trees, non-recursive implementation
  • The longest non-repeating substring in a string
  • Backpack problem (Maximum capacity vs. maximum Value)
  • The difference between dynamic programming and recursion, what problems can dynamic programming be used, what problems can not be used
  • Sorting algorithm type and complexity, whether there is a better optimization space
  • What is the LGN of NLGN in sorting complexity
  • Heap sort is related, the difference between the heap in heap sort and the heap in stack
  • What is the oldest string of two strings? For example abc1234, 123BC (complexity of violent methods, complexity of dynamic programming)
  • What is a complete binary tree?

Well prepared for the interview

Some basic knowledge and theory must be back, to understand the back, with their own language summary back down.

While Android isn’t as hot as it was a few years ago, the days when you could get a high-paying job with just four components are over. This only shows that the positions below the intermediate level of Android are saturated, and there is still a shortage of senior engineers. I can obviously feel that there are many senior positions after the National Day, so it is most important to strive to become a senior engineer.

Okay, hopefully that was helpful.

Next is the arrangement of some Android learning materials, interested friends can pay attention to my free way.

① Notes on core knowledge points of Android development

② To mark “Ali P7” 40W+ annual salary enterprise senior architect growth learning roadmap

③ Interview highlights summary

④ Full set of systematic high-level architecture video

**Android essence video after learning is more like a tiger with wings added! ** enter BATJ factory, etc. (prepare for war)! Now it is said that the Internet winter, in fact, is nothing more than you get on the wrong car, and wear less (skills), if you get on the right car, their technical ability is strong enough, the company will cost a lot to replace, how can you be fired, are the elimination of terminal business Curd! Now the market is flooded with junior programmers, this tutorial for Android development engineers 1-6 years of personnel, is in a bottleneck period, want to break through their salary after the year, advanced Android senior, architect for you is like a duck to water, hurry up to get it!

Access method: [Android Architecture video +BAT Interview topics PDF+ Study notes】