常见 iOS 面试真题汇总(基础、实战、系统、网络、架构全覆盖)
(持续更新)
前言
近期的 iOS 面试求职可以说是经历了一波小高潮。话不多说,下面是我精心整理的一份 iOS 面试真题合集,覆盖各类公司常问问题,供大家查缺补漏。
面试题目录
1、iOS 基础题
- 分类(Category)和扩展(Extension)的区别及使用场景?
atomic
的实现机制?为什么不能保证线程安全?__weak
修饰符的释放过程?SideTable 的结构与作用?- AutoreleasePool 的数据结构及
AutoreleasePoolPage
的底层分析 - 对象、类对象、元类的关系?为什么方法存在类对象中?
- Objective-C 中的内省方法、
class
与objc_getClass
区别? - RunLoop 的作用及内部机制?与线程/内存管理的关系?
- 离屏渲染的触发场景及性能影响?
2、iOS 实战题
NSOperation
相比GCD
的优势和使用场景?- App 启动优化策略(main 函数前后阶段分析)
- 无埋点埋点系统的实现思路?应具备哪些特性?
- App 崩溃场景分析与处理手段
- App 卡顿的原因与性能优化方法(如帧率监测、主线程任务分离等)
3、网络题
- App 网络层优化策略有哪些?(缓存、压缩、重试机制等)
- TCP 三次握手、四次挥手原理?为何必须三次?
- HTTPS 握手流程、非对称加密使用原因、双向认证?
- HTTPS 如何校验身份与数据完整性?
- 如何用 Charles 抓取 HTTPS 请求?中间人证书原理?
4、计算机系统题
- 编译过程的各个阶段(预处理、编译、汇编、链接)
- 静态链接 vs 动态链接?.a 和 .dylib 区别?
static
与const
的区别与使用场景?- 死锁出现的四个条件?如何预防?
- 常见锁的类型、底层实现、性能对比与适用场景?
5、设计模式题
- 除了单例、观察者,还了解哪些设计模式?
- iOS SDK 中使用的设计模式示例(MVC、代理、组合等)
- 每种设计模式的参与角色与交互机制?
6、架构 & 设计题
- MVC、MVVM、MVP 的本质区别与优缺点?
- 面向对象的 SOLID 原则?如何在项目中落地?
- 常见重构技巧?重构的时机与作用?
- 框架 vs 设计模式 的本质区别?
- 三方框架源码分析(如 AFNetworking、Masonry、SDWebImage)与设计思想总结
7、数据结构 & 算法题
- 链表与数组的区别?插入/查找复杂度?
- 哈希表结构、冲突解决方法(开放定址、链式散列等)
- 排序算法手写:冒泡、选择、插入、快速排序(二路/三路)
- 链表题:判断链表有无环;删除特定值节点
- 数组题:有序数组中找和为指定值的两个数;合并有序数组
- 二叉树题:反转二叉树;判断两个二叉树是否相等
8、额外补充(进阶 & 冷门)
- UIView 与 CALayer 的关系?drawRect 是否影响性能?
- UIImageView 如何显示超大图并支持缩放?
fishhook
如何工作?为何不能修改静态链接库符号?- C++ 虚函数调用 vs Objective-C 消息发送机制?
placement new
是什么?OC 中如何实现?- ARC 下 C++ 容器如何管理 Objective-C 对象?
id
、self
、super
的语法差异?isa
指针结构和作用?- Block 修改变量除了 __block 还有什么方法?
NSDictionary
和NSHashTable
区别与场景?- Swift 中 String.Index 的设计优缺点?
- TCP 长连接断网后服务器是否能立即感知?
- Wireshark 抓不到 SSL 原始数据的原因?
backtrace
的实现原理?用户态 or 内核态?malloc
指针 double free 与访问 freed 指针的异常区别?- RunLoop 是死循环吗?为何不会卡死系统?
- Runtime 源码中的 fastpath/slowpath 机制?
- Runtime 中 SideTable 的用途?
- Objective-C 如何实现系统升级下的 ABI 稳定性?
结语
刷题只是准备面试的一部分,更关键的是理解每一个问题背后的原理与设计理念。在找工作的同时,不断提升技术深度,整理项目亮点,打磨软实力,才能真正从容应对。
✨ 祝每位正在准备 iOS 面试的开发者都能收获满意的 offer!你值得更好的舞台!
常见 iOS 面试真题汇总(基础、实战、系统、网络、架构全覆盖)