性能与体验优化 ✅
覆盖首屏、列表、图片与动画、弱网离线、度量与优化闭环。
首屏优化如何落地?
答案
核心概念:
减小 Bundle/资源体积、并发准备关键数据、骨架与占位、延迟非关键初始化;Hermes 提升启动。
示例说明:
分离懒加载 → 骨架 → 关键数据优先 → 次要延迟
面试官视角:
- 要点清单: 体积/网络/计算
- 加分项: 指标 TTI/FP 量化
- 常见失误: 同步初始化过多
延伸阅读:
- Performance 文档
列表/滚动性能如何优化?
答案
核心概念:
FlatList/SectionList 配置窗口与回收,getItemLayout,避免匿名函数与频繁 setState;大列表虚拟化。
示例说明:
<FlatList windowSize={5} removeClippedSubviews getItemLayout={...} />
面试官视角:
- 要点清单: 窗口化;去抖;避免重渲染
- 加分项: Memo/Key 提升;骨架/占位
- 常见失误: 列表项闭包创建函数
延伸阅读:
- 列表文档
图片与资源加载如何优化?
答案
核心概念:
缓存、渐进、并发控制、CDN 规格;避免原图;预取关键图。
示例说明:
<Image source={{ uri }} defaultSource={placeholder} />
面试官视角:
- 要点清单: 缓存/CDN;并发
- 加分项: 预取与占位
- 常见失误: 大图直出
延伸阅读:
- Image 组件
动画与手势如何保证流畅?
答案
核心概念:
原生驱动(Reanimated/GestureHandler) 代替 JS 驱动;中断与回弹策略;避免主线程阻塞。
示例说明:
// Reanimated worklet(示意)
面试官视角:
- 要点清单: 原生驱动;中断管理
- 加分项: 复杂手势联动
- 常见失误: JS 循环驱动动画
延伸阅读:
- Reanimated/Gesture docs
弱网与离线体验如何设计?
答案
核心概念:
超时/重试/退避、离线缓存、网络状态订阅与提示;幂等与冲突解决。
示例说明:
// NetInfo 监听(示意)
面试官视角:
- 要点清单: 弱网策略;离线提交
- 加分项: 一致性;回放
- 常见失误: 仅失败重试
延伸阅读:
- NetInfo
性能度量与优化闭环如何建立?
答案
核心概念:
关键指标(首屏/掉帧/内存/错误率),采集 → 看板 → 告警 → 灰度 → 回归测试的闭环。
示例说明:
Flipper + Sentry/Crashlytics + 自建埋点平台
面试官视角:
- 要点清单: 指标体系;自动化
- 加分项: A/B 与基线
- 常见失误: 无基线阈值
延伸阅读:
- Flipper/Sentry/Crashlytics