Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Android 应用开发面试学习清单

共 13 个主题分组、64 篇内容

面向 中级(3-5 年)Android 应用开发岗 的系统复习资料。

你的背景画像:设备指纹 / 风控 SDK 开发者,强项 C/C++ 与 NDK/JNI、系统底层、逆向视角; 短板在 UI 层(View / Compose)、Kotlin 协程 / Flow、Jetpack 全家桶、应用架构。 副技能 iOS 基础。

本资料策略:重点补短板(★),把强项包装成差异化亮点(☆),iOS 作为跨端谈资(辅)。


如何使用这套资料

  1. 先读 01-面试路线与自我定位.md,想清楚怎么把“风控 SDK 背景“讲成应用岗的优势。
  2. 按下面“复习路线“的优先级顺序学,先攻短板(协程 → UI → Jetpack → 架构 → 测试体系)。
  3. 每篇结构统一:知识点讲解 → 高频面试题 + 参考答案要点 → 易错点 / 追问
  4. 学完一个知识点,回到本页的“自测清单“打勾 - [x],追踪进度。

复习路线(按优先级)

阶段重点对应文档
第一优先(短板,必攻)协程 / Flow、View 体系、Compose、Jetpack、架构、测试体系、并发、深度扩展04, 08, 09, 10, 13, 14, 16, 20, 52
第二优先(高频,巩固)Kotlin 核心及进阶、Java/JVM、四大组件、系统原理、性能、RxJava02, 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 生成代码的风险:幻觉、越权修改、测试缺口与治理