##Preface
Many people may not have worked in an Internet company before the interview, or may have worked in an Internet company for a short period of time. I wonder what questions are asked in technical interviews at Internet companies? In addition, I may not have been fully prepared. I was confused by the interviewer's questions within a few rounds of the interview, and ended up in a disastrous failure.
The following is a summary of the Android interview questions I compiled. Due to space reasons, I only list the questions in the hot technology part. The content of the other interview questions will be updated later. You can follow me and stay informed. I updated my knowledge points, and it also took me a lot of time to compile this interview collection!
1. Componentization
(1) Concept:
Componentization: dividing an APP into multiple modules, each module is a component, or it can be A basic library is provided for components to depend on. During development, some components can be debugged separately. The components do not need to depend on each other but can call each other. When finally released, all components are packaged into an apk in the form of lib by the main APP project dependency.
(2) Origin:
APP version iteration, new functions are constantly added, the business becomes complex, and the maintenance cost is high
The business coupling is high and the code is bloated , it is difficult for multiple people to collaborate and develop within the team
Android compilation code is stuck, and the code coupling in a single project is serious. Modifying one part requires recompiling and packaging, which is time-consuming and labor-intensive.
Convenient for unit testing, you can change one business module alone without focusing on other modules.
(3) Advantages:
Componentization separates common modules and manages them uniformly to improve reuse and split the page into components with smaller granularity. The component contains UI implementation, and can also include data layer and logic layer
Each component can be compiled independently, speeding up compilation, and packaged independently.
Modifications within each project will not affect other projects.
Business library projects can be quickly separated and integrated into other apps.
Business modules with frequent iterations adopt a component approach. Business line research and development can not interfere with each other, improve collaboration efficiency, control product quality, and enhance stability.
Parallel development, team members only focus on small modules developed by themselves, reducing coupling and facilitating later maintenance.
(4) Consideration issues:
Mode switching: How to make the APP freely switch between individual debugging and overall debugging
Each business module after componentization It can be a separate APP (isModuleRun=false). When releasing the package, each business module is used as a lib dependency. This is completely controlled by a variable. In the root project gradle.properties, isModuleRun=true. The isModuleRun status is different, and the loading application and AndroidManifest are different to distinguish whether it is an independent APK or a lib.
Configure in build.grade:
Resource conflict
How to resolve the same resources when we create multiple Modules Conflicts in file name merging. Duplicate names of business Module and BaseModule resource files will cause conflicts. The solution is:
Each module has app_name. In order to prevent duplicate resource names, in the build of each component. Add resourcePrefix "xxx_ to forcibly check the resource name prefix in gradle. Fix the resource prefix of each component. However, the resourcePrefix value can only limit the resources in xml, and cannot limit image resources.
Dependencies
How to reference some common libraries and tool classes between multiple Modules
Component communication
After componentization, Modules are isolated from each other, how to perform UI jumps and methods To call, you can use routing frameworks such as Alibaba ARouter or Meituan's WMRouter.
Each business module does not need any dependencies before and can be jumped through routing, perfectly solving the coupling between businesses.
Entry parameters
We know that components are related, so how to get the parameters passed by other Modules when debugging alone
Application
When the component is alone When running, each Module forms its own APK, which means there will be multiple Applications. Obviously we don't want to write so much code repeatedly, so we only need to define one BaseApplication, and other Applications directly inherit this BaseApplication. That’s OK. Public parameters can also be defined in BaseApplication.
2. Plug-inization
(1) Overview
When it comes to plug-inization, we have to mention the problem that the number of methods exceeds 65535. We can solve it through Dex subcontracting, and at the same time This can be solved by using plug-in development. The concept of plug-in is that the host APP loads and runs the plug-in APP.
(2 advantages)
In a large project, in order to have a clear division of labor, different teams are often responsible for different plug-in APPs, so that the division of labor is clearer. Each module is encapsulated into different plug-in APKs, and different modules can be compiled separately, which improves development efficiency. Solved the above problem of the number of methods exceeding the limit. Online bugs can be solved by launching new plug-ins to achieve a "hot fix" effect. Reduced the size of the host APK.
(3 Disadvantages)
Apps developed as plug-ins cannot be launched on Google Play, which means there is no overseas market.
The above is the detailed content of Summary of Android hot technical interview questions. For more information, please follow other related articles on the PHP Chinese website!
Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete