史上最全的Android热点技术面试题集锦
前言
很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨败收场。
下述是我整理的Android面试题汇总,由于篇幅原因,在这只把热点技术部分的题目列举出来,后续还会更新其余面试题内容,大家可以关注一下我,及时知晓我更新的知识点,同时这份面试集锦的整理也花费了我很多时间,有需要的朋友可以点击这里免费领取!
可以关注一下专栏Android高级开发架构(记得看专栏简介哦~)每天更新各种Android开发趣事、技术干货、进阶架构知识、面试经验分享等。如有好的文章也欢迎投稿。
1.组件化
(1)概念:
组件化:是将一个APP分成多个module,每个module都是一个组件,也可以是一个基础库供组件依赖,开发中可以单独调试部分组件,组件中不需要相互依赖但是可以相互调用,最终发布的时候所有组件以lib的形式被主APP工程依赖打包成一个apk。
(2)由来:
- APP版本迭代,新功能不断增加,业务变得复杂,维护成本高
- 业务耦合度高,代码臃肿,团队内部多人协作开发困难
- Android编译代码卡顿,单一工程下代码耦合严重,修改一处需要重新编译打包,耗时耗力。
- 方便单元测试,单独改一个业务模块,不需要著重关注其他模块。
(3)优势:
- 组件化将通用模块独立出来,统一管理,以提高复用,将页面拆分为粒度更小的组件,组件内部出了包含UI实现,还可以包含数据层和逻辑层
- 每个组件度可以独立编译、加快编译速度、独立打包。
- 每个工程内部的修改,不会影响其他工程。
- 业务库工程可以快速拆分出来,集成到其他App中。
- 迭代频繁的业务模块采用组件方式,业务线研发可以互不干扰、提升协作效率,并控制产品质量,加强稳定性。
- 并行开发,团队成员只关注自己的开发的小模块,降低耦合性,后期维护方便等。
(4)考虑问题:
模式切换:如何使得APP在单独调试跟整体调试自由切换
组件化后的每一个业务的module都可以是一个单独的APP(isModuleRun=false), release 包的时候各个业务module作为lib依赖,这里完全由一个变数控制,在根项目 gradle.properties里面isModuleRun=true。isModuleRun状态不同,载入application和AndroidManifest都不一样,以此来区分是独立的APK还是lib。