Android 超实用最全面试大纲(四),2021 大厂 Android 知识点总结
2、SharePreference 安全问题
不能跨进程同步
文件不宜过大
3、内存对象序列化
Serializeble:是 java 的序列化方式,Serializeble 在序列化的时候会产生大量的临时对象,从而引起频繁的 GC
Parcelable:是 Android 的序列化方式,且性能比 Serializeble 高,Parcelable 不能使用在要将数据存储在硬盘上的情况
4、避免在 UI 线程中做繁重的操作
##三、架构模式面试题
Android 基础——框架模式 MVC 在安卓中的实践
Android 基础——框架模式 MVP 在安卓中的实践
Android 基础——框架模式 MVVM 之 DataBinding 的实践
##四、插件化面试题
**1、插件化解决的问题
**
动态加载 APK(反射、类加载器)
资源加载(反射、AssetManager、独立资源、分段资源)
代码加载(反射获取生命周期)
2、类加载器(Java 中字节码添加到虚拟机中)
DexClassLoader:能够加载未安装的 jar/apk/dex,主要用于动态加载和代码热更新
PathClassLoader:只能加载系统中已经安装过的 apk
##五、热更新面试题
1、热更新主要流程
线上检查到 Crash
拉出 Bugfix 分支修复 Crash 问题
jenkins 构建和补丁生成
app 通过推送或主动拉取补丁文件
将 Bugfix 代码合到 master 上
2、热更新主流框架
Dexposed
AndFix
Nuwa
Tinker
3、热更新的原理
在 ClassLoader 创建一个 dexElements 数组
将修复好的 dex 文件存放在 dexElements 数组的最前面
ClassLoader 会遍历 dexElements 数组,找到最前面的 dex 文件优先加载
##六、进程保活面试题
1、进程的优先级
空进程
后台进程
服务进程
可见进程
前台进程
2、Android 进程回收策略
Low memory Killer(定时执行):通过一些比较复杂的评分机制,对进程进行打分,然后将分数高的进程判定为 bad 进程,杀死并释放内存
OOM_ODJ:判别进程的优先级
3、Android 保活方案
利用系统广播拉活
利用系统 Service 机制拉活
利用 Native 进程拉活
利用 JobScheduler 机制拉活
利用账号同步机制拉活
##七、Lint 面试题
1、什么是 Android Lint
Android Lint 是一个静态代码分析工具,它能够对你的 Android 项目中潜在的 Bug、可优化的代码、安全性、性能、可用性、可访问性、国际化等进行检查
2、Lint 工作流程
3、配置 Lint
创建 Lint.xml 到根目录下,自定义 Lint 安全等级等
在 Java 文件中可以使用 @suppressLint(“NewApi”)来忽视 Lint 的报错
在 xml 文件中可以使用 tool:ignore(“UnusedResources”)来忽视 Lint 的报错
自定义 Lint 检查,可以创建类,继承 Detector 和实现 JavaPsiScanner
##八、Kotlin 面试题
1、什么是 Kotlin
Kotlin 是一种基于 JVM 的编程语言
评论