1. 关于 Android 崩溃,哪个描述是正确的()
- 所有的异常都可以被捕获
- 崩溃率越低越好,所以要尽量把所有崩溃都 catch 掉
- 因为系统导致的崩溃,我们无法解决
- 崩溃率是衡量应用稳定性的一个基础指标,崩溃率高低与应用时长、复杂的等因素都有关
题目解析
A 选项,并不是所有的异常都可以被捕获,例如系统重启、用户强杀等都无法捕获,所以增加了异常率的统计
B 选项,我们并不是直接追求崩溃率这个数值,所以直接 catch 了大部分崩溃,可能造成用户有其他问题,也不会去排查
C 选项,很多系统 ROM 导致的崩溃,都可以通过反射或者 hook 解决
D 选项,崩溃率是衡量应用稳定性的基础指标,但是不同类型的应用崩溃率不太好直接比较,跟应用复杂度、用户时长等都有关系
2. 关于内存优化,哪些描述是错误的()
- 手机内存越来越大,内存优化的意义并不大
- 内存越大越好,6G 内存一定比 4G 内存好
- 内存占用越少越好,占用越少应用的性能越好
- Native 内存并不会造成虚拟机 OOM,可以随意使用
题目解析
A 选项,虽然当前设备内存越来越大,但是应用复杂度也越来越大,合理地使用内存对应用依然重要
B 选项,6G 内存不一定比 4G 要好,内存带宽跟材质、标准这些都有关系
C 选项,内存占用并不是越少越好,当系统内存充足的时候,我们可以多用一些内存来获得更好的性能
D 选项,Native 内存滥用可能会导致系统物理内存不足
3. 关于卡顿优化,哪个描述是正确的()
- 卡顿主要是主线程,其他线程可以随意使用
- 现在 CPU 越来越强大,卡顿优化变得不太重要
- 导致卡顿的原因可能会有很多,建立全面的卡顿监控可以帮助我们更好地解决卡顿问题
- Traceview 和 Systrace 都是 instrument 类型的卡顿排查工具
题目解析
A 选项,因为线程调度、锁等原因,其他线程也可能会影响到主线程
B 选项,即使硬件越来越强大,用户体验依然很重要
C 选项,函数耗时、I/O 非常慢、线程间的竞争或者锁等原因都可能引起卡顿,建立全面的监控非常重要
D 选项,Systrace 不是 instrument 类型工具,属于 sample 类型
4. 关于启动优化,哪些描述是正确的()
- 启动速度是我们应用尤为关键的一个指标
- 启动优化要从用户的真实体验出发,要着眼从点击图标到用户可操作性的整个过程
- 影响启动速度的因素有很多,我们要从多个维度去做启动优化
- 准确的启动耗时统计非常重要,我们不能只关注平均启动时间这个指标
题目解析
A 选项,启动耗时可能会直接影响留存和转化等核心数据,非常重要
B 选项,启动优化不能过于 KPI 化,要从用户的真实体验触发
C 选项,CPU/IO/网络/线程调度/锁/GC,我们要学会从多个维度去拆解
D 选项,采用平均启动时间之后,一些体验很差的用户很有可能是被平均了
5. 以下哪些属于文件系统()
- APFS
- ext4
- F2FS
- HFS
题目解析
A 选项是 iOS 10.3 系统之后,苹果使用的文件系统
B 选项是常见的文件系统,大部分 Android 手机目前依然在使用它
C 选项是华为和三星一些 Android 设备使用的文件系统
D 选项是苹果过去使用的文件系统
6. 以下哪一种不是常见的 I/O 方式()
- 标准 I/O
- 直接 I/O
- mmap
- binder
题目解析
D 选项,binder 是 Android 的通信方式,并不是 I/O 方式
7. 以下哪些是常见 I/O 不良读写行为()
- 主线程 I/O
- 资源泄漏
- 读写 buffer 过小
- 重复读
题目解析
以上均是不良的 I/O 读写行为
8. 以下哪个因素不是我们在选取存储方式时主要考虑的()
- 正确性
- 性能
- 是否高大上
- 安全性
题目解析
C 选项,是否高大上并不是我们选择存储方式的主要考虑因素
9. 以下哪些是 Android 常用的数据存储方法()
- SharedPreferences
- ContentProvider
- 文件
- 数据库
题目解析
以上都是 Android 常用的数据存储方法
10. 以下哪种方式可以让 myfield 索引生效()
- SELECT * FROM mytable WHERE myfield BETWEEN 10 and 20;
- SELECT * FROM mytable WHERE myfield LIKE 1%;
- SELECT * FROM mytable WHERE myfield >= 10 AND myfield <= 20;
- SELECT * FROM mytable WHERE myfield >= 10 OR myfield <= 5;
题目解析
ABD 选项,用了 BETWEEN、LIKE、OR 这些操作符,或者使用表达式或者 case when 等,索引都无法生效
11. 以下哪一种不是无线网络类型()
- Wi-Fi
- 光纤
- NFC
- 蓝牙
题目解析
B 选项,光纤并不是无线网络类型
12. 以下哪一种不是多路复用 I/O 的常见实现方式()
- epoll
- poll
- select
- mmap
题目解析
D 选项,mmap 是常见的 I/O 方式,并不是多路复用 I/O 的实现方式
13. IPv6 主要为了解决什么问题()
- 连接资源
- IP 资源
- 安全
- DNS 解析
题目解析
A 选项,IPv6 的普及可以在一定程度上提升网络连接速度,但这并不是它最主要的目的
B 选项,IPv6 主要为了解决 IPv4 IP 资源将要耗尽的问题
14. 以下哪些是电池的关键指标()
- 电池容量
- 充电时间
- 寿命
- 安全性
题目解析
ABCD 选项,虽然电池技术在不断发展,但是容量、充电时间、寿命和安全性,这些依然都是电池的基本指标
15. Doze 模式是从哪个 Android 版本开始推出的()
- Lollipop
- Marshmallow
- Nougat
- Orea
题目解析
B 选项,Doze 模式是从 Marshmallow(Android 6.0) 开始推出的
16. 以下哪一个是 dpi 的正确描述()
- 像素点,如手机分辨率 320*480 表示宽有 320 像素,高有 480 像素
- 像素密度,是系统软件上指定单位尺寸的像素数量
- 基于屏幕物理分辨率的一个抽象单位,用于说明密度无关的尺寸和位置
- 密度,屏幕上每平方英寸所含有的像素点数量
题目解析
A 选项是 px 的描述,B 选项是 dpi 的正确描述,C 选项是 dp 的描述,D 选项是 density 的描述
17. 以下哪些工具可以用来编译插桩()
- ASM
- AspectJ
- Buck
- Redex
题目解析
C 选项,此为 Facebook 的编译工具,并不是用来插桩的
18. 以下哪些是架构选型需要考虑的因素()
- 框架的成熟度
- 工具链的成熟度
- 学习和使用成本
- 文档是否完备
题目解析
均为架构选型需要考虑的因素
19. 以下哪种不属于 Native Hook 技术()
- GOT Hook
- Inline Hook
- Xposed
- PLT Hook
题目解析
C 选项,Xposed 是一个用来修改系统或者应用功能的框架,并不是 Native Hook 技术
20. 以下哪一个不是移动深度学习框架()
- MNN
- NCNN
- MACE
- TensorFlow
题目解析
A 选项,阿里开源的移动深度学习框架
B 选项,腾讯开源的移动深度学习框架
C 选项,小米开源的移动深度学习框架
D 选项,Google 开源的深度学习框架,TensorFlow Lite 才是专门为移动端打造的