preface

Recent hiring, including me are involved in the push and the interview process, after the recruitment, found many small white the right out into the workplace, for career planning and growth path is not very clear, introduction to the general feeling is easy, but is confused about the future, don’t know how to improve their skills, to reach the next stage to add what content. The knowledge point about Java is omitted here, the way friend that has need searches by oneself.

This is to compile an Android research and development of the road, I hope to help you.

Data structures and algorithms

The data structure

  • The stack and queue
  • Array and linked list, custom a dynamic array
  • Hash table and Hash conflict resolution
  • Binary tree
  • B + B – tree
  • Basic sorting algorithm: key quicksort, merge sort, heap sort (large root heap, small root heap)
  • Optimization of fast sorting
  • Binary search and variant binary search
  • Huffman tree, red black tree
  • String operation, string search, KMP algorithm
  • BFS, DFS, Prim, Dijkstra algorithms for graphs (Advanced skills)
  • Classic problem: massive data processing (1 billion numbers to find the largest number of 10000 TOP K problem)

algorithm

  • Divide and conquer algorithm
  • Dynamic programming
  • Greedy algorithm
  • Branch bound method

Android based

  • Application Life Cycle
  • Android Activity lifecycle
  • Android Service, IntentService, Service and component communication
  • The Activity of onNewIntent
  • Fragment lazy loading implementation, parameter passing and saving
  • ContentProvider example explanation
  • BroadcastReceiver uses summaries
  • Android messaging
  • Binder mechanism, shared memory implementation principle
  • Android event distribution mechanism
  • Android multithreading implementation: Thread, HandlerThread, AsyncTask, IntentService, RxJava
  • How ActivityThread works
  • Nesting sliding implementation principle
  • RecyclerView and ListView(cache principle, difference, advantages and disadvantages)
  • View rendering principle, custom View, custom ViewGroup
  • View, SurfaceView and TextureView
  • Why does the main thread Looper. Loop not cause an infinite loop
  • Cache implementation of ViewPager
  • RequestLayout, Invalidate, postInvalidate
  • AndroidP new features
  • Android two types of VMS
  • ADB common commands
  • Differences between the Asset directory and the RES directory
  • Introduction to Android SQLite

Android Development Advanced

1. Familiar with Android SDK, Android UI, and various Debugging tools; 2. Rich Android application architecture ability, able to independently lead and build App; 3.Mobile Web development experience; Multiple skills: familiar with iOS, H5, Python,.NET and other development languages is preferred; 4. Have a deep understanding of Android performance optimization, security, software reinforcement and automated testing; 5. Blog, open source project

Technical Difficulties of Android

AIDL, Binder, multi-process, View drawing process, event distribution, message queue, etc.

Binder is one of the most important means of interprocess communication in Android system. At present, the development of APP cannot be separated from the application of multi-process. Processes that need to be started in the background, such as location and push, are often started to ensure that the memory of the main process runs. Therefore, reasonable use of multi-process is also very necessary; View drawing is the theoretical basis of our custom control, only to master the view is how to draw personalized custom control; Event distribution has always been one of the difficulties in Android development and must be mastered; The handler mechanism is also a difficulty for Android, because the underlying layer, including Asynctask, system startup, Intentservice and so on, is implemented through handler. Therefore, to master the handler mechanism can not only improve your actual development ability, but also improve the implementation of android. More can let you understand the entire Android system operation.

Android framework layer source control

  • Android package management mechanism, the core PackageManagerService
  • Windows management, core WindowManagerService
  • Android Activity startup and management, core ActivityManagerService
  • Root Activity workflow
  • The Context association class
  • Various principles, the classic third party library source code series
  • Custom LayoutManager, RecyclerView how to custom LayoutManager
  • VLayout implementation principle, that is, how to customize LayoutManager
  • Glide loading principle, cache scheme, LRU algorithm
  • Implementation and principles of Retrofit
  • OKHttp3 is used in the Intercept of web requests
  • Implementation principle of EventBus
  • Implementation principle of ButterKnife
  • RxJava implementation principle
  • Dagger dependency injection
  • Hot repair implementation principle, solution
  • Componentization principle and solution

Android process communication and multi-process development

Android multi-process and Application relationship

Classic Solution: Multiprocess Communication solution: Andromeda

  • Android Animation
  • Android Drawing Principles
  • Android Page Restoration

Android page restoration uses the following two methods:

  • onSaveInstanceState(Bundle outState)
  • onRestoreInstanceState(Bundle savedInstanceState)

OnSaveInstanceState: This method is triggered when the Activity is easily destroyed by the system. To be specific:

  • The user clicks the Home button
  • Users tap the Home button to switch to another application
  • There’s a call waiting for additional action

Mixed development and Android WebView application

The knowledge points involved in mixed development mainly include:

  • APP calls WebView to load the URL
  • Master WebView encapsulation, understand all WebSettings configuration, master WebViewClient, * WebChromeClient
  • Master WebView and Native two-way communication mechanism and encapsulate two-way communication middleware
  • For details about how to package a WebView, see GitHub: AgentWeb
  • Understanding of communication middleware principle: GitHub: WebProgress

Gradle, automated build, continuous integration related

The Android system

Android Studio compilation process

Compilation tools used: AAPT, AIDL, Java Compiler, dex, zipalign

Description of main steps:

  • Package res resource files with AAPT to generate R.Java, resources.arsc and RES files (binary & non-binary such as RES/RAW and PIC remain as is)
  • Process the. Aidl file and generate the corresponding Java interface file
  • R.java, Java interface files, Java source files are compiled with Java Compiler to generate. Class files
  • Using the dex command, you can generate classes.dex by processing the. Class file and the. Class file in the third-party library
  • Use apkBuilder to package resources. Arsc, RES files, assets files and classes.dex generated by AAPT to generate APK
  • Use the Jarsigner tool to debug or release the above APK
  • Use zipalign to align the signed APK.

The App starts the loading process

Android VIRTUAL machine Android App sandbox rules

The Android framework

The three most important classes in Android source code are: ActivityManagerService/PackageManagerService/View, you can read the source code in this section over the weekend. Reading the source code can improve our ability to design our own code in the future. At the same time, we can also understand the operating principle of the entire Android system from the bottom, such as the message loop of the main thread, how the main thread interacts with AMS across processes, the working mode of various services in the SystemServer process, and the working principle of AsyncTask. These knowledge is also a senior Android development engineer must master, not all day long to indulge in UI and the interaction of the four components, to stand in a higher perspective to consider some of the problems of Android.

  • The MVC pattern
  • The MVP pattern
  • The MVVM pattern
  • The CLEAN model
  • Componentized development
  • Cross-platform development: Flutter, ReactNative (RN)

Mobile development periphery

Server development related

  • SpringBoot technology
  • Restful API development
  • Network protocol understanding: TCP/IP, HTTP/HTTPS, OSI layer 7 protocol
  • Authentication protocol: OAuth2.0, etc
  • Basic database skills
  • Data caching technology V: Memcached, Redis, Web caching principle
  • Message queue technology
  • Monitoring and log analysis techniques

Front-end development related

There is a lot of front-end development knowledge, a lot of frameworks, but the essence of things is just the following.

  • Core requirements: HTML, CSS, JavaScript
  • Getting started: browser compatibility, custom UI and dynamic effects
  • Intermediate skills: Various frameworks emerge, with vue.js and react.js as the core
  • Collaborative development skills: package management, modularization, tools using NPM, Webpack, etc
  • Advanced skills: framework principle source code research

Develop and debug various tools

  • Performance analysis tool: Memory Monitor
  • Performance tracking and method execution analysis: TraceView
  • View analysis: Hierarchy Viewer
  • ApkTool- A tool for reverse engineering Android Apk files
  • Lint- Android Lint is a static code analysis tool
  • Dex2Jar- tools that use android. dex and java.class files

Stern said

You don’t have to be a genius or a genius to be successful in the short term. For many junior and intermediate Android engineers, if they want to improve their skills, they often have to explore their own growth, and the learning effect is not systematic, inefficient, long and helpless. Finally, the related information that has been sorted and collected before is attached: