Android 面试核心知识点汇总
本文整理了 Android 开发岗位面试中常见的 32 个核心模块,涵盖 Java 基础、集合、多线程、虚拟机、Android 组件、Framework、算法及音视频等领域。旨在帮助开发者系统复习关键技术点。
Java 方面
Java 基础部分
抽象类与接口的区别? 抽象类可以有构造方法、成员变量和方法实现;接口只能有常量(public static final)和抽象方法(Java 8 后可有 default/static 方法)。抽象类用于代码复用,接口用于定义规范。
分别讲讲 final,static,synchronized
final:修饰类不可继承,修饰方法不可重写,修饰变量不可变。static:属于类而非实例,内存中只有一份,可通过类名直接访问。synchronized:用于线程同步,保证临界区代码的原子性。
请简述一下 String、StringBuffer 和 StringBuilder 的区别?
String:不可变字符序列,每次修改生成新对象。StringBuffer:可变,线程安全,性能较低。StringBuilder:可变,非线程安全,性能较高。
'equals'与'=='、'hashCode'的区别和使用场景?
==:比较基本类型值或引用地址。equals():默认比较地址,Object 子类常重写比较内容(如 String)。hashCode():哈希码,配合 HashMap 使用。若 equals 相等,hashCode 必须相等。
Java 中深拷贝与浅拷贝的区别?
- 浅拷贝:复制对象本身,内部引用类型指向同一内存地址。
- 深拷贝:递归复制所有层级,完全独立的新对象。
谈谈 Error 和 Exception 的区别?
Error:严重错误,JVM 无法处理(如 OutOfMemory),通常不捕获。Exception:程序可处理的异常,分为受检(Checked)和非受检(Unchecked)。
什么是反射机制?应用场景?
- 运行时动态获取类信息并操作对象。应用:框架设计(Spring)、动态代理、序列化。
谈谈如何重写 equals() 方法?为什么还要重写 hashCode()?
- 重写 equals 需满足自反、对称、传递、一致性、非空性。重写 hashCode 是为了保证在 HashMap/HashSet 中正确存储和检索,避免哈希冲突导致数据丢失。
谈谈你对 Java 泛型中类型擦除的理解,局限性?
- 编译后泛型信息被擦除为原始类型。局限:无法判断具体泛型类型,无法创建泛型数组。
说说你对 Java 注解的理解?
- 元数据,提供额外信息给编译器或运行时。常见:@Override, @Deprecated, @SuppressWarnings。
Java 集合
List, Set, Map 的区别?
- List:有序,可重复,索引访问。
- Set:无序(HashSet),不可重复。
- Map:键值对,Key 唯一。
ArrayList 和 LinkedList 的区别?
- ArrayList:基于数组,随机访问快,增删慢。


