原文;https://www.jianshu.com/p/cfa824ecaa52
每个人知识面不一样,可能对于我来说算有难度的你们觉得so easy哈哈。这里举几个记得比较清楚的面试题,答案不保证一定标准,你们权当参考,有更好的也欢迎在评论区留言感谢!
如何进行单元测试,如何保证 App 稳定 ?
要测试 Android 应用程序,通常会创建以下类型自动单元测试
本地测试:只在本地机器 JVM 上运行,以最小化执行时间,这种单元测试不依赖于 Android 框架,或者即使有依赖,也很方便使用模拟框架来模拟依赖,以达到隔离 Android 依赖的目的,模拟框架如 Google 推荐的 Mockito;
检测测试:真机或模拟器上运行的单元测试,由需要跑到设备上,比较慢,这些测试可以访问仪器(Android 系统)信息,比如被测应用程序的上下文,一般地,依赖不太方便通过模拟框架模拟时采用这种方式;
注意:单元测试不适合测试复杂的 UI 交互事件
App 的稳定主要决定于整体的系统架构设计,同时也不可忽略代码编程的细节规范,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃,所以上线之前除了自己本地化测试之外还需要进行 Monkey 压力测试
少部分面试官可能会延伸,如 Gradle 自动化测试、机型适配测试等
插件化原理分析
插件化是指将 APK 分为宿主和插件的部分。把需要实现的模块或功能当做一个独立的提取出来,在 APP 运行时,我们可以动态的载入或者替换插件部分,减少宿主的规模
宿主: 就是当前运行的 APP。
插件: 相对于插件化技术来说,就是要加载运行的apk 类文件。
这是我整理的插件化技术思维图;
组件化原理
引入组件化的原因:项目随着需求的增加规模变得越来越大,规模的增大导致了各种业务错中复杂的交织在一起,每个业务模块之间,代码没有约束,带来了代码边界的模糊,代码冲突时有发生, 更改一个小问题可能引起一些新的问题, 牵一发而动全身,增加一个新需求,需要熟悉相关的代码逻辑,增加开发时间
1.避免重复造轮子,可以节省开发和维护的成本。
2.可以通过组件和模块为业务基准合理地安排人力,提高开发效率。
3.不同的项目可以共用一个组件或模块,确保整体技术方案的统一性。
4.为未来插件化共用同一套底层模型做准备。
组件化开发流程;是把一个功能完整的 App 或模块拆分成多个子模块(Module),每个子模块可以独立编译运行,也可以任意组合成另一个新的 App 或模块,每个模块即不 相互依赖但又可以相互交互,但是最终发布的时候是将这些组件合并统一成一个 apk,遇到某些特殊情况甚至可以升级或者降级
当然问的不只是这么几个问题。当时回答的时候可能会稍微啰嗦一些,这些是根据我回头重新整理了一下的。更多的面试题就不一一再例出来了
我平时遇到有用的学习视频,资料都喜欢收集整理起来。包括这次去腾讯面试遇到的问题都有整理在这篇社招文档里面了。如果有需要的朋友也可以在评论区留言,我看到后会回复发你的
急需进阶学习视频的朋友可以留言视频教程,请说明需要初中级的,还是高级的教程。
身边很多人会不停告诉你,要不断的学习,不然说不定哪天就被淘汰了
但是他们不告诉你,应该学什么?怎么学?不说总结的重要性?
学而不思则罔。望共勉!