Android 面试核心知识点总结
前言
在技术面试中,单纯记忆知识点往往难以应对深入追问。建立系统的知识体系,理解底层原理,并结合大厂的实际考察思路,是顺利通过面试的关键。本文整理了 Java 基础、Android Framework、性能优化及架构设计等核心领域,涵盖阿里、腾讯、美团、字节等一线大厂的典型面试题解析。
知识体系概览
本文覆盖的核心知识点包括:
- 语言基础:泛型原理、反射原理、JVM 内存模型、线程池原理、注解原理、序列化机制。
- Android 核心:Activity 生命周期与任务栈、启动模式、View 源码与绘制流程、Fragment 内核、Service 原理。
- 架构与优化:数据结构与排序算法、设计模式应用、APP 性能优化(用户体验、适配、代码调优)。
- 高级技术:热修复、热升级、Hook 技术、IOC 架构设计、NDK(C/C++/JNI/Linux)。
- 现代开发:MVC/MVP/MVVM 模式对比、Jetpack 组件库、Flutter 与 Kotlin 特性。
大厂面试真题解析
一、Java 基础与 JVM
Q1: 一个对象的创建过程是怎样的?
A: 对象创建主要经历以下步骤:
- 类加载检查:虚拟机遇到
new指令时,首先检查常量池中该符号引用是否指向一个已加载的类。若未加载,则执行加载、验证、准备、解析、初始化过程。 - 内存分配:在堆上为对象分配内存。内存分配方式取决于垃圾收集器的实现,主要有指针碰撞(规整堆)和空闲列表(非规整堆)两种策略。
- 初始化零值:将分配的内存空间初始化为零值(不包括对象头)。
- 设置对象头:设置对象头信息,包括哈希码、GC 分代年龄、类型指纹、锁状态标志等。
- 实例化字段:执行构造函数中的逻辑,对成员变量进行赋值。
- 关联引用:将对象地址赋给引用变量。
Q2: 解释一下 Java 内存模型(JMM)
A: Java 内存模型定义了程序中各个变量(如实例字段、静态字段、数组元素)的访问规则,屏蔽了各种硬件和操作系统的内存访问差异。核心概念包括:
- 主内存与工作内存:所有变量存储在主内存,每个线程有自己的工作内存,操作变量需先拷贝到工作内存。
- 原子性:基本数据类型读写具有原子性,但 long/double 在某些平台可能非原子。
- 可见性:通过 volatile 关键字保证修改立即刷新到主内存,其他线程立即可见。
- 有序性:禁止指令重排序,通过 happens-before 原则保证执行顺序。
Q3: List、Set、Map、Queue 的区别与实现
A:
- List:有序集合,可重复。实现有 ArrayList(动态数组,查询快)、LinkedList(双向链表,增删快)、Vector(线程安全)。
- Set:无序且不可重复。实现有 HashSet(基于 HashMap)、LinkedHashSet(保持插入顺序)、TreeSet(红黑树,可排序)。
- Map:键值对映射。实现有 HashMap(哈希表,非线程安全)、Hashtable(线程安全,效率低)、ConcurrentHashMap(高并发)、TreeMap(按键排序)。
- Queue:队列结构。实现有 PriorityQueue(优先级队列)、ArrayDeque(双端队列)。


