Sprint gold three silver four: Android is about to usher in the peak of the interview, mastering these four steps is not far from your ideal position!

The internal promotion of major companies is in full swing, and after a while, it will be the peak season for interviews of gold, silver and silver and spring recruitment.

Interview can be said to be an exam for students to enter the society. It is just a combination of written exam and multiple interviews (oral exams). As long as there is no conflict in time, you can take several more exams. Autumn recruits are not good, and spring recruits are not available.

The form of the written test is similar to that in school. The interview is relatively new and more difficult. The scope of the interview is not only the mastery of professional knowledge, but also personality, stress resistance, expression ability, adaptability and so on.

But in the final analysis, the process of finding a job is a process of solving a relatively complex problem. You can prepare according to the following four parts:

  1. Define the problem
  2. Partition problem
  3. Breakthrough one by one
  4. Systematization

Next, look at the specific details step by step.

1. Define the problem

First, define what problem we are solving. Here, because we are in the direction of Android, it can be simply defined as: "We need to find a job (or related work) in the direction of Android, and the work should be as good as possible."

This definition is very vague. What is as good as possible? Some people fancy salary, and some people fancy five social insurance and one housing fund, various benefits and so on. Here, we do not consider the relatively large issue of personal subjective factors. We only consider things that are more controllable. It is the problem of obtaining results through personal efforts.

Let's think about the decisive factor in "finding a job in the Android direction" ?

The answer is an interview. Of course, the awards a person has done in the past are also important. But when it comes to the time of the interview, the past has passed and cannot be changed. Only the present can be controlled. No project does not matter, the key is how to prepare for the interview now.

Goal: I have to pass an interview and get an offer (or I have to pass an interview with multiple companies, get offers from multiple companies, and choose the most suitable company to work for). Of course, this sentence is too broad and has no guiding significance. Defining the problem is very important, and more important is how to divide the problem. This step is the guiding significance and can be put into practice.

2. Partitioning issues

The general division of the content to be prepared for the Android interview: (importance in parentheses, up to 5 stars)

  • Android-related knowledge, Java-related knowledge, design patterns (☆☆☆☆☆)
  • Algorithm, data structure (☆☆☆☆☆)
  • How to write a resume, how to interview (☆☆☆☆)
  • Project and competition awards (☆☆☆☆)
  • Operating system, network, database (☆☆☆)

Subdivision

The following subdivided content, network and other computer basic aspects are not very comprehensive, and continue to be updated.
I will gradually update the relevant blogs or resources of each knowledge point, if necessary, I suggest you pay attention.

Android

  • Context understanding
  • Activity life cycle, startup mode, IntentFilter matching rules
  • IPC:Serialzable、Parcelable、Binder、Socket
  • View event system
  • View drawing process
  • RemoteViews (not important)
  • Drawable (not important)
  • Animation, drawing
  • window、wm、wms
  • Four components start and workflow (at least look at Activity, AMS)
  • Message mechanism: looper, handler, MQ
  • Thread, thread pool, multi-thread
  • Bitmap loading and caching: LRUCache, DiskLruCache, LinkHashMap
  • CrashHandler (general)
  • multidex (general)
  • Fragment、Service、SQLite、Webview
  • Android memory leak scenarios and solutions
  • Causes and solutions of ANR
  • Open source library (generally required to read the source code and know the principle): Retrofit, RxAndroid, EventBus, Picasso (advantages), OKhttp3
  • Continuous integration of Jenkins (not important)
  • Unit test, test case (general)
  • Plug-in: Atlas, OSGI (general)

Java

  • Java basics: such as the difference between interfaces and abstract classes, etc.
  • Java memory management: working memory and main memory, etc.
  • Garbage collection: recycling algorithm, how to judge the object can be recycled, new generation and old generation, etc.
  • Concurrent
    lock: sychronized, lock (CAS); volatile; concurrent collection: CopyOnWriteArrayList, ConcurrentHashMap, RemoteCallbackList (used by Android IPC), LinkedHashMap;
  • Set
    Map, Set, List
    Queue, Stack
    HashMap, HashTable, ConcurrentHashMap: implementation principles, differences, etc.
    LinkedHashMap

Design mode (six principles: SOLID + Dimit)

  • Singleton mode: get various services
  • Factory method: activity, service (onStart)
  • Responsibility chain: Android event distribution
  • builder:dialog、Picasso
  • Observer: listview update, EventBus
  • Adapter: listview adapter

Algorithm, data structure

Sort

  • Bubble Sort
  • Select sort
  • Merge
  • Heap sort
  • Insertion sort
  • Quick sort
  • Hill sort
  • Bucket sort
  • Base sort

Character matching: KMP algorithm

  • Binary search
  • Binary tree traversal, flip, reconstruction; binary search tree
  • Red black tree
  • AVL tree, Huffman tree, B tree (general)

The internet

It is basically developed around the OSI seven-layer model, first of all the functions of each layer and what protocols are there in each layer.

In-depth investigation of the application layer and transmission layer:
application layer:

  • HTTP message format and what fields in the header
  • HTTP status code
  • The difference between HTTP and HTTPS
  • The handshake process of SSL/TLS encryption in HTTPS
  • The specific process of a HTTP connection
  • The difference between GET and POST
  • DNS resolution process
  • Principle of Cookie and Session

Transport layer:

  • TCP/IP four-layer model (level correspondence with OSI)
  • TCP three-way handshake and four-way handshake process, status changes and reasons
  • The difference between TCP and UDP
  • Principles of TCP Ownership Control and Flow Control
  • Socket principle

Operating system, database

Thread status and its switching The
difference between threads and processes
(the importance of the database is relatively low, it is being sorted out and will be updated later)

Resume , interview, project

Many people often encounter many interview questions about resume production, career confusion, and HR classic interview questions. I also collected and compiled a full set of resume production, puzzles of recruitment by the Golden Three Silver Four Clubs, and HR interviews. If you have any questions, I can provide professional answers.

3. Breakthrough one by one

You can go to the Internet to find some blogs and books to make breakthroughs in various knowledge points. You must have patience. Finding a favorite job is not a day's work.

On the one hand, I will continue to update some professional knowledge and interview-related blogs.

On the other hand, I will share some of my own resources with everyone.

  • Blog
    GitYuan (gityuan.com), Luo Shengyang (CSDN), Deng Fanping (CSDN), Ren Yugang (CSDN)
  • Books
    Android 4 advanced programming, Android development art exploration, Android source code design pattern, Android 50 hacks, Android application performance optimization best practices, Efficient Java, in-depth Java virtual machine, Java concurrent programming, Think in Java
  • Brush questions
    Niuke.com, LeetCode

4. Systematization

Systematization is actually the process of summarizing and establishing the relationship between each module after you have read and understood the entire relevant knowledge.

Everyone's brain "operating system" is the process of concepts and connections between them. On the one hand, systemization can deepen the memory of knowledge, and on the other hand, it provides another angle to understand these concepts and increases the depth of concepts.

It is recommended to make more records and summaries, to establish connections between modules and disciplines, and to extract unified and applicable knowledge and wisdom.

Next, provide you with a direction for systematic learning:

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:

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

Guess you like

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