Android 实习面试复习资料(基于社招资料调整)
更新: 5/15/2026 字数: 0 字 时长: 0 分钟
文档总览
这是一套由 Android 社招面试资料调整而来的实习面试复习资料,涵盖 13 个核心方向,共 42 篇文档。原资料保留了较完整的底层原理和工程实践内容,实习准备时不需要平均用力,应该把重点放在 基础概念、常见 API、项目表达、编码能力和基本排查思路 上。
多数方向包含知识详解和面试题两类文档:
- 知识详解篇:系统梳理原理与核心概念,包含源码分析和代码示例,帮助建立完整知识体系
- 面试题篇:精选高频面试题,每题包含完整回答、追问及加分点,用于查漏补缺和模拟练习
实习面试更看重“基础是否扎实、是否真的写过代码、遇到问题能否定位”。社招资料中的源码级细节、线上治理、复杂架构设计可以作为加分项,不建议一开始就深挖到每个源码分支。
目录结构
android-interview-complete/
├── 01-java-kotlin-concurrency/ # Java/Kotlin 基础与并发
│ ├── java-collections.md # Java 集合源码分析
│ ├── java-fundamentals.md # 泛型/反射/JVM/GC/类加载
│ ├── java-concurrency.md # JMM/volatile/synchronized/AQS/线程池
│ ├── kotlin-coroutines.md # Kotlin 语法 + 协程原理
│ ├── interview-java.md # Java 基础面试题
│ ├── interview-concurrency.md # 并发面试题
│ └── interview-kotlin.md # Kotlin/协程面试题
├── 02-components-lifecycle-context/ # 四大组件、生命周期与 Context
│ ├── knowledge.md
│ └── interview.md
├── 03-ui-bindraw-touch-recyclerview/ # UI 绘制、事件分发与 RecyclerView
│ ├── knowledge.md
│ └── interview.md
├── 04-jetpack-mvvm-compose/ # Jetpack、MVVM 与 Compose
│ ├── knowledge.md
│ └── interview.md
├── 05-network-cache-storage/ # 网络、缓存与存储
│ ├── knowledge.md
│ └── interview.md
├── 06-performance-stability/ # 性能优化与稳定性
│ ├── knowledge.md
│ └── interview.md
├── 07-system-binder-handler-startup/ # 系统原理、Binder、Handler 与启动流程
│ ├── knowledge.md
│ └── interview.md
├── 08-architecture-gradle-engineering/# 架构设计、Gradle 与工程化
│ ├── knowledge.md
│ └── interview.md
├── 09-cross-platform-flutter-kmm/ # 跨平台方案(Flutter/KMM)
│ ├── knowledge.md
│ └── interview.md
├── 10-system-design/ # 系统设计题
│ ├── knowledge.md
│ └── interview.md
├── 11-project-depth-and-expression/ # 项目深度与面试表达
│ ├── knowledge.md
│ └── interview.md
├── 12-llm-ai-coding/ # 大模型 LLM 与 AI Coding
│ ├── knowledge.md # 概览与核心概念
│ ├── llm-fundamentals.md # Transformer/训练/推理原理
│ ├── ai-coding-deep.md # AI Coding 原理详解
│ └── interview.md # 面试题
└── 13-algorithm/ # 算法与数据结构
└── algorithm.md # 高频算法题型与刷题策略复习路线建议
实习准备总原则
- 先能讲清楚,再追源码:Activity 生命周期、事件分发、RecyclerView 复用、线程切换、网络请求这些内容,要能用自己的话讲出流程和使用场景。
- 先做项目闭环,再补底层深度:至少准备 1 个 Android 项目,能说清楚页面结构、数据流、网络/本地存储、遇到的问题和解决过程。
- 算法每天持续刷:实习面试常见 1 道算法或手撕代码,优先数组、字符串、链表、栈队列、二叉树、滑动窗口和简单 DP。
- 社招深度降权处理:Binder、AMS/WMS、复杂性能治理、组件化架构、系统设计题主要作为加分项,能讲主线和应用场景即可。
第一阶段:实习必考基础(2 周)
这些是实习 Android 面试最常问的内容,优先级最高:
| 方向 | 实习重点 |
|---|---|
| 01 - Java/Kotlin/并发 | 面向对象、集合、泛型、异常、Lambda、Kotlin 空安全/扩展函数/数据类、线程创建、主线程与子线程切换 |
| 02 - 四大组件/生命周期 | Activity/Fragment 生命周期、启动模式、Intent、Context、Service/Broadcast/ContentProvider 基本用途 |
| 03 - UI 绘制/事件分发/RecyclerView | XML 布局、View 事件分发主链路、RecyclerView Adapter/ViewHolder、局部刷新、列表卡顿基础原因 |
| 05 - 网络/缓存/存储 | HTTP 基础、GET/POST、状态码、JSON 解析、Retrofit/OkHttp 基本用法、SharedPreferences/DataStore/Room 使用场景 |
| 07 - Handler/线程通信 | Handler/Looper/MessageQueue 主流程、为什么不能在子线程更新 UI、runOnUiThread/view.post 的区别 |
| 13 - 算法 | 数组、字符串、链表、栈队列、哈希表、二叉树、双指针、滑动窗口、基础动态规划 |
第二阶段:项目能力与工程实践(1-2 周)
用于证明“写过 Android 项目,并能解释自己的代码为什么这么设计”:
| 方向 | 实习重点 |
|---|---|
| 04 - Jetpack/MVVM/Compose | ViewModel、LiveData/StateFlow、Lifecycle、Room、Navigation、MVVM 基本分层;Compose 了解状态驱动 UI |
| 06 - 性能优化/稳定性 | 内存泄漏常见原因、ANR 基本概念、图片加载优化、主线程耗时、简单 Crash 定位 |
| 08 - 架构设计/Gradle/工程化 | Gradle 依赖配置、build.gradle 常见字段、Debug/Release 区别、Git 基本协作、简单模块划分 |
| 11 - 项目深度/面试表达 | 项目背景、职责、技术选型、难点、踩坑、结果,用 STAR 法则组织表达 |
第三阶段:加分项与社招资料选读(1 周)
有余力时再补,面试中能体现学习深度,但不要挤占基础和项目时间:
| 方向 | 实习加分点 |
|---|---|
| 07 - 系统原理/Binder/启动流程 | Binder 一次通信的主流程、Zygote 到 ActivityThread 的启动主线、AMS/WMS 的职责边界 |
| 09 - 跨平台方案 | Flutter/KMM 基本概念、适用场景、和原生 Android 的区别 |
| 10 - 系统设计题 | 简化版图片加载器、简单缓存策略、Feed 列表分页加载和下拉刷新 |
| 12 - 大模型 LLM/AI Coding | 用 AI 辅助查资料、生成样板代码、解释报错,但要能校验输出正确性 |
实习面试重点清单
| 优先级 | 必须准备到的程度 |
|---|---|
| P0 必会 | Java/Kotlin 基础、Activity/Fragment 生命周期、RecyclerView、网络请求、JSON、线程与 Handler、项目介绍、常见算法 |
| P1 高频 | MVVM、ViewModel、LiveData/Flow、Room、事件分发、图片加载、内存泄漏、ANR、启动模式、Context |
| P2 加分 | Binder、App 启动流程、Compose、Gradle 构建优化、组件化、Flutter/KMM、系统设计、AI Coding |
实习面经常见问法
- 基础概念型:HashMap 怎么存数据?ArrayList 和 LinkedList 区别?Kotlin 的
?.和!!区别? - Android 使用型:Activity A 跳 B 生命周期怎么走?Fragment 为什么要用
viewLifecycleOwner?RecyclerView 为什么要用 ViewHolder? - 场景排查型:页面卡顿怎么办?图片太多导致 OOM 怎么办?网络请求失败怎么排查?点击事件不响应可能是什么原因?
- 项目追问型:你的项目用了哪些技术?为什么用 MVVM?网络层怎么封装?数据怎么缓存?遇到过最难的问题是什么?
- 编码算法型:反转链表、有效括号、两数之和、最长无重复子串、二叉树遍历、LRU 简化实现。
各方向简要说明
| # | 方向 | knowledge.md | interview.md |
|---|---|---|---|
| 01 | Java/Kotlin/并发 | JVM、泛型、协程、锁机制等原理详解 | 高频基础题与编码题 |
| 02 | 四大组件/生命周期 | 组件工作机制与系统交互原理 | 生命周期场景题与陷阱题 |
| 03 | UI/绘制/事件/RV | 渲染管线、触摸事件、列表性能原理 | View 相关经典面试题 |
| 04 | Jetpack/MVVM/Compose | 架构组件源码分析与 Compose 机制 | 架构选型与实践问题 |
| 05 | 网络/缓存/存储 | 网络协议栈与本地存储方案原理 | 网络优化与缓存策略题 |
| 06 | 性能优化/稳定性 | 各类性能问题的分析方法与优化手段 | 线上问题排查实战题 |
| 07 | 系统原理/Binder/Handler | Framework 层核心机制深度剖析 | 系统原理高频问答 |
| 08 | 架构/Gradle/工程化 | 大型项目架构演进与构建体系 | 架构设计与工程实践题 |
| 09 | 跨平台方案 | Flutter/KMM 技术原理与选型分析 | 跨平台实践与对比题 |
| 10 | 系统设计题 | 常见系统设计题的思路与方案 | 限时设计题模拟练习 |
| 11 | 项目深度/面试表达 | 如何提炼项目亮点与表达技巧 | 模拟面试问答与复盘 |
| 12 | 大模型 LLM/AI Coding | Transformer/训练/推理/Agent/RAG 原理 | LLM 与 AI Coding 面试题 |
| 13 | 算法与数据结构 | 高频题型、复杂度和刷题路径 | 手撕代码与解题表达 |
使用建议
- 先基础,后深度:每个方向先掌握“是什么、怎么用、常见坑”,再看源码和复杂场景。
- 先项目,后背题:实习面试非常依赖项目追问,建议把自己的项目按“背景-职责-技术点-问题-结果”写成提纲。
- 先表达,后堆概念:不要只背标准答案,要能结合项目说出“我在哪里用过、为什么这么用、出问题怎么查”。
- 按优先级推进:P0 内容必须能稳定回答,P1 内容能讲常见场景,P2 内容作为加分项准备主线即可。
- 保留社招资料的价值:原文中更深入的源码、架构和线上治理内容不要删,后续校招/社招仍然有用;当前实习准备只需要选择性阅读。
