The Android veteran driver teaches you how to quickly assault a big factory interview, quickly make up for these knowledge points, success is a must-see!

Preface

Recently, many people have asked me in private messages in the background: I have been an Android engineer for a few years, and now I am very confused. I want to quit but I have no goals. I don’t know which direction I should head in next.

Indeed, after the Spring Festival, everyone is preparing for the start of the new year, whether it is job-hopping or learning to accumulate energy, everything is a new beginning. As the largest programming language, Android has the largest number of users and the most mature. Of course, the pressure of competition is relatively greater.

In this job-hopping season commonly known as "Golden Three Silver Four", many people are ready to move, want to get a higher salary, want to go to a bigger platform...

But in fact, for most Android engineers, there is actually no systematic and comprehensive knowledge system. Therefore, 90% of them are turned into technical interviews.

Next, let’s share a summary of interview knowledge points of a wave of old drivers’ interviews with many big factories, and let’s go!

Summary of Dachang Interview Questions

Abstract:
"The basic Android knowledge is good, and the learning ability is also good. But the basic knowledge is relatively weak, and some concepts and logic are not clear." Thanks Chunlin for this sentence.

Want to enter a big factory? Come make up for these knowledge points!

Java

Java basics

  • Elements that make up polymorphism (JD)
  • The difference between overloading and rewriting (JD)
  • The difference between abstract class and interface
  • The role and difference of the generic wildcard super extends
  • Java memory model (Xiaomi)
  • Why should String be designed to be final (byte beating)
  • String StringBuffer StringBuilder's efficiency in string manipulation; here we mainly examine how String is created in memory (byte beating)

Multithreading related

  • What are the types of locks
  • The principle of CAS lock-free programming
  • The realization principle of ReentrantLock
  • Principle of AQS (Xiaomi, Jingdong)
  • The principle of Synchronized and the difference with ReentrantLock(360)
  • What optimizations did synchronized do after JDK1.8 (JD)
  • The difference and scope of synchronized static and non-static locks (Xiaomi)
  • The role of volatile and the difference with synchronized (Xiaomi, Jingdong)
  • The difference between sleep and wait
  • Is sleep interruptible (Xiaomi)
  • The way of communication between threads (Xiaomi)
  • Thread life cycle
  • Related Principles of Thread Pool
  • The difference between main memory and working memory

Virtual machine related

  • The difference between JVM DVM ART(360)
  • Class loading process
  • Parental Delegation Model

Design Patterns

  • Talk about commonly used design patterns
  • Handwriting observer mode (many companies require handwriting)

other

  • Do you understand the GC process and the GC algorithm?
  • Java reference types and differences
  • HashMap principle (Jingdong)
  • The difference between HashMap1.7 and 1.8
  • Principle of ConcurrentHashMap

Android basics

Activity

  • Activity start mode, the difference
  • How the activity saves state

broadcast

  • Broadcast classification
  • How broadcast works
  • Can I start the thread in onReceive? What will be the problem?

Service

  • IntentService working principle

ContentProvider

  • working principle

AndroidVIew related

The process of customizing the View

  • View's surveying and mapping process
  • Can the width and height be measured in onResume

View's event distribution mechanism (58 Jingdong has some other general questions)

  • onTouchListener onTouchEvent onClick execution order
  • How to intercept the event onTouchEvent if it returns false, onClick will still be executed, etc.
  • onTouch returns true, will onClick be executed?

Animation (car and home)

  • Classification and difference of animation
  • The principle of property animation
    • What is the difference between attribute animation and ordinary animation
    • The difference between the interpolator estimator

Integrated framework part

  • RxJava principle
    • Can multiple operations of subscribeOn and ObserveOn succeed?
    • The difference between Map Flatmap, etc.
    • Will ask about the use of some operators
  • Picture loading frame
    • The difference between Glide and Picasso
    • How Glide works, how to implement caching, etc.

Principles of Android related components

Handler (There are a lot of questions in the interview, such as byte beating, millet, etc.)

  • The basic principle of Handler
  • Handler if there is no message processing is blocking or non-blocking
  • handler.post(Runnable) how runnable is executed
  • Handler's Callback and handlemessage exist, but if the callback returns true, will handleMessage be executed?
  • Principle of Looper
  • How Looper is created in a child thread
  • The relationship between Looper, handler, and threads. For example, a thread can have several Loopers that can correspond to several Handlers
  • Looper is an infinite loop but why doesn't it cause ANR
  • The principle of ThreadLocal and how it is applied in Looper

AsyncTask

  • The principle of AsyncTask
  • Is the task in AsyncTask serial or parallel
  • The principle of HandlerThread

Android optimization related

  • Memory leak lookup
  • ANR lookup
  • CPU fluctuation
  • Memory thrashing
  • Will ask how the performance optimization analysis is carried out in the current project

Android other

  • What principles have you used for process communication (Xiaomi, byte beating)
  • The principle of Binder (more questions are asked)
  • Start an Activity process analysis
  • Bitmap related, memory optimization, etc. (Kouwo Music)
  • The difference between MVP MVVM MVC and the project to talk about the advantages and disadvantages of MVP
  • The concept of cold start and hot start (Kouwo Music)

The internet

  • TCP three-way handshake
  • Use of Socket

The road of programmers-learning experience summary sharing

The programmer industry is changing with each passing day. The technology system is updated rapidly. New technologies and new frameworks emerge in an endless stream. All technologies are like a bottomless pit. The more you learn, the more you don’t understand, the more you don’t understand, and the need Learn more.

Therefore, once you choose this industry, it means that you must continue to learn to keep up with everyone's footsteps, and to become an excellent programmer, you need to continue through the right methods and set the right goals. To learn .

The following are some of the learning methods that I have summarized from my work for several years:

1. Read official documents

Read the document, read the document, read the document, say important things three times! ! !

If you are a programmer with a certain amount of development experience, then I strongly recommend that you must read the official documentation! ! !

If you are a beginner, at this stage, reading the documents will be a very, very laborious task, but I still strongly recommend that you must read the official documents, but you can learn through video tutorials or books Read it slowly after getting started.

2. The official document is finished, let's talk about how to learn more

1. Watch the video for systematic learning

The experience of Crud in the past few years has made me realize that I am really a fighter in the rookie. It is also because of Crud that my technology is relatively fragmented and not deep enough to be systematic, so it is necessary to study again. What I lack is system knowledge, poor structural framework and ideas, so learning through videos is better and more comprehensive. Regarding video learning, individuals can recommend to study at station B. There are many learning videos on station B. The only drawback is that they are free and easily outdated.

In addition, I have collected several sets of videos myself, and I can share them with you if necessary.

2. To systematically sort out knowledge and improve reserves

There are so many knowledge points in client development, and there are still so little things in the interview. Therefore, there are no other tricks for the interview, just to see how well you prepare for these knowledge points. So, when you go out for an interview, it is good to see which stage you have reached in your review.

  • Essential skills for architects: in-depth Java generics + annotations in simple language + concurrent programming + data transmission and serialization + Java virtual machine principles + reflection and class loading + dynamic proxy + efficient IO
  • Android advanced UI and FrameWork source code: advanced UI promotion + Framework kernel analysis + Android component kernel + data persistence
  • 360° overall performance tuning: design ideas and code quality optimization + program performance optimization + development efficiency optimization
  • Interpretation of open source framework design ideas: hot repair design + plug-in framework interpretation + component framework design + image loading framework + network access framework design + RXJava responsive programming framework design + IOC architecture design + Android architecture component Jetpack
  • NDK module development: NDK basic knowledge system + underlying image processing + audio and video development
  • WeChat Mini Program: Mini Program Introduction + UI Development + API Operation + WeChat Docking
  • Hybrid development and Flutter: Html5 project combat + Flutter advanced

After the knowledge is sorted out, it is necessary to check and fill in the vacancies. Therefore, for these knowledge points, I have prepared a lot of e-books and notes on hand. These notes provide a perfect summary of each knowledge point.

main content:

Java basics (★★)

  • Object-oriented thinking
  • Polymorphism
  • Exception handling
  • type of data
  • Java IO
  • set
  • Java multithreading

Java Advanced (★★)

  • Reflection in Java
  • Dynamic proxy in Java
  • Design patterns & recycling mechanisms in Java
  • Java's class loader

Android basics (★★★)

  • Basic knowledge of Android
  • Activity
  • Service
  • BroadCastReceiver
  • ContentProvider&Database
  • Layout in Android
  • ListView
  • JNI & NDK
  • Network access in Android
  • Intent
  • Fragment

Android Advanced (★★★)

  • Android performance optimization
  • Android screen adaptation
  • AIDL
  • Custom control
  • Event handling in Android
  • Android signature
  • Animation in Android
  • Network protocol
  • other

3. Read the source code, read the actual combat notes, and learn the ideas of God

"Programming language is the way the programmer expresses, and the architecture is the programmer's perception of the world." Therefore, if programmers want to quickly understand and learn the architecture, reading the source code is essential. Reading the source code is to solve problems + understand things, and more importantly: see the ideas behind the source code; programmers say: read thousands of lines of source code, and practice thousands of ways.

Mainly include WeChat MMKV source code, AsyncTask source code, Volley source code, Retrofit source code, OkHttp source code, etc.

4. On the eve of the interview, sprint questions

Within a week before the interview, you can start sprinting. Please keep in mind that when brushing the questions, the technology is the first priority, and the algorithm is basic, such as sorting, etc., and the intellectual questions, unless they are school recruits, are generally not asked.

Regarding the interview questions, I personally prepared a set of systematic interview questions to help you learn from one another:

Now that I know how to read documents, and after reading so many learning materials, don’t I need to learn in other ways?

The answer is definitely no! ! !

Compared with the above learning materials, we also need to study additional books and tutorials according to our own situation.

Some people feel that they are always unwilling to read a book. My method is to set a small goal for yourself when reading a certain book, such as reading at least 20 pages of the book every day, so that you don’t learn too much every day. It's easy to get anxious. Of course, you can set the daily reading volume according to your own situation. If you calculate according to the daily reading volume of 20 pages, a 500-page book will be finished in less than a month.

The following is a compilation of the most mainstream intermediate and advanced advanced books. If you are interested, you can bookmark it as a reference~

Intermediate advanced recommends to read the following books:

"Android from Beginner to Master (with CD)" Tomorrow Science and Technology
"First Line of Code 2 Android (Second Edition)" by Guo Lin,
"Advanced Android Development from Little Worker to Expert" by He Honghui,
"The Light of Advanced Android" by Liu Wangshu the
"Art to explore the development of Android," Ren Yugang the
"Android Heros" Xu Yisheng the
"crazy Android handouts" Gang with

Android advanced advanced

Advanced advanced mainly includes design patterns, Java language, performance tuning, data structure algorithms, architecture, NDK and other related books. It is highly recommended by friends who plan to enter a large factory!

Books about design patterns:

"Analysis and Actual Combat of Android Source Code Design Patterns 2nd Edition"
"O'Reilly: Head First Design Patterns (Chinese Version)"
"Design Patterns-The Foundation of Reusable Object-Oriented Software"

Language books closely related to Android:

"In-depth understanding of the Java virtual machine"
"Android Gradle Authoritative Guide"
"Practical Gradle"
"Kotlin Program Development Introduction Essentials"

Performance optimization related:

"Mobile APP Performance Evaluation and Optimization"
"Android Application Performance Optimization Best Practices"
"Tencent Android Automated Testing Practice"
"Android Mobile Performance Practice"
"High-performance Android Application Development"

The data structure is related to the algorithm:

"Programming Pearls (2nd Edition Revised Edition)"
"Programmer Code Interview Guide: The Best Solution of IT Famous Companies Algorithms and Data Structure Problems"
"The Beauty of Algorithms"

Structure related:

"Clean Code"
"The Clean Code" "Programmer's Professional Quality The Clean Coder"
"Refactoring to Improve the Design of Existing Code"

Books related to NDK development:

"Android C++ Advanced Programming: Using NDK"

Interview-related books:

"Technical Eye: Alibaba Technology Written Test Experience"
"The Beauty of Programming: Microsoft Technical Interview Experience"
"Sword Finger Offer: Famous Enterprise Interviewer Explains Typical Programming Questions (Second Edition)"
"Those interview skills that HR won't tell you "
You can't afford to hurt programmers"

Finally, the above content is free to share with everyone, friends who need the full version, click here to see all the content .

Some words: The
interview is really annoying, because the topics are random and the knowledge is endless. There is no standard until many answers. Just like the MV* mentioned above, maybe the above understanding still has problems, but I think the architecture is dead, and the most suitable is the best.
But one thing is that the interview is also a kind of learning, at least it can let you know where your weaknesses are .

Guess you like

Origin blog.csdn.net/weixin_44339238/article/details/114090403