资深的“八股文”与核心能力复习全景图

对于你这个级别,面试官考察的重点通常是:深度(原理)、广度(知识面)和 高度(架构与工程化)

我将大纲分为五大模块,按优先级排序:


模块一:iOS 核心底层 (你的强项与必考项)

这也是你建立技术壁垒的地方,必须能够信手拈来。

1. Objective-C Runtime (运行时)

  • 对象模型: isa 指针结构(Non-pointer isa)、objc_objectobjc_class、Meta-Class(元类)及其继承链。

  • 消息发送机制: objc_msgSend 流程(快速查找 Cache -> 慢速查找方法列表 -> 动态方法解析 -> 消息转发三部曲)。

  • Method Swizzling: 原理、坑点(如多次 Hook、类簇 Hook)、应用场景(无埋点统计、APM)。

  • Associated Objects: 关联对象的底层实现(HashMap),为什么分类(Category)不能加实例变量但能加属性?

  • Weak 实现原理: SideTable、Weak表、对象释放时的清除流程。

2. RunLoop

  • 结构与模式: Mode, Source0/Source1, Timer, Observer。

  • 线程保活: 如何实现常驻线程?

  • 自动释放池 (AutoreleasePool): 创建与销毁时机,与 RunLoop 的关系(Entry, BeforeWaiting, Exit)。

  • 应用: 界面卡顿监测(通过 Observer)、大图加载优化。

3. 内存管理 (Memory Management)

  • 引用计数: Retain/Release/Dealloc 实现原理。

  • 循环引用检测: Block、Delegate、NSTimer 的循环引用及解法(__weak/__strong dance)。

  • Taged Pointer: 针对小对象的内存优化技术。

4. 多线程与并发 (GCD & Locks)

  • GCD: 串行/并发队列、同步/异步任务、Group、Barrier、Semaphore。

  • 锁的原理与性能: @synchronized, NSLock, pthread_mutex, OSSpinLock (vs os_unfair_lock)。

  • 死锁与优先级反转: 产生原因及解决方案。


模块二:计算机网络 (架构师必备)

作为架构师,你需要懂协议层面的优化。

1. HTTP/HTTPS

  • HTTPS 握手流程: SSL/TLS 四次握手详细过程(RSA vs ECDHE),对称加密与非对称加密的配合。

  • HTTP 版本演进: 1.0 vs 1.1 (Keep-Alive) vs 2.0 (多路复用, 头部压缩) vs 3.0 (QUIC, 基于 UDP)。

  • 缓存机制: Expires, Cache-Control, Last-Modified/Etag

2. TCP/UDP

  • TCP 核心: 三次握手(为什么不是两次?)、四次挥手、流量控制(滑动窗口)、拥塞控制(慢启动、快重传)。

  • Socket 编程: 长连接心跳机制、断线重连策略。

3. 网络优化与安全

  • DNS 劫持: HTTPDNS 的原理与实现。

  • 安全: 中间人攻击防范(Certificate Pinning 证书锁定)、数据加密签名。


模块三:数据结构与算法 (逻辑思维考察)

对于资深岗位,通常不会考太偏门的,但经典题目必须秒解,且要能分析时间/空间复杂度。

1. 数据结构

  • 链表: 反转链表(递归/迭代)、环形链表检测、合并有序链表。

  • 树: 二叉树遍历(前中后层序)、最大深度、翻转二叉树、二叉搜索树(BST)。

  • 哈希表 (Hash Map): 碰撞解决策略(拉链法 vs 开放寻址法)、扩容机制。

  • 栈与队列: 两个栈实现队列、滑动窗口最大值。

2. 经典算法

  • 排序: 快速排序 (Quick Sort) - 手写必须熟练、归并排序、堆排序。

  • 查找: 二分查找及其变种。

  • 动态规划 (DP) / 递归: 爬楼梯、斐波那契、最大子序和、背包问题(理解思路即可)。

  • 双指针/滑动窗口: 解决字符串/数组子串问题。


模块四:UI 渲染与性能优化 (实战经验)

这是你简历中 Highlight 的部分,面试中会被深挖。

1. 渲染原理

  • 流程: CPU (Layout, Display, Prepare) -> GPU (Render, Framebuffer) -> 屏幕显示。

  • 离屏渲染 (Off-Screen Rendering): 产生原因(圆角、阴影、Mask)、检测工具、危害与规避。

  • 事件传递与响应链: hitTest:withEvent:pointInside:withEvent:

2. 性能优化体系 (APM)

  • 启动优化: pre-main 阶段(Dyld, Rebase/Bind, Objc setup)与 post-main 阶段优化策略。

  • 包体积瘦身: LinkMap 分析、无用类/资源检测、编译选项优化 (LTO)。

  • OOM 与内存治理: 内存警告处理、大图采样(Downsampling)、野指针定位(Zombie Objects)。

  • 卡顿检测: 主线程 RunLoop 监控 vs 子线程 Ping。


模块五:Swift 与 现代架构 (加分项)

现在的 iOS 面试,Swift 占比越来越高。

1. Swift 语言特性

  • 基础: Struct vs Class (值类型 vs 引用类型)、Optional 原理。

  • 进阶: 派发机制(Static vs Dynamic Dispatch vs Message)、泛型、协议面向编程 (POP)、Copy-on-Write (COW)。

2. 架构模式

  • MVC / MVVM / MVP / VIPER: 区别、优缺点、你如何做选型?

  • 组件化/模块化: 路由方案对比(URL Router vs Target-Action/CTMediator vs Protocol-Class)。

  • 响应式编程: RxSwift / Combine 的核心思想(观察者模式 + 迭代器模式)。

3. 跨平台 (你的 Flutter 优势)

  • Flutter 原理: Widget/Element/RenderObject 三棵树、渲染管线、Platform Channel 通信机制。

  • 混合栈管理: FlutterBoost 原理或自研方案。