Key points and difficulties of Android advanced/interview

Key points and difficulties of Android advanced/interview

Preface

I remember that when I was a sophomore, I "didn't do my job properly" and taught myself Android and followed the teacher to do projects. In my junior year, I started to intern in my current company. It has been more than half a year since I graduated, and I have been learning Android for more than 3 years! But I always feel that the knowledge points are scattered and not in-depth enough, and I have encountered bottlenecks, so I wrote this article.

This article is a summary, reflection and introspection of my own Android programming skills, aiming to systematically and deeply learn the key points and difficulties of Android and take my abilities to the next level. Below I will list the more frequent, important or difficult knowledge points in the Android knowledge system, and in the future I will study and research the knowledge points listed in this article one by one, and write a series of articles as my own learning summary notes. I also hope that you can learn and communicate with me~

Note: This article is not about interview experience, but a self-summary. I am not going to list points and say the results without saying the reasons like many articles on the Internet, and then memorize them by rote, knowing the reasons but not the results. Instead, I plan to study the following knowledge points in depth and write articles for each knowledge point from source code or examples, so that you can know both the results and the results. I don't know if I can do it, but I will keep working hard and set a flag~

[[253073]]

Android Advanced

Main text Android advanced key points

Java

  • Collection: usage scenarios, source code reading
  • Details of Java List collection that experts must know
  • GC Mechanism
  • Virtual Machines
  • Object memory allocation

To learn Android well, you must have a solid foundation in Java (of course, there is also Kotlin now). Here are only four points, but the Java system is very large, and the key points are of course not limited to these. The ones listed are commonly used or common in actual projects and interviews.

Android common/important classes

  • Activity
  • Handler
  • HandlerThread
  • AsyncTask
  • Binder

These classes in Android are frequently used in programming, so I plan to read the source code of these classes carefully. These classes are also frequently asked in interviews, such as Activity startup process, Binder communication principle, etc., so it is very worth reading!

Android basic technology and high-frequency interview knowledge points

  • View event delivery
  • View drawing process
  • Use of SurfaceView
  • IntentService replaces Service scenario
  • Service Keepalive
  • Android serialization methods and differences

These knowledge points are relatively basic, but also very important! Unfortunately, they are rarely used in actual projects, so I often forget these knowledge. So I plan to write them into an article to deepen my impression.

NDK and JNI

I have a headache when I talk about this. I believe many people are like me. If you just call the C layer interface, it's okay, but if you want to write C code, it will be very embarrassing. But we can't always avoid difficulties, but face them head-on! So I made up my mind to cross this hurdle in my heart!

Algorithms and Data Structures

  • Queues, stacks, linked lists, directed graphs
  • Sorting
  • Find
  • Red-Black Tree

The algorithm books at home are all covered in dust... The points listed are not difficult, and they are basically what you need to master, but I always forget what I have read, and I still can't remember what I have read again... So I also plan to write an article to enhance my memory. In addition, if you are doing application-level development, mastering these knowledge points is basically enough, after all, Java collections also provide sorting interfaces. But you still need to master them, after all, different algorithms are used in different scenarios.

Plugin/Hotfix

As a skill that must be mastered for advanced Android development, if you don't know this, you will be embarrassed to say that you are an Android developer. I read the source code of RePlugin for a month before, and I feel that I am not good enough. I don't quite understand the processing or adaptation of many codes, such as the mechanism of Binder. So this requires a lot of knowledge as support to complete the understanding. See you in the future!

Third-party excellent open source library

  • RxJava
  • Glide
  • OKHttp

"RTFSC (Read The F**king Source Code)". Everyone has his or her own programming style. If you don't learn from and refer to other people's code, your horizons will always be so narrow and it will be difficult to further improve your programming level. Therefore, it is very necessary to read other people's excellent code!

Common architectural patterns in Android

  • MVC
  • MVP
  • MVVM

Decoupling! Decoupling! The most important thing in using Android's architecture model is decoupling. Developing code is not difficult, but maintaining code is the most difficult. If the code is decoupled, the maintenance cost will be reduced and the work efficiency will naturally increase.

Gradle and Groovy

I believe that most people now use Android Studio for development. Gradle is a very powerful build tool. I think it can completely replace Java's compile-time annotations, and it is even better than that. Because even files can be modified at compile time, it is very powerful, so it is also worth learning.

General Skills

  • TCP/HTTP
  • SQL
  • Automated testing
  • Packet capture

In addition to Android knowledge, you also need to master some general skills. After all, knowing more will give you the confidence to fight with the backend, haha.

Written in ***

Since the knowledge points listed in this article are summarized by myself, and due to my limited level, I cannot mention all of them. I welcome the experts to supplement them~

In the future, I will study the above knowledge points in depth one by one, and I also hope that friends will study with me and advance together.

<<:  9 open source payment system projects you should know

>>:  Smartphones in 2018: Over the Hill?

Recommend

What does short video operation do?

The work of short video operation mainly includes...

More exciting than Chinajoy? An in-depth analysis of the Nibiru air combat chair

The annual Chinajoy exhibition officially ended i...

Zhang Zhiqiang · Category Management Thinking Course

Zhang Zhiqiang · Category Management Thinking Cou...

How to SEO a website? A plan to increase website rights by 6 per month!

The good or bad ranking of a website is not due t...

BBC exposes Apple's sweatshop, Cook gets angry

Cook, who is usually gentle and polite, couldn...

How did the first feathers grow?

Friends who don't usually pay attention to di...

It’s been 10 years! This is the first code of WeChat

WeChat was officially released on January 21, 201...

AARRR Model: Mastering Gamification User Growth Strategy (Part 1)

We need a set of operational plans based on the A...

Industrial 3D vision opens up new horizons for smart manufacturing

In 1969, the first CCD image sensor was born in B...