OC部分:
- GCD 的核心概念
- 同步(sync)和异步(async)的区别?串行队列和并发队列的区别?
- 什么是 DispatchGroup?如何实现多任务依赖?
- 主线程队列和全局队列的优先级如何管理?
- 线程安全与锁
- 如何避免多线程环境下的资源竞争?
- @synchronized、NSLock、OSSpinLock、信号量(dispatch_semaphore)的区别及适用场景?
- 读写的时候使用 nslock
- 什么是优先级反转(Priority Inversion)?如何解决?
- 自动释放池(Autorelease Pool)
- 自动释放池的工作原理是什么?何时释放对象?
- 在什么场景下需要手动创建 @autoreleasepool? -如何添加
- 循环中创建大量临时对象时,如何优化内存管理?
- 函数调用过程
- Objective-C 的消息传递机制(Messaging)是如何实现的?objc_msgSend 的作用?
- 方法查找过程(方法列表、父类逐级查找)及方法转发流程(resolveInstanceMethod、forwardingTargetForSelector、methodSignatureForSelector)?
- Swift 的函数调用与 Objective-C 的消息机制有何不同?
Swift 部分:
- 值类型与引用类型
- 结构体(struct)和类(class)的核心区别?值类型的写时复制(Copy-on-Write)机制是如何工作的?
- 如何选择使用值类型还是引用类型?
- 值类型在函数参数传递时的行为(如 inout 关键字的作用)?
- 函数派发方式
- Swift 的静态派发(Static Dispatch)和 动态派发(Dynamic Dispatch)的区别?
- final、@objc、dynamic 关键字对函数派发的影响?
- Protocol Extension 中的方法派发规则?
- 响应式编程(Reactive Programming)
- 什么是响应式编程?RxSwift 或 Combine 的核心概念(Observable、Observer、Operator)?
- 内存管理 -
- 如何用响应式编程解决异步事件嵌套(Callback Hell)问题?
- 响应式编程与传统委托模式(Delegate)的对比?
架构部分:
设计模式
指导思想
-
组件化
- 组件化的核心目标是什么?如何实现模块解耦?
- 常见的路由方案(如 URL Scheme、CTMediator、Target-Action)的优缺点?
- 如何管理组件间的依赖关系?CocoaPods 与 Carthage 在组件化中的作用?