Android 开发工程师面试核心知识点与准备指南
前言
Android 开发岗位的技术面试通常涵盖 Java/Kotlin 基础、Android 系统机制、性能优化、架构设计等多个维度。本文梳理了高频面试题,帮助开发者系统复习,提升面试通过率。
第一章 Java 方面
(一)Java 基础部分
本部分考察语言根基,重点在于对关键字、内存模型及对象生命周期的理解。
- 抽象类与接口的区别:抽象类用于代码复用和状态共享,接口用于定义行为规范和解耦。一个类只能继承一个抽象类,但可实现多个接口。
- final, static, synchronized:
final:修饰类不可继承,方法不可重写,变量不可变(常量)。static:属于类而非实例,内存中只有一份,可通过类名直接访问。synchronized:用于线程同步,保证临界区代码的原子性。
- String, StringBuffer, StringBuilder:
String:不可变字符序列,安全但频繁修改效率低。StringBuffer:可变,线程安全,方法加锁,效率较低。StringBuilder:可变,非线程安全,单线程下效率最高。
- equals 与 ==:
==比较引用地址,equals默认比较地址,Object 子类常重写为比较内容。 - 深拷贝与浅拷贝:浅拷贝复制基本类型和引用地址;深拷贝复制对象本身及其引用的对象。
- Error 与 Exception:Error 是 JVM 无法处理的严重错误(如 OOM),Exception 是程序可处理的异常。
- 反射机制:运行时动态获取类信息和调用方法,常用于框架开发(如依赖注入)。
- IO 流:BIO 阻塞 IO,NIO 非阻塞 IO(基于 Channel 和 Buffer),AIO 异步 IO。
- 泛型类型擦除:编译后泛型信息被擦除为原始类型,存在局限性(如无法判断泛型具体类型)。
- String 不可变性:保证字符串常量池的安全性、哈希缓存及多线程安全。
(二)Java 集合
重点掌握 HashMap 源码及并发容器原理。
- List, Set, Map:List 有序可重复,Set 无序不重复,Map 键值对存储。
- ArrayList vs LinkedList:ArrayList 基于数组,随机访问快;LinkedList 基于链表,插入删除快。
- HashMap vs HashTable:HashMap 非线程安全,允许 null 键值;HashTable 线程安全,不允许 null。
- HashMap 扩容机制:初始容量 16,负载因子 0.75,超过阈值触发扩容(2 倍)并重新哈希。
- ConcurrentHashMap:JDK1.7 分段锁,JDK1.8 使用 CAS + synchronized 保证线程安全且性能更高。
(三)Java 多线程
考察并发编程能力,需熟悉 JUC 包及底层原理。
- 创建方式:继承 Thread,实现 Runnable,实现 Callable,线程池。
- 线程状态:NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED。
- 死锁避免:破坏循环等待条件,按顺序加锁,使用超时机制。


