ByteDance Social Recruitment Interview Record, the key points you must know about network optimization, with answers to interview questions

Preface

After staying in the old club for nearly four years, I have benefited a lot. I have no choice but to encounter a bottleneck in my skills. I feel deeply that I can't improve my skills, so I resolutely resigned and joined the job hunting army. To be honest, faced with the 18-year financial crisis, the winter of the Internet, and layoffs, a large number of job seekers surged in. It is not so easy to find a job. Even if there are multiple interview invitations, there are very few responses after the interview. The revolution has not yet succeeded, comrades still need to work hard!

When many people are preparing for an interview, most of them will be like this. Open Baidu, enter "Android Interview Questions", find a few more and start to read them.

Although this seems natural, it is not a  healthy way . The role of interview questions should be to check for deficiencies. When you go to school, you don't directly publish the exercise book and learn from the answers, right?

There is a question on Zhihu, called  how to learn efficiently . There is an answer that I think fits my own point of view, that is, to  establish my own knowledge system . The purpose of establishing a knowledge system is:

  • Consolidate memory.

  • Know yourself and find your strengths and weaknesses.

  • Grasp the progress of the review.

  • Summary of experience.

    At present, my own summary will be divided into the following major points:

Java basics

  • The basic idea of ​​object-oriented
  • Object class related: several key functions of Object class, the concept of constant pool involved in String, serialization & deserialization.
  • Important keywords: final, static.
  • Internal class: the classification, application scenarios, and internal classes are compiled into classes.
  • Abstract classes & interfaces: differences and application scenarios.
  • Coding: the purpose and classification of coding.
  • Exception: exception system, custom exception.
  • Annotation: The basic concept, classification, compile-time annotation & runtime annotation of annotation.
  • Containers: the internal realization of important containers and the comparison between containers.
  • Memory model.
  • Garbage collection.
  • The process of class loading.
  • Generic: classification, wildcard & upper and lower boundaries, generic erasure.
  • Reflection: use.

Android basics

  • Dalvik, Art virtual machine
  • Activity: life cycle, launchMode.
  • Fragment: life cycle, lazy loading, the difference between the two adapters.
  • BroadcastReceiver: Basic concepts, broadcast classification, permissions.
  • Service: life cycle, the return value of onStartCommand, the difference between startService and bindService, the interaction of the same process & different processes, the realization principle of IntentService.
  • Important tools & source code implementation: AsyncTask, HandlerThread, Handler, IntentService, LruCache, LinkedHashMap, SparseArray.
  • RecyclerView: Caching principle, comparison with ListView, how Adapter adapts to multiple layouts.
  • Storage: database upgrade & optimization, ContentProvider, SharePreference.
  • Compatibility issue with SDK version upgrade.
  • Android's permission management mechanism.

image

  • Bitmap related: Bitmap size calculation, quality, inJustDecodeBounds, inBitmap.
  • Comparison and compression of several image formats.
  • Large image loading: BitmapRegionDecoder

algorithm

  • There is no shortcut, but when you do it, you should summarize it according to the type of question.

Open source framework

  • RxJava: The application scenarios of operators, the internal implementation of key operators, and the comparison with RxJava.
  • Glide: Process and cache related implementation.
  • Retrofit: Process, dynamic proxy & annotation analysis.
  • OkHttp: process, queue implementation, cache implementation.

performance

  • Performance optimization techniques: startup speed optimization, layout optimization, memory optimization, power optimization, APK size optimization, and list sliding optimization.
  • Performance optimization tools: TraceView, Systrace, debugging GPU overdrawing & GPU rendering mode analysis, Hierarchy Viewer, MAT, Memory Monitor & Heap Viewer & Allocation Tracker, LeakCanary, Lint.
  • ANRANR Reasons ANR Generation Process Source Code Analysis Information Collection Process Trace File Analysis Basic Process Specific Example How to Avoid ANR
  • Performance practice: The resolved performance problems   are explained from the four points of encountering problems, analyzing problems, solving problems, and results .

View

  • Drawing process: three key processes of measure, layout, and draw.
  • Event distribution: the principle of event distribution, and the sliding conflict problem handled.
  • Custom View: Canvas & Path, a more complex custom View that has been implemented.

Architecture

  • MVP: MVP's ideas & advantages and disadvantages, application in projects,

Source code

  • AMS
  • WMS
  • Binder
  • Application startup process
  • APK related knowledge points APK composition: resources.arsc composition, AndroidManifest.xml, aapt function and principle APK packaging process APK installation process APK signature & verification principle dexopt principle

The internet

  • Basic knowledge: Take a look at <<Computer Network>>, the focus is on the network layered model, TCP/UDP, HTTP/HTTPS.

Design Patterns

Summarize according to 23 network models and three classifications. Each design model includes the following three aspects, at least a few commonly used ones should be prepared:

  • Basic concepts: UML diagrams, simple examples, application scenarios, advantages & disadvantages.
  • Implementation in Android source code
  • Application in the project

Multithreading

  • Looking at the art of concurrent programming, the catalog of this book is the best knowledge system for multithreading.
  • How to solve the multithreading problems encountered.

Gradle

  • Regular placement.
  • Multi-channel packaging.

Plug-in

  • The core idea of ​​plug-in.
  • Several plug-in framework implementation principles.

Componentization

  • Advantages of componentization.
  • Arouter: How to use and how to implement it.

Kotlin

  • You can take a look at the useful ones.

multimedia

  • Audio and video playback.

Big front end

  • ReactNative, Flutter: If you haven't learned it, you can understand the thinking.

JNI

  • Call the implementation.

At last

**A zero-based newcomer, I think persistence is the most important thing. **Many of my friends have come to me to study, and I teach them very carefully, but I can't hold on in less than a month. I think there are two main reasons for their inability to persist:

They plan to enter the industry not because of interest, but because of the so-called high wages in the IT industry, or that they have no plans for the future.

It was really boring when you first started learning. This is really a test for you, so it’s not easy to stick to it, but if you are interested, you don’t think it is tired, you don’t think it is boring. .

Technology upgrade encountered a bottleneck? Lack of advanced Android advanced video learning to improve yourself? There are also a lot of interview questions from big companies to prepare for your interview!

Click: Android learning, interview documents, video collection

Come to get learning materials to improve yourself to challenge the BAT interview difficulties

For many Android engineers, if they want to improve their skills, they often grow up on their own. The learning effect of fragmented systems is inefficient, long and helpless . The compilation of these knowledge graphs hopes to have a reference to Android development friends and avoid detours. The focus of this article is whether you have gained and grown, and the rest is not important. I hope readers can keep this in mind.

No matter what difficulties we encounter, it should not be a reason for us to give up!

If you have any questions, you can directly private me, I will try my best to help you!

I have groped and grown, and the effect of fragmented learning is inefficient, long and helpless . The compilation of these knowledge graphs hopes to have a reference to Android development friends and avoid detours. The focus of this article is whether you have gained and grown, and the rest is not important. I hope readers can keep this in mind.

No matter what difficulties we encounter, it should not be a reason for us to give up!

If you have any questions, you can directly private me, I will try my best to help you!

Finally, I wish every newcomer can persevere and achieve success in learning.

Guess you like

Origin blog.csdn.net/a132445/article/details/113106668
Recommended