Android 应用开发面试学习清单
共 13 个主题分组、64 篇内容
面向 中级(3-5 年)Android 应用开发岗 的系统复习资料。
你的背景画像:设备指纹 / 风控 SDK 开发者,强项 C/C++ 与 NDK/JNI、系统底层、逆向视角; 短板在 UI 层(View / Compose)、Kotlin 协程 / Flow、Jetpack 全家桶、应用架构。 副技能 iOS 基础。
本资料策略:重点补短板(★),把强项包装成差异化亮点(☆),iOS 作为跨端谈资(辅)。
如何使用这套资料
- 先读
01-面试路线与自我定位.md,想清楚怎么把“风控 SDK 背景“讲成应用岗的优势。 - 按下面“复习路线“的优先级顺序学,先攻短板(协程 → UI → Jetpack → 架构 → 测试体系)。
- 每篇结构统一:知识点讲解 → 高频面试题 + 参考答案要点 → 易错点 / 追问。
- 学完一个知识点,回到本页的“自测清单“打勾
- [x],追踪进度。
复习路线(按优先级)
| 阶段 | 重点 | 对应文档 |
|---|---|---|
| 第一优先(短板,必攻) | 协程 / Flow、View 体系、Compose、Jetpack、架构、测试体系、并发、深度扩展 | 04, 08, 09, 10, 13, 14, 16, 20, 52 |
| 第二优先(高频,巩固) | Kotlin 核心及进阶、Java/JVM、四大组件、系统原理、性能、RxJava | 02, 03, 06, 18, 21, 05, 51 |
| 第三优先(亮点,包装) | NDK/JNI、主流第三方库、APM、推送/保活、音视频、跨端与动态化、SDK与调试 | 42, 39, 26, 37, 49, 44-45, 48, 43, 46 |
| 第四优先(加分,速览) | iOS 基础、KMP、项目经验与软技能、复盘与追问防御 | 44, 45, 59, 60, 61 |
| AI 辅助开发(趋势话题) | Vibe Coding、Harness Engineering、AI Coding 工程化进阶 | 62, 63, 64 |
| 贯穿始终(每日刷题) | LeetCode Hot 100 算法清单与解析 | 50 |
| 算法补充(查漏补缺) | 排序/位运算/并查集/前缀和差分/设计题、业务算法场景 | 51, 53 |
| 算法亮点(差异化) | 海量数据处理(结合你的 SDK 背景) | 52 |
| 计算机基础(必考四大件) | 网络排障、设计模式、操作系统与数据库进阶 | 29, 56, 54, 30, 55 |
| 安全亮点(核武器) | Android 安全与逆向、移动安全防护体系(你的本行) | 40, 41 |
| 工程化与设计(中高级) | Gradle构建与发布体系、鉴权订单隐私合规、性能工具、系统设计 | 31, 32, 33, 35, 36, 34, 25, 57, 58 |
自测清单(学完打勾)
01 面试路线与自我定位
- STAR 法则讲项目
- 怎么把风控 SDK 项目讲成应用岗亮点
- 常见 HR / 反问环节
- 算法准备方向
02 Kotlin 语言核心
- val/var、空安全(
?.?:!!)、平台类型 - 扩展函数 / 扩展属性的原理(静态分发)
- 高阶函数、Lambda、
inline/noinline/crossinline - 作用域函数 let/run/with/apply/also 区别
- data class / sealed class / object / 伴生对象
- 属性委托 by lazy / Delegates.observable / 自定义委托
- 泛型型变 in/out、reified
03 Kotlin 进阶专题
- inline / reified / value class / sealed 类型的面试表达
- Kotlin 泛型、协变逆变、委托与 DSL 设计能力
- 协程状态机、Flow 操作符与性能陷阱的深入理解
04 Kotlin 协程与 Flow ★
- suspend 原理:CPS 变换与状态机
- 结构化并发:CoroutineScope / Job / 父子关系
- Dispatchers(Main/IO/Default)与 withContext
- launch vs async、Deferred
- 取消机制(协作式)与异常传播
- CoroutineExceptionHandler / supervisorScope / SupervisorJob
- 冷流 Flow vs 热流;StateFlow vs SharedFlow
- flowOn / buffer / conflate / collectLatest
05 RxJava 与响应式编程
- Observable / Observer / Subscriber 核心模型
- 变换(map/flatMap)、过滤(filter/debounce)、合并(merge/zip)
- 线程切换 SubscribeOn / ObserveOn 原理
- 背压机制 Flowable / Single / Completable
- 生命周期管理与内存泄漏防护
06 Java 与 JVM 基础
- HashMap 原理(扩容、红黑树、并发问题)、ConcurrentHashMap
- synchronized vs ReentrantLock、volatile、CAS、AQS
- 线程池 ThreadPoolExecutor 七参数与拒绝策略
- JMM 内存模型、happens-before
- JVM 内存区域、GC 算法与垃圾回收器
- 类加载机制、双亲委派
07 Android 四大组件与基础
- Activity 生命周期、启动模式、taskAffinity
- Fragment 生命周期与 commit/commitNow、懒加载
- Service(前台/绑定)、IntentService、JobScheduler/WorkManager
- BroadcastReceiver(静态/动态、有序、LocalBroadcast)
- ContentProvider 与跨进程数据共享
- Intent、序列化 Serializable vs Parcelable、Context 类型
08 UI 体系 - View 与自定义 View ★
- View 绘制三大流程 measure / layout / draw
- MeasureSpec 与 onMeasure、wrap_content 处理
- 事件分发 dispatch / intercept / onTouchEvent
- 滑动冲突(外部 / 内部拦截法)
- 自定义 View / ViewGroup、自定义属性
- invalidate vs requestLayout、硬件加速
- Window / DecorView / ViewRootImpl 关系
09 UI 体系 - Jetpack Compose ★
- 声明式 UI 思想、@Composable 原理
- 重组(Recomposition)与跳过、稳定性
- 状态:remember / mutableStateOf / state hoisting
- 副作用:LaunchedEffect / DisposableEffect / SideEffect / derivedStateOf
- CompositionLocal、Modifier 原理与顺序
- 三大阶段 Composition / Layout / Drawing
- 与 View 互操作、性能优化(key、lambda)
10 Compose 深水区
- 重组跳过、稳定性、remember key 与状态提升
- Modifier、Layout、SubcomposeLayout、自定义绘制核心机制
- Compose 性能分析、列表优化与 View 互操作边界
11 Android 版本适配
- Android 版本演进中的行为变更与兼容策略
- targetSdkVersion 升级风险、灰度验证与回滚方案
- 权限、后台限制、通知、前台服务等高频适配点
12 图片加载与缓存
- 图片加载链路:请求、解码、变换、缓存、展示
- 内存缓存 / 磁盘缓存 / 网络缓存的命中与失效策略
- 大图、列表滑动、生命周期绑定与 OOM 防护
13 Jetpack 架构组件 ★
- ViewModel 原理、生命周期、SavedStateHandle
- Lifecycle / LifecycleObserver、LiveData 原理与粘性事件
- Room(实体 / DAO / 迁移 / 协程&Flow 支持)
- Navigation、Hilt 依赖注入(vs Dagger)
- DataStore(替代 SharedPreferences)、WorkManager、Paging3
14 应用架构 - MVVM 与 MVI ★
- MVC / MVP / MVVM / MVI 演进与对比
- 单向数据流、State / Intent / Effect
- 分层(data / domain / ui)、Repository 模式
- UseCase、依赖倒置、可测试性
15 App 架构落地案例
- 分层架构在真实业务中的模块职责划分
- Repository、UseCase、ViewModel 与 UI State 协作链路
- 架构取舍、团队协作、可测试性与演进成本表达
16 测试体系
- 单元测试 JUnit、Mockito、Robolectric
- UI 测试 Espresso、UI Automator
- 测试驱动开发 TDD 原理与实践
17 组件化路由与模块通信
- 组件化拆分、依赖管理与 ARouter 原理
- 模块间通信、接口暴露与服务发现
- 资源冲突处理、公共库提取与解耦策略
18 Android 系统原理
- Handler / Looper / MessageQueue、同步屏障、IdleHandler
- Binder 机制(一次拷贝、mmap、驱动)
- AMS / 应用启动流程 / 进程创建(Zygote)
- 类加载与热修复 / 插件化原理
- 进程间通信方式对比
19 Binder 与 IPC 深入
- Binder 通信模型、驱动、ServiceManager 与代理对象
- AIDL、Messenger、ContentProvider 等 IPC 方式对比
- 大数据传输、死亡监听、线程池与安全校验边界
20 多线程并发专题
- Java/Kotlin 并发原语、线程池、锁与协程调度对比
- 共享状态、可见性、竞态条件与死锁排查方法
- Android 主线程约束、后台任务调度与取消传播
21 性能优化
- 启动优化(冷 / 热启动、Splash、延迟初始化)
- 内存泄漏(常见场景、LeakCanary 原理)、内存抖动
- 卡顿与掉帧、Choreographer、ANR 原理与定位
- 包体积优化(R8/ProGuard、资源、so)
- 布局优化、工具(Profiler / Perfetto / Systrace)
22 启动优化专项
- 冷启动 / 温启动 / 热启动指标与阶段拆解
- Application 初始化治理、懒加载与异步预热边界
- SplashScreen、Baseline Profile、启动链路监控与回归验证
23 内存优化与泄漏排查
- Android 内存模型、Java 堆 / Native 堆 / 图形内存差异
- 常见泄漏场景与 LeakCanary / MAT 分析路径
- 内存抖动、Bitmap、缓存上限与线上告警指标
24 ANR 与卡顿排查
- ANR 类型、触发阈值、traces 与主线程阻塞定位
- Choreographer、VSync、掉帧指标与 Perfetto 分析
- 锁竞争、IO、Binder 调用、布局过深等排查路径
25 性能工具专题
- Android Studio Profiler、Perfetto、Systrace 的适用场景
- Macrobenchmark、Baseline Profile 与启动/滚动性能验证
- 线上性能指标、采样策略、问题复现与闭环治理
26 APM 与线上监控
- 崩溃监控、错误堆栈聚合与分发
- 性能指标采集:FPS、启动时间、网络耗时
- 线上治理体系与告警策略
27 存储体系与 Scoped Storage
- 内部 / 外部 / App 专属目录与 MediaStore 使用场景
- Scoped Storage 迁移路径、兼容开关与权限边界
- 大文件、缓存、数据库、日志文件的存储治理方案
28 网络协议
- HTTP / HTTPS / HTTP2 / QUIC 原理与握手流程
- TCP vs UDP、三次握手、滑动窗口与拥塞控制
- DNS 劫持、证书校验与网络安全防护
29 网络排障专项
- DNS、TCP/TLS、HTTP/2、QUIC 等链路问题定位
- OkHttp 日志、抓包、证书、代理与弱网复现方法
- 超时、重试、连接池、缓存、网关错误的排查流程
30 数据库进阶
- SQLite 索引、事务、WAL、锁与查询优化原则
- Room 迁移、缓存一致性、分页与离线数据同步
- 数据库排障:慢查询、损坏恢复、并发写入与监控
31 Gradle 与工程化
- Gradle 生命周期、Task Graph、增量构建与缓存机制
- 插件开发、Transform API、依赖管理技巧
- 项目工程化最佳实践
32 Gradle 构建性能专题
- Configuration Cache、Build Cache、并行构建适用条件
- 构建耗时定位、插件治理与 CI 构建优化策略
33 CI/CD 与发布体系
- CI 流水线阶段:检查、测试、构建、签名、发布
- 灰度发布、渠道包、回滚与版本门禁设计
- 自动化质量门禁、制品管理与敏感信息保护
34 隐私合规与权限治理
- 权限申请时机、最小化原则与用户拒绝后的降级体验
- 隐私政策、数据采集清单、SDK 合规审计流程
- 敏感信息脱敏、加密、日志治理与跨境/第三方共享风险
35 登录鉴权与账号体系
- 登录态、Token、Refresh Token 与会话续期机制
- OAuth2 / 单点登录 / 设备绑定的核心流程与风险点
- 账号安全、风控拦截、退出登录与多端一致性处理
36 支付订单与状态机
- 订单状态流转、幂等、防重放与超时关闭机制
- 支付渠道回调、客户端轮询、服务端对账协作
- 异常订单、补偿任务、退款与状态机设计表达
37 推送 / 长连接 / 保活
- 三方推送厂商集成与 FCM、保活策略
- 长连接协议、心跳设计与断线重连机制
- 消息送达率优化与推送链路监控
38 埋点与数据采集 SDK
- 埋点模型、事件属性、会话、用户标识与采样策略
- 数据缓存、批量上报、重试、压缩与弱网治理
- 隐私合规、SDK 性能开销与线上质量监控
39 主流第三方库
- OkHttp(拦截器链、连接池、缓存)
- Retrofit(动态代理、协程适配)
- Glide / Coil(三级缓存、生命周期绑定)
- Gson / Moshi / kotlinx.serialization
- EventBus / 依赖注入框架对比
40 Android 安全与逆向
- APK 结构、反编译、脱壳与签名校验原理
- 常用逆向工具链、静态/动态分析、Frida 挂钩
- 安全编码实践与加固保护方案
41 移动安全防护体系
- 应用加固、反调试、完整性校验与风险分层思路
- 数据加密、密钥管理、通信安全与本地存储防护
- 设备指纹、风控 SDK、防刷防薅羊毛的应用岗表达
42 NDK 与 JNI ☆
- JNI 数据类型映射、签名规则
- 局部 / 全局 / 弱全局引用、引用表溢出
- JNIEnv vs JavaVM、线程 AttachCurrentThread
- 静态注册 vs 动态注册 RegisterNatives
- native crash 捕获(signal / breakpad)
- CMake / ABI / so 加载与裁剪、现代 C++(RAII / 智能指针)
43 NDK Native 调试与 Crash 定位
- tombstone、addr2line、符号表、so 映射与崩溃还原
- lldb / ndk-stack / breakpad 等 Native 调试工具链
- JNI 边界、线程、信号处理与线上 Native Crash 归因
44 iOS 基础速览(辅)
- Swift 基础、可选值、ARC 内存管理
- UIViewController 生命周期、UIKit vs SwiftUI
- GCD、与 Android 概念对照
45 Kotlin Multiplatform
- KMP 架构模型、expect/actual 关键字与共享策略
- 跨端业务逻辑复用、依赖管理与构建流程
- KMP 在移动端的落地场景与优劣分析
46 跨端技术对比
- Flutter、React Native、KMP、WebView Hybrid 的架构差异
- 性能、研发效率、生态、包体积与团队成本取舍
- 跨端落地中的平台能力、调试、发布与降级策略
47 WebView 与 Hybrid
- WebView 生命周期、缓存、进程、性能与内存治理
- JSBridge 通信模型、线程切换与安全白名单校验
- Hybrid 页面加载优化、异常监控与降级兜底
48 插件化 / 热修复 / 动态化
- 插件化类加载、资源加载、组件代理基本原理
- 热修复方案对比、兼容风险与发布安全边界
- 动态化收益、性能成本、合规风险与降级策略
49 音视频 / Media3 / ExoPlayer
- 编解码、渲染流程与 Media3/ExoPlayer 核心架构
- 预加载、缓存、倍速、软硬解切换与性能监控
- 业务场景下的播放优化、异常处理与功能定制
50 LeetCode Hot 100 算法清单
- 数组 / 哈希表 / 链表 / 栈与队列常用算法
- 树 / 图 / 递归与回溯、动态规划、贪心策略
- 二分搜索、滑动窗口、位运算、并查集
51 算法补充专题
- 排序算法对比、复杂数据结构原理
- 深度优先搜索 DFS / 广度优先搜索 BFS 进阶
- 常见大厂面试题复现与思维模型
52 海量数据处理
- 分治、MapReduce 思想与海量数据过滤/排序
- 布隆过滤器、BitMap、Trie 树适用场景
- Top K 问题、外排序、内存受限下的算法方案
53 Android 业务算法场景
- LRU、滑动窗口、优先队列等算法在业务中的应用
- 推荐、搜索、去重、限流、风控规则的算法化表达
- 复杂度分析、边界条件与工程落地取舍说明
54 操作系统与数据库基础
- 进程 / 线程 / 调度 / 内存管理与 Android 运行时关系
- 数据库索引、事务、ACID、范式与规范化
- 文件系统、锁、信号、系统调用在移动端的应用
55 操作系统进阶
- 虚拟内存、mmap、文件 IO、Page Cache 与性能影响
- 操作系统内核机制、同步原语与 Android 底层关系
56 设计模式与 Android 源码应用
- 创建型、结构型、行为型模式在 Android 源码中的体现
- 观察者、工厂、适配器、代理等高频模式的实践
- 设计原则 SOLID、解耦与可扩展性评估
57 系统设计场景题
- 即时通信、Feed、推送、离线缓存等移动场景设计框架
- 客户端架构、数据同步、弱网容错与服务端协作边界
- 容量估算、性能指标、监控告警与灰度降级方案
58 移动端系统设计题库
- 核心业务场景的系统化表达、架构图绘制
- 应对三高(高并发/高可用/高性能)的客户端方案
59 项目经验与软技能
- 项目价值、技术难点、个人贡献与业务闭环表达
- 团队沟通、冲突处理、技术视野与职业规划
60 项目复盘专题
- STAR / 背景目标行动结果结构化复盘项目
- 指标提升、故障处理、协作冲突与技术取舍表达
- 失败经验、重做方案、个人贡献边界与证据准备
61 简历追问防御清单
- 简历每个技术点准备原理、实践、指标与追问答案
- 区分亲自负责、参与协作、学习了解的边界表述
- 针对夸大风险、数据真实性、项目细节进行反问演练
62 Vibe Coding
- AI 辅助下的快速原型、实验性开发流程
- 与 AI 协作的编码风格、意图表达与反馈循环
63 Harness Engineering
- AI 辅助开发中的自动化验证、反馈闭环设计
- 为 AI 构建上下文、工具链集成与质量门禁
64 AI Coding 工程化进阶
- Context Engineering、任务拆解与 AI 代码审查闭环
- MCP、工具调用、自动化验证与可追溯开发流程
- AI 生成代码的风险:幻觉、越权修改、测试缺口与治理