Knowledge

Chapters for every direction the job board covers — engineering, data, design, sales, marketing, operations and more. Every topic shows how many live jobs ask for it. The first chapter is free; a paid plan opens the rest.

Track syllabus

Mobile / iOS / Android

Mobile interview prep across iOS and Android lifecycles, Swift and Kotlin, cross-platform trade-offs, performance, and release at scale.

4 chapters · 1031 jobs hiring now

Track progress 0 / 0
01 基础篇 6 topics Free
iOS 应用生命周期与状态

面试官想看你是不是真的理解系统什么时候回收你的应用:切后台多久会被挂起、被杀掉后从哪里恢复,而不是只会背几个回调的名字。

  • App 与 Scene 两套生命周期的分工
  • 前台、后台、挂起、终止的状态迁移
  • 被系统回收后的状态恢复
  • Delegate 与 Scene 的职责边界
Example answer

我会按用户能感知的四种状态讲:前台活跃、后台运行、挂起、终止。进入后台后系统只给几秒收尾时间,我会在这个窗口里落盘草稿并结束长任务;被系统回收后,靠 Scene 的会话恢复把用户带回原来的页面,而不是重新走一遍冷启动。

Android 生命周期与返回栈

考的是进程随时可能被系统回收这个前提:配置变更时谁负责重建、状态存在哪里、返回栈如何影响导航,这些决定应用在低端机上稳不稳。

  • Activity 与 Fragment 生命周期的对应
  • 配置变更与进程重建后的状态保存
  • 任务栈与启动模式(launchMode)
  • onSaveInstanceState 的取舍
Example answer

我会先讲清系统随时可能杀死后台进程,再说明用 ViewModel 扛住旋转屏幕这类配置变更、用 SavedStateHandle 扛住进程重建;导航上给推送直达页配 singleTask,避免用户点通知后返回栈里堆出一串重复页面。

Swift 内存管理与 ARC

面试官想确认你能在写代码时就预判对象生命周期:什么时候用 weak、什么场景才敢用 unowned、闭包捕获 self 为什么容易造成泄漏。

  • ARC 的引用计数与释放时机
  • 循环引用与 weak/unowned 的选择
  • 闭包捕获列表的实际影响
  • 值类型语义与写时复制
Example answer

我会用页面持有闭包、闭包又捕获 self 的例子讲循环引用,说明在捕获列表里用 [weak self] 打破环;再对比 struct 的值语义与写时复制,说明列表数据用值类型传递为什么更安全,代价只是一次拷贝。

Kotlin 协程与并发

协程已是 Android 的默认异步方式,面试官看的是你会不会给协程指定作用域、页面销毁时能否正确取消,而不是把它当成线程池的语法糖。

  • 挂起函数与结构化并发
  • CoroutineScope 与页面生命周期绑定
  • Dispatchers 选择与主线程安全
  • 取消传播与超时处理
Example answer

我会把每个协程挂在生命周期明确的 Scope 上,页面销毁就随 ViewModel 一起取消;网络和数据库切 Dispatchers.IO,UI 更新回到 Main;接口用 withTimeout 兜底,取消异常按结构化并发向上传播,不让子任务在后台偷偷跑。

Android 内存与泄漏排查

考察你能否解释一次真实的内存增长:是泄漏还是缓存没有上限,以及有没有用工具把引用链定位到具体那一行代码。

  • 堆内存与 GC 的基本模型
  • 常见泄漏:单例持 Context、监听器
  • LeakCanary 与堆快照分析
  • OOM 与图片内存控制
Example answer

低端机用户反馈 OOM 后,我用 LeakCanary 定位到一个静态单例持有了 Activity 的 Context,改成 applicationContext 后泄漏消失;图片侧接入采样解码与 Bitmap 复用,列表页峰值内存从 320MB 降到 180MB。

移动端架构分层与状态管理

面试官在确认你的代码库是否可维护:状态放在哪一层、UI 只负责渲染还是也管业务、模块之间靠什么解耦,这决定团队变大后还能不能改得动。

  • MVVM 与 MVI 的数据流差异
  • 单向数据流与状态收敛
  • 模块化拆分与依赖边界
  • 依赖注入与可测试性
Example answer

我会说清我们把状态收敛在 ViewModel 里,UI 只订阅不可变状态、向上发事件;模块按 feature 拆分,只通过接口互相依赖,测试时用依赖注入换掉真实实现;新人加一个页面不用碰其他模块的代码。

02 平台篇 6 topics Member

The first chapter is free. A paid plan opens the rest.

03 质量篇 6 topics Member

The first chapter is free. A paid plan opens the rest.

04 项目故事篇 6 topics Member

The first chapter is free. A paid plan opens the rest.

A paid plan opens every chapter in this track.

The remaining chapters cover the full knowledge map and a preparation checklist.

See plans

Hiring now

Related jobs hiring now

Roles whose skill requirements overlap with this track. Review a chapter, then check the live openings.