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 应用开发面试学习清单

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

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

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

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


如何使用这套资料

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

复习路线(按优先级)

阶段重点对应文档
第一优先(短板,必攻)协程 / Flow、View 体系、Compose、Jetpack、架构、测试体系、并发、深度扩展02, 05, 06, 07, 08, 24, 33-39, 42, 49, 51
第二优先(高频,巩固)Kotlin 核心及进阶、Java/JVM、四大组件、系统原理、性能、RxJava01, 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 简历追问防御清单

  • 简历每个技术点准备原理、实践、指标与追问答案
  • 区分亲自负责、参与协作、学习了解的边界表述
  • 针对夸大风险、数据真实性、项目细节进行反问演练