第 2 章 · 高频面试问题与回答框架
大厂面试中,70% 的问题都能用已知框架应对。本章核心:将常见问题分类,并掌握 STAR 与「问题‑方案‑收益」两种答题结构,同时理解不同公司的考察侧重点。
| 问题类别 | 典型问题 | 考察点 |
|---|---|---|
| 基础能力 | Category、Runtime、Runloop 原理 | 语言底层理解 |
| 项目经验 | 「你在项目中遇到的最大挑战?」 | 问题解决能力 |
| 系统设计 | 「如何设计一个 IM SDK?」 | 架构抽象与模块化 |
| 性能优化 | 「列表滚动卡顿怎么排查?」 | 分析工具与优化思路 |
| 架构能力 | 「MVVM vs VIPER 你怎么选?」 | 架构权衡与迁移经验 |
| 业务理解 | 「你觉得最近版本最失败的功能是什么?」 | 产品思维 & 复盘能力 |
| 维度 | STAR 结构 | 问题-方案-收益结构 |
|---|---|---|
| 适用场景 | 项目经验、挑战类问题 | 系统设计、方案对比类问题 |
| 核心亮点 | 因果关系清晰,体现个人角色 | 逻辑链条紧凑,突出量化价值 |
| 常见败笔 | 只讲背景,没讲具体行动 | 方案描述过细,收益模糊 |
| 公司侧重点 | 字节/美团:强调行动与结果;腾讯/阿里:关注情境与痛点 | 百度/华为:看重方案的理论依据;滴滴/快手:偏重收益与落地 |
Q1:「请描述一个你在项目中解决过的技术难题。」
回答框架:STAR → 先定位 S+T(场景 + 目标),再重点讲 A(行动),最后以 R(结果)收尾,结果必须带数据或观测指标。
示例回答:
项目初期首页 Feed 滑动掉帧严重(S)。我通过 Instruments 发现主线程频繁重排,导致 FPS 跌破 40(T)。我引入异步布局 + 预计算高度,将计算移到子线程,最终 FPS 稳定在 55 以上,耗时降低 70%(A+R)。
项目初期首页 Feed 滑动掉帧严重(S)。我通过 Instruments 发现主线程频繁重排,导致 FPS 跌破 40(T)。我引入异步布局 + 预计算高度,将计算移到子线程,最终 FPS 稳定在 55 以上,耗时降低 70%(A+R)。
可能追问:你怎么确定是主线程重排?预计算高度解决了全部问题吗?如果遇到异步布局后数据源变化怎么处理?
⚠️ 避坑:不要只说“我优化了性能”而无数据;不要遗漏「为什么只有你能解决」的个人差异点。
Q2:「如果让你重新设计 App 的网络层,你会怎么做?」
回答框架:问题‑方案‑收益 → 先点出现网络层痛点(耦合、重试缺失),再给出分层方案(请求管道 + 拦截器),最后说明收益(可测试、可监控)。
示例回答:
现有网络层与业务代码高度耦合,无法统一统计流量(P)。我会拆成三层:底层只做 HTTP 请求,中间层处理重试/缓存/签名,上层提供业务接口(S)。重构后流量监控接入成本降低 80%,A/B 测试效率提升 60%(B)。
现有网络层与业务代码高度耦合,无法统一统计流量(P)。我会拆成三层:底层只做 HTTP 请求,中间层处理重试/缓存/签名,上层提供业务接口(S)。重构后流量监控接入成本降低 80%,A/B 测试效率提升 60%(B)。
可能追问:重试策略如何设计?如何处理取消和并发限制?缓存一致性怎么保证?
⚠️ 避坑:切忌只画一张大图而不讲细节;面试官期望听到你对「边界」的思考——哪些该抽离、哪些该保留。
Q3:「你如何看待 MVVM 与 VIPER 的差异?你们项目最终为什么选了 MVVM?」
回答框架:对比式 STAR/问题‑方案‑收益 → 先对比两者核心差异(数据流 vs 分层粒度),再结合项目情境(团队规模、迭代节奏)说明选择理由,最后给出收益。
示例回答:
我们团队 8 人,VIPER 文件膨胀严重,沟通成本高(P)。而 MVVM 配合 ReactiveCocoa 可减少 ViewController 代码量 40%,且单元测试覆盖率提升至 85%(S)。最终选择 MVVM 换取了更快的迭代速度(B)。
我们团队 8 人,VIPER 文件膨胀严重,沟通成本高(P)。而 MVVM 配合 ReactiveCocoa 可减少 ViewController 代码量 40%,且单元测试覆盖率提升至 85%(S)。最终选择 MVVM 换取了更快的迭代速度(B)。
可能追问:MVVM 带来的 ViewModel 复用问题怎么解决?如果项目后期需要 VIPER 迁移,你会怎么规划?
⚠️ 避坑:不要贬低任一架构;重点在「当时场景下的取舍」而非完美方案。准备一个因架构选择导致的「具体翻车故事」会加分。
💡 公司侧重点速查:
- 字节跳动 / 美团:更看重 STAR 中的 Action 细节与 Result 数据,要求量化到百分比或具体指标。
- 腾讯 / 阿里:偏爱「问题‑方案‑收益」结构,强调痛点的真实性以及方案的理论依据。
- 百度 / 华为:对方案的技术深度要求高,需要解释“为什么这样设计而不是其他方式”。
- 滴滴 / 快手:偏重落地收益,希望听到异常处理、退化方案等工程细节。