移动端开发这几年变化不小。我最早做 Android 的时候,市场上要求的是“能独立开发 App”,会搭界面、会调接口基本就能找到工作;现在再看,Java、Kotlin、Swift、OC、React Native、Flutter、Web 端能力全部被揉进了同一条岗位描述里。很多准备面试的朋友问我:移动端到底还要不要深耕?我的答案一直很明确——能同时吃透 Android、iOS、React Native 和 Web 这条技术栈的人,价值不仅没有缩水,反而比前几年更稀缺。
这篇文章不是面试题答案汇总,更像是我过去几年在 Android、iOS、React Native 和 Web 项目里踩坑、复盘、面试别人也被别人面试之后,整理出来的一套系统化备考和成长框架。适合正在准备移动端岗位面试的同学,也适合入行一两年想梳理自己能力边界的人。内容尽量直接,把面试官关心的底层逻辑讲透,把容易忽略的工程细节翻出来。
1. 移动端工程师的能力坐标系:到底考什么
1.1 工程能力:不是“会写”,而是“能交付”
工程能力这个说法听起来很虚,但面试官一眼就能看出差距。初级候选人喜欢说“我负责 XX 模块开发”,高级候选人会聊“我们如何定代码规范、如何压启动耗时、如何设计降级方案”。两者之间差了一个关键词:交付闭环。
一个功能从需求拆解、技术方案设计、代码编写、自测、灰度发布、线上监控到异常回滚,你能不能完整走下来?这是面试里问到“你在项目里怎么排查线上问题”“如果重新设计这个模块你会怎么改”时,真正想考察的东西。
我习惯把工程能力拆成五个维度来做自测:需求理解能力、方案设计能力、代码实现质量、问题定位和自测效率、协作与交付意识。五个维度里,前三个决定你能不能把事做对,后两个决定你能不能把事做得持久。面试官问项目时,我会建议你主动把回答框架往这五个维度上靠。比如讲一个列表流畅度优化,不要只说我加了布局复用,而是往“问题怎么量化、方案怎么对比、上线后怎么验证、后续如何避免回归”整套去讲。这就是同一个项目,普通阐述和高质量阐述的区别。
1.2 系统与原理:面试深水区到底测什么
原生面试对原理的追问几乎是必然的。Android 喜欢问 Activity 启动流程、Binder 通信、Handler 消息机制、View 绘制流程;iOS 则爱考 ARC 内存管理、Runloop、消息发送机制、Block 循环引用。以前我也背过一轮标准答案就以为足够了,后来当了面试官才发现,这一层考察的目标根本不是标准答案,而是你有没有自己的理解路径。
从现象到原理、从 API 到源码,其实是在验证你面对未知问题的推演能力。API 是别人封装好的,看一眼文档谁都会用;原理决定了当出现一个新问题的时候,你脑子里的排查路线是清晰的还是盲目的。
学习原理我强烈建议用问题驱动的方式,而不是拿源码从头啃。比如 Android 的 View 绘制流程,你问自己“为什么自定义 View 里 onMeasure 总是先于 onLayout”“子 View 的点击区域是怎么被命中的”,每个问题都会引出一段源码,你在源码里找到答案,这个知识点才真正变成你的。iOS 的 Runloop 也一样,与其背 Sources、Timers、Observers 三个概念,不如先问“NSTimer 在滚动页面时为什么不准”“主线程卡顿监控怎么实现”,带着实际疑惑去看代码,效率会高很多。
1.3 跨端与全局视野:为什么现在没人只招纯原生
看近几年的岗位 JD 能明显感受到,纯原生岗位变少,混合技术栈岗位越来越多。很多业务包都变成了 Andr
