iOS 面试大纲

image.png

1. iOS 核心底层 (The Kernel & Runtime)

  • Obj-C Runtime: isa 位域结构、objc_msgSend 汇编流程(快速/慢速/转发)、类与元类结构、Method Swizzling 坑点。

  • 内存管理: ARC 编译器插入逻辑、SideTables (散列表/自旋锁)、Weak 指针重置原理、AutoreleasePool (Page 结构/双向链表)、Tagged Pointer。

  • Block: 栈/堆 Block 迁移、__block 变量捕获与修改原理(forwarding 指针)。

2. 系统机制 (System Internals)

  • RunLoop: Mode 切换、Source0/1 调度、线程保活、与 GCD/Autorelease 的协作。

  • GCD 与 多线程: 线程池调度原理、任务队列、栅栏函数、信号量、死锁本质。

  • 锁机制: OSSpinLock 优先级反转问题、os_unfair_lock、@synchronized 底层实现。

3. UI 渲染与性能 (Rendering & Perf)

  • 渲染管线: CPU (Layout/Display) -> GPU (Render Server/Tiler) -> FrameBuffer。

  • 离屏渲染: 产生原因 (Mask/CornerRadius/Shadow)、性能影响与检测。

  • 启动优化: (我们之前详细讨论过的) 二进制重排、Pre-main/Post-main 优化。

  • 稳定性: Crash 抓取原理 (Signal/Mach Exception)、OOM 治理。

4. Flutter 架构深度 (Flutter Expert)

  • 核心原理: Engine (C++) 启动流程、Dart VM 内存模型 (Isolate)、Skia/Impeller 对比。

  • 渲染机制: Build -> Layout -> Paint -> Composite -> Rasterize (三棵树)。

  • 混合工程: Platform Channel 异步通信、外接纹理 (Texture) 零拷贝方案、混合栈状态管理。

5. 架构设计与工程化 (Architecture)

  • 设计模式: MVC/MVVM/MVP 演进、解耦手段 (Router/Target-Action)。

  • 组件化: 业务拆分、二进制化方案、版本仲裁。

  • 网络: HTTPS 握手细节、TCP/UDP、DNS 劫持。