0%

Android 开发高手课:结课测试

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 才是专门为移动端打造的

-------------------- 本文结束感谢您的阅读 --------------------