android development information! 2021 Jingdong's latest Android interview question analysis, finally won the offer

beginning

While browsing the technology news today, I found that Tencent has open sourced a set of Android native UI frameworks today. Have you found out that Tencent likes to do this kind of thing, which kind of thing? I like open source UI frameworks, and so are small programs.

After seeing this news, I downloaded the Demo as soon as possible and experienced this native UI framework. It can be said that it is really good. The idea is the same as they said.

This open source framework is: QMUI_Android, and its Slogan is: a UI library that improves the efficiency of Android UI development.

QMUI Android is designed to help quickly build an Android project with a basic design restoration effect, and at the same time use the rich controls and compatible processing provided by itself, so that developers can focus on business needs without spending energy on the design of the basic code . Whether it is the creation of a new project or the maintenance of an existing project, development efficiency and project quality can be greatly improved.

This UI library advertises to improve everyone's development efficiency, so how does it improve your own development efficiency?

From elementary to advanced level, an advanced collection of mobile programmers

To become an excellent Android developer, you need a complete knowledge system. Here, let us grow together to be what we think.

Let's take Android development as an example. From both hard skills and soft skills, we sort out the skill points required for mobile programmers to advance from beginner to advanced under the big front-end trend, and recommend some practical books and materials.

(1) Hard skills: professional technical knowledge

1. Java / Kotlin development language

(1) Java

**Common data structures: **Use scenarios such as ArrayList, Vector, CopyOnWriteArrayList, HaspMap, ConcurrentHashMap, HashTable, etc.

The JVM virtual machine includes Java memory management, GC garbage collection mechanism, and class loading mechanism. Recommended book: "In-depth understanding of Java virtual machine JVM advanced features and VPN practice".

**Multi-threaded programming,** including thread pool, lock mechanism, thread synchronization. Recommended books: "Java Concurrent Programming Practice" and "Java Multithreaded Programming Core Technology".

AOP programming implementation , including JDK dynamic proxy implementation, ASM direct manipulation of bytecode, CGLIB implementation, its principle encapsulates ASM, which is more convenient to use.

Javassist : Directly modify the method that needs to be cut before the bytecode is loaded, as well as the annotation processor APT. There are many open source library applications in Android, such as DataBinding, ButterKnife, EventBus3, etc.

Exception handling Exception , including checked exception and runtime exception handling.

IO flow is related , including blocking IO and non-blocking IO.

Some high-level specialties of Java , such as reflection, proxy, generics, enumeration, regular expressions, etc.; also learn about new features such as jdk1.8, 1.9, 1.10, etc. There are many related books, recommended ** "Thinking in Java" and "Effective Java" **.

(2) Kotlin

Kotlin is a new programming language based on JVM, which was announced as the official development language of Android by Google in Google IO 2017.

What are the advantages of Kotlin?

**①Conciseness: **A lot of standard functions are provided, which greatly reduces the amount of boilerplate code.

**② Security: ** Avoid errors such as null pointer exceptions.

**③Interoperability:** Make full use of the existing libraries of JVM, Android and browsers.

**④Tool-friendly: **It can be built with any Java IDE or using the command line.

Establish functional programming ideas in Kotlin . The function is understood as the mapping relationship between one value and another value, and the function is used as a unit to process various business logic. The function can be used as a parameter or a return value. Use the standard functions provided by Kotlin, such as let, run, with, apply, also, and Lambda expressions. Try to use closures and higher-order functions.

Another outstanding feature of Kotlin is the coroutine , which provides a powerful paradigm for designing asynchronous, non-blocking programs. A coroutine is a lightweight thread that provides a cheaper and controllable operation that avoids blocking: the coroutine hangs. Put complex asynchronous operations into the underlying library, and the program logic can be expressed in sequence to simplify asynchronous programming.

To put it simply, Kotlin/Native is designed to support programming in non-JVM virtual machine platform environments, such as iOS and embedded platforms, and to support interoperability with C. Recommended book: "Kotlin Actual Combat" .

2. Android advanced technical points

Process related , including App process principle and AIDL principle.

Performance optimization , including: memory, cpu, power consumption, network request, UI layout, thread, database and other optimization methods and the use of optimization tools.

Android source code related , including: Binder mechanism, Activity startup process, Handler principle, AMS, PMS, WMS principle, View drawing process, Touch event delivery mechanism, etc.

The process of compiling and packaging , from the java/kotlin source code to the final APK.

The realization principle of hot repair, currently there are many types of hot repair frameworks, common ones include underlying replacement, class loading and Instant Run solutions.

The principle of reverse engineering is mainly to prevent the apk from being decompiled and cracked, and to understand the apk reinforcement scheme.

Plug-inization , there are also many current solutions. The mainstream technology implementation is the Hook method, registering the activity to occupy the hole, using the occupying activity to pass AMS verification, and restore the plug-in activity. The principles of other components are similar.

NDK development , call JNI and call back to Java.

For custom controls , you need to pay attention to the call timing of onMeasure, onLayout, and onDraw, as well as the Touch event distribution mechanism.

Animation View Animation , view animation has been provided in the very early Android version system, and can only be used to set the animation of the View.

Property Animation , only for version 3.0 or higher, can be set to any Object, including objects that have not been rendered on the screen. This kind of animation is extensible and can customize any type and attribute of animation.

Native JS interaction in Webview , commonly used JSBridge, etc.

The features of Gradle and DSL syntax , such as the use of Gradle Transform API, allow third-party plug-ins to manipulate the compiled class files before they are converted to dex files. Using this feature, we can implement code injection or code modification during the code compilation stage, which is also the basis of many buried point technologies and hot repair technologies.

**Security: **HTTPS communication principle, data encryption methods, including MD5, RSA, etc., webview security, code obfuscation, data verification, component communication security, server communication.

CI continuous integration : Jenkins, Gitlab CI, etc. build continuous integration development tools.

Sersor sensor : including gyroscope, acceleration sensor, direction sensor, gravity sensor, light sensor, etc.

Android development internationalization .

The difference between ART and Dalvik virtual machine is mainly AOT, Ahead-Of-Time pre-compilation.

Familiar with DEX file structure.

Unit testing : the use of JUnit4, AndroidJUnitRunner, Mockito framework.

Automated testing : Monkey / Monkey Runner, Espresso, UI Automator, etc.

Master the modular development method : Mainly pay attention to the division of layers and the jump communication between modules.

Code refactoring ability , recommended books: "Refactoring to improve the design of existing code", "Refactoring and Patterns"

Google Dynamic Framework App Bundles .

Jetpack , Google's new generation of components, tools and architectural guidance, aims to accelerate the speed of Android application development. Jetpack is mainly divided into 4 parts:

img

Under the trend of big front-end, mobile programmers should be cool? These advanced skills help you counterattack

Third-party libraries commonly used in Android development:

Reactive programming: RxJava, RxAndroid, Google’s Agera

Network library: including Retrofit, OkHttp, Volley

Picture: Fresco, Gilde, Picasso

Dependency injection: Dagger2

Database: Realm, ORMLite, GreenDAO, ObjectBox

Data bus: EventBus, otto

LeakCanary, a memory leak detection tool, etc.

If each skill point is expanded in detail, it will form a very complicated knowledge map. It is recommended that you sort out and digest it yourself.

3. OOAD and design patterns

In terms of architecture design, the first thing to master is object-oriented development and design. Specific knowledge points include:

**Three characteristics of object-oriented: **encapsulation, inheritance, polymorphism.

Five basic principles (SOLID principles) , single responsibility principle, open and closed principle, Richter substitution principle, dependency inversion principle, interface separation principle.

23 design patterns : commonly used are factories, singletons, adapters, bridges, combinations, agents, commands, observers, strategies, state patterns, etc.

4. APP architecture design

Including MVC, MVP, MVVM, MVI, VIPER, Clean Architecture, Flux. At present, in addition to MVC, MVP and MVVM are used more, and the specific architecture design must be considered in conjunction with the business.

(2) Soft skills

People are in the workplace and walk the rivers and lakes. It is not enough to advance senior programmers with technical depth. They also need to master many soft skills and pay attention to the training of comprehensive professional qualities. Many people do not pay enough attention to them at first, and they are prone to encounter bottlenecks in the latter half of the rise in the workplace.

The following is my personal summary of the necessary soft skills for senior programmers for your reference.

**1. Fast learning ability: **Including the depth and breadth of technology, being able to continuously explore new technologies and learn continuously.

**2. Communication skills: **Strengthen the ability of expression, reading, and writing, even today with advanced technology, it will never be out of date. Because any form of communication is very necessary within the enterprise.

**3. Teamwork ability: **Developers can easily fall into an isolated state of interpersonal communication, but development work can never be completed by one person. Only when members can truly integrate into the team and smoothly communicate and cooperate with other colleagues can it be reflected Out of its true value, the chance of being listed as a candidate for future promotion is also greater.

**4. Time management ability: **You can refer to the "four-quadrant rule" of time management to focus your energy and time on important but not urgent tasks, so that you can plan ahead.

img

Under the trend of big front-end, mobile programmers should be cool? These advanced skills help you counterattack

**5. Influence: **On the one hand, it is business influence, and on the other hand, it is technical influence. Among them, the ways to increase the influence of technology include: participating in technology sharing, summarizing and disseminating accumulated knowledge; participating in the review of technical solutions and sharing technical experience; helping new students solve technical problems; in blogs, Github, StackOverflow and other platforms Share on the outside.

6. Document writing ability:

Code comments . Many programmers rarely write comments, or too many comments are inappropriate. Refer to the annotation specifications of open source projects.

Write technical design documents . Including flowcharts, class diagrams, function sequence diagrams and so on.

At last

I have seen many technical leaders meet older programmers who are in a period of confusion during interviews, who are older than the interviewer. These people have some common characteristics: they may have worked for 5 or 6 years, or they write code to the business department repeatedly every day. The repetitive content of the work is relatively high, and there is no technical content. When asked about their career plans, they didn't have much ideas.

In fact, the age of 30 to 40 is the golden stage of a person’s career development. You must have your own plan for business expansion, technical breadth and depth enhancement, to help you have a sustainable development path in career development. Not to stand still.

Keep running, you will know the meaning of learning!

"Android Senior Architect Interview Guidance + 2021 Big Factory Interview Questions" free to receive

/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

[External link pictures are being transferred...(img-y5flLRjK-1611209985634)]

Guess you like

Origin blog.csdn.net/fanzhang_vip0723/article/details/112941867