Android 工程师面试准备指南
引言
在准备技术面试时,简历的撰写至关重要。建议优先通过内推渠道投递简历,以提高效率。当然,也可以通过主流招聘平台了解市场动态。在简历中,项目经历和工作内容需要详细且准确。不仅要说明做过什么(广度),更要阐述对原理的理解和达到的深度。具体的描述应根据岗位匹配度进行调整。
面试技巧同样需要刻意练习。可以通过参加多家同类型公司的面试来积累经验,并在每次面试后复盘不足。面试过程中应保持礼貌和专业,良好的谈吐举止能留下积极的印象。讲述问题时语速适中,展现沉稳自信的状态,同时预留应答时间。平时应熟悉常见类名、方法名的正确发音,这有助于提升沟通体验。此外,保持良好心态至关重要,面对突发状况需沉着应对。
一、掌握基础知识
官方文档是最好的教材,源码阅读必不可少。以下是面试中高频考察的知识点:
Java 基础与集合
- HashMap vs Hashtable:HashMap 支持 null Key 和 null Value,Hashtable 不允许。HashMap 将 null 的 hashCode 值定为 0,存放在第 0 个 bucket。HashMap 非线程安全,可通过
Collections.synchronizedMap实现线程安全;Hashtable 是线程安全的。 - 扩容机制:HashMap 默认长度 16,扩容为原长度的 2 倍;Hashtable 默认长度 11,扩容为 2n+1。
- 继承体系:HashMap 继承 AbstractMap;Hashtable 继承 Dictionary。
- 版本差异:需了解不同 JDK 版本下 HashMap 的数据结构变化(如 JDK 8 引入红黑树)。
JVM 垃圾回收机制
理解 JVM 内存划分——方法区、堆内存、虚拟机栈(线程私有)、本地方法栈(线程私有)、程序计数器(线程私有)。理解回收算法:标记清除、可达性分析、标记 - 整理、复制算法、分代算法及其优缺点。
- 类加载机制:了解双亲委派模型。
- 并发编程:线程池、锁机制、ThreadLocal 等。
- 引用类型:弱引用、软引用的区别及应用场景。
- 基本类型:int 与 Integer 的区别,值传递与引用传递问题。
- 手写模式:生产者/消费者模式。
Android 启动模式
需要了解 Activity 栈和 taskAffinity 的配置:
- Standard:系统默认,每次启动创建新实例。
- SingleTop:栈顶复用,若处于栈顶则调用 onNewIntent,适合推送详情页。
- SingleTask:栈内复用,存在则移除其上的所有 Activity,使其位于栈顶,常用于 App 首页。
- SingleInstance:独占一个任务栈,适用于闹钟、视频通话等独立界面。
注意:SingleTask 和 SingleInstance 会对 onActivityResult 回调产生影响。需深入了解 Intent 的 Action、Data、Category 用法及常用 Flag(如 FLAG_ACTIVITY_SINGLE_TOP, NEW_TASK, CLEAR_TOP)。
二、View 的绘制流程
ViewRoot 执行流程如下:
performTraversal() -> performMeasure() -> performLayout() -> performDraw()
-> View/ViewGroup measure() -> onMeasure()
-> View/ViewGroup () -> ()
-> View/ViewGroup () -> ()


