Android 面试核心知识点与真题解析指南
引言
随着技术更新迭代,Android 开发面试对基础知识和框架原理的要求日益提高。本文整理了一系列高频面试题,涵盖 Java、Android 系统、Framework、算法等多个维度,旨在帮助开发者查漏补缺,系统掌握核心技术点。
Java 方面
Java 基础部分
-
抽象类与接口的区别? 抽象类可以有成员变量、构造器、具体方法;接口只能有常量(public static final)和抽象方法(Java 8 后可有 default/static 方法)。一个类可以实现多个接口,但只能继承一个抽象类。接口侧重于行为规范,抽象类侧重于代码复用和模板设计。
-
分别讲讲 final,static,synchronized
final修饰类表示不可继承,修饰方法表示不可重写,修饰变量表示常量。static表示静态成员,属于类而非实例,内存中只有一份。synchronized用于线程同步,保证多线程环境下的数据一致性,可修饰方法或代码块。 -
请简述一下 String、StringBuffer 和 StringBuilder 的区别
String是不可变字符序列,每次修改都会生成新对象。StringBuffer是可变且线程安全的(方法加锁),性能较低。StringBuilder是可变且非线程安全的,性能最高。单线程下推荐用 StringBuilder。 -
'equals'与'=='、'hashCode'的区别和使用场景?
==比较基本类型值或引用地址。equals默认比较地址,Object 子类通常重写比较内容(如 String)。hashCode用于哈希表定位,若 equals 相等则 hashCode 必须相等。重写 equals 时必须同时重写 hashCode。 -
Java 中深拷贝与浅拷贝的区别? 浅拷贝复制对象本身及基本类型字段,引用类型字段仍指向原对象内存地址。深拷贝完全复制对象及其引用的所有对象,新对象与原对象互不影响。
-
谈谈 Error 和 Exception 的区别?
Error是 JVM 严重错误(如 OOM),程序无法处理,通常不捕获。Exception是程序运行异常,可分为受检异常(Checked)和非受检异常(Unchecked),建议根据业务逻辑捕获处理。 -
什么是反射机制?反射机制的应用场景有哪些? 反射允许在运行时动态获取类的信息并操作对象。应用场景包括:框架开发(如 Spring IOC)、动态代理、序列化/反序列化、插件化系统等。
-
谈谈如何重写 equals() 方法?为什么还要重写 hashCode? 重写 equals 需遵循自反性、对称性、传递性等原则,通常使用 Objects.equals 比较字段。重写 hashCode 是为了配合 HashMap/HashSet,确保相同对象哈希值一致,避免哈希冲突导致查找失败。
-
谈谈你对 Java 泛型中类型擦除的理解,并说说其局限性? 编译后泛型类型会被擦除为原始类型(如 List 变为 List)。局限性在于无法在运行时获取泛型具体类型,不能直接 new T(),也无法判断 instanceof 泛型参数。
-
说说你对 Java 注解的理解? 注解提供元数据,编译器或运行时可读取。分为编译期检查(@Override)、运行时处理(@Autowired)。可通过反射 API 获取注解信息。
Java 集合
-
谈谈 List, Set, Map 的区别?
List有序可重复;Set无序不可重复;Map键值对存储,Key 唯一。List 实现有 ArrayList/LinkedList,Set 有 HashSet/TreeSet,Map 有 HashMap/TreeMap。


