What are the great Android engineers of Dachang?

There is no doubt that you want to grow into advanced development, master more levels of technology, and take both depth and breadth into consideration.

You must think that I have to study technology hard and enrich my technology stack, and then I can become an excellent advanced developer.

But when you really learn, you will find that the technology stack is extremely large, and each technology is very profound. It is difficult to deeply understand and master through self-study. You must combine practical feedback to truly improve your own technical level.

In addition to technology, as a senior development engineer, it is also very important to master the complete development process and to be clear about the development specifications, technical specifications and architectural thinking under different architectures.

When you look at development issues at a higher level, you must have a clearer and more active thinking than people who only have CRUD in their eyes.

When you have an excellent and comprehensive skill stack, master a standardized development process, and have a clear architectural design idea, you can really be said to be outstanding. If you want to have these, you must practice your hands through projects of sufficient scale and verify your strength through actual combat.

This is also true. Due to the limitation of the company's size, many engineers have no chance to get in touch with sophisticated technology. Most of the work is just stacking simple business logic, without seeing broader business scenarios and requirements, and not doing it personally. , Verify and improve your own opportunities.

Of course, you can choose to hop to a big factory, but how do you prove to the big factory that you have the ability to deal with development technology or architecture problems that you have never encountered before? This seems to be an endless loop.

As a technical person who has been working hard for more than ten years in a major Internet company, I would like to give you two suggestions:

1. Do your own development work well, improve your technical skills, and make interviewers willing to believe that you have the ability to do things well.

2. Master the development skills and standardized development processes required for advanced development by large factories in advance. Even if you don't need it for your current job, when you have everything you need, what you miss is just an opportunity.

the question is that:

Do you want to become an Android advanced developer?

Do you want to improve your development capabilities?

Do you want to enter a big factory?

Do you want to be promoted and raise your salary?

Earlier, I specially compiled a "Notes on Core Knowledge of Android Development":

Covers the knowledge points of eleven sections:

  • Java knowledge points
  • Android knowledge points
  • Android extension knowledge points
  • Performance optimization knowledge points
  • Android open source library source code analysis
  • Kotlin knowledge points
  • Design Patterns
  • Gradle knowledge points
  • Computer network foundation
  • C++ knowledge points
  • Common interview algorithm questions

We are still using time to continuously update and optimize knowledge points!

Each knowledge point has a left navigation bookmark page, which is very convenient to read. Because of the large content, here is a screenshot of some pictures.


Summary of Java knowledge points

Android application is developed by Java language, SDK is also written by Java language, so we have to learn Java language.

In addition, although the kotlin language has received the official Android hot push, kotlin is also compiled into the java language and then run.

For Android, as long as the SDK is not rewritten in kotlin, then the Java language needs to be learned.

And the background server program of Android apk is most likely to be built in java language, so learning java is also a necessity.

So what are the things in Java that we Android programmers need to learn? Since Android programmers are used to CV code blocks, the slightly more difficult Java foundations related to Android are almost a threshold, such as generics, multithreading, reflection, JVM, Java IO, annotations, serialization, etc.

  • JVM
  • Object
  • static
  • final
  • String、StringBuffer、StringBuilder
  • Exception handling
  • Inner class
  • Polymorphism
  • Abstraction and interface
  • Collection frame
  • reflection
  • Singleton
  • Thread
  • volatile
  • synchronized
  • Lock
  • Reference type
  • Dynamic proxy
  • Meta annotation

Summary of Android knowledge points

The basic knowledge is mainly the UI. It is necessary to learn how to develop the interface, and not only to learn how to create a layout, but to understand the bottom layer of the UI from the perspective of principles, learn the principles, and the effect that can be achieved is: most of the UI special effects on the market in the future , All kinds of product requirements do not need to rely on third-party SDKs, and can be written on their own ability.

  • Activity
  • Fragment
  • Service
  • BroadcastReceiver
  • ContentProvider
  • data storage
  • View
  • process
  • Parcelable interface
  • IPC
  • Window / WindowManager
  • Bitmap
  • Screen adaptation
  • Context
  • SharedPreferences
  • Message mechanism
  • Thread asynchronous
  • RecyclerView optimization
  • Webview

Summary of Android extension knowledge points

Here in the extended part, some more advanced technologies are involved. For example, hooks, architecture-related knowledge, NDK...

I don’t think I need to say more about the architecture. Programmers who don’t want to be architects are not good programmers~

NDK is mainly for audio and video development. For example, phenomenon-level products such as Douyin, playing videos in the app, and adding special effects to videos can all be completed through the learning of NDK. In addition, NDK will involve C/C++ knowledge. In the future, if it involves the development of the Internet of Things, the most important thing is the development of audio and video. The salary level of audio and video engineers is basically 30% higher than that of other positions. There is also webrtc technology, which is also worth digging. of.

  • ART
  • Hook
  • Proguard
  • Architecture
  • Jetpack
  • NDK development
  • Class loader

Summary of performance optimization knowledge points

Performance optimization is for the entire app development. When a good project is developed, not only is the product better, the developer also needs to know why the app I developed can run on most mobile phones, and why most mobile phones do not have bugs when users use it. Our apk file can be optimized to a very small size. For example, if you make a project, it may be 10m after packaging, but after optimization, it may only be 8m or even smaller.

In addition, how safe is the project we are doing? Why do we conclude that the app we made is safe? These are all questions that must be considered on the way to advancement.

  • Start optimization
  • Storage optimization
  • Network Optimization
  • Power consumption optimization
  • Multi-threaded concurrent optimization
  • Installation package optimization

The space is limited and cannot be displayed one by one (these knowledge points have been collected in this "Android development core knowledge points notes"), readers and friends who feel in need, can directly click here to get


Android open source library source code analysis

I believe that if you often visit major blogs, you will see that many big cows will suggest that you read the source code more. The significant improvement in technology starts from looking at the source code.

  • OKHttp
  • Retrofit
  • Glide
  • GreenDao
  • RxJava
  • LeakCanary
  • ButterKnife
  • Dagger 2
  • EventBus

Summary of Kotlin knowledge points

  • Object
  • class
  • inherit
  • variable
  • constant
  • Static constant
  • Definition method
  • Overload method
  • Basic data type
  • Comparison type
  • Conversion
  • String comparison
  • Array
  • cycle
  • Corner mark cycle
  • Advanced loop
  • Judge
  • Constructor
  • Class creation
  • Privatization set method
  • Privatization get method
  • enumerate
  • interface
  • Anonymous inner class
  • Inner class
  • Internal class access to external class variable with the same name
  • Abstract class
  • Static variables and methods
  • variable parameter
  • Generic
  • Structure code block
  • Static code block
  • Method code block
  • Visible modifier
  • No need to findViewById
  • Lambda
  • Function variable
  • Empty safety
  • Method supports adding default parameters
  • Class method extension
  • Operator overloading
  • Extension function
  • Coroutine

Summary of design patterns

  • Design pattern classification
  • Six principles of object-oriented
  • Factory mode
  • Singleton mode
  • Builder mode
  • Prototype mode
  • Adapter mode
  • Observer mode
  • Agency model
  • Chain of Responsibility Model
  • Strategy mode
  • Memo mode

Gradle knowledge points summary

  • Dependency configuration

Computer network foundation

  • The layered structure of the network system
  • HTTP related
  • TCP/IP
  • Socket

Summary of C++ knowledge points

  • head File
  • type of data
  • typedef
  • Type qualifier
  • Define constant
  • Storage class
  • Reference vs pointer
  • struct vs class
  • Member function
  • Destructor
  • Copy constructor
  • friend
  • inline inline function
  • Inheritance type
  • Operator overloading
  • Dynamic memory
  • Namespaces
  • Preprocessor
  • signal
  • Thread
  • Forced type conversion
  • Smart pointer
  • Memory space

Summary of common interview algorithm questions

Nowadays, many companies will ask about algorithms in interviews. Although most of them are not too difficult, it would be a pity if the technology is all OK, but the algorithm is finally linked to it~ So it is very necessary to look at it.

  • Sort
  • Binary tree
  • Linked list
  • Stack/queue
  • Two points
  • Hash table
  • Heap/Priority Queue
  • Binary search tree
  • Array / double pointer
  • greedy
  • String processing
  • Dynamic programming
  • matrix
  • Binary/bit operation
  • other

I believe that the above notes on the core knowledge of Android development can become a stepping stone for you to enter BATJMZ and other major manufacturers.

At present, I am still using the off-hours to make corrections. If you see something wrong, please tell me, and I will make corrections right away~

We are only a small part of the long road of development...

Only continuous learning and advancement is our way out! Just keep up with the progress of the times !

If you need it, you can get it by [Private Message] or add a fan group: [1087084956].

If you like this article, you might as well give me a like, leave a message in the comment area, or forward and support it~

Guess you like

Origin blog.csdn.net/ajsliu1233/article/details/111600259