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