目录一、Swift 语言基础与进阶(1-10)1.let与var的本质区别(不是 "常量 / 变量" 这么简单)2.struct与class的核心区别(面试必问)3.==与===的区别4.optional(可选型)的本质与!、?的使用5.guard与if的使用场景区别6.enum的高级用法(关联值、原始值、递归枚举)7.protocol的class-only限制与AnyObject8.extension的使用限制与能力9.throws、try、do-catch错误处理机制10.inout参数的工作原理二、内存管理(11-18)11. ARC 的工作原理与自动引用计数12. 强引用(strong)、弱引用(weak)、无主引用(unowned)的区别13. 循环引用的产生原因与解决方法14.autoreleasepool的作用与使用场景15.deinit的调用时机与限制16. 值类型的内存管理与 Copy-On-Write17. Core Foundation 对象的内存管理(__bridge、__bridge_retained、__bridge_transfer)18. 内存泄漏的检测方法三、多线程与 GCD(19-27)19. 进程与线程的区别20. 串行队列与并发队列的区别21. 同步(sync)与异步(async)的区别22. 主队列与全局队列的区别23.DispatchGroup的使用方法与场景24.DispatchSemaphore的使用方法与场景25.DispatchBarrier的使用方法与场景26.OperationQueue与 GCD 的区别27. 线程安全的实现方法四、UIKit 与界面开发(28-36)28.frame与bounds的区别29.UIView的生命周期方法30.UIViewController的生命周期方法31.UIButton的addTarget与closure的区别32.UITableView的重用机制33.Auto Layout与Frame布局的区别34.UIStackView的使用方法与优势35.CALayer与UIView的区别36. 离屏渲染的产生原因与优化方法五、数据持久化(37-41)37.UserDefaults的使用限制与最佳实践38.Keychain的使用方法与优势39.Core Data与SQLite的区别40.FMDB的使用方法与优势41. 数据持久化方案对比六、网络编程(42-45)42.URLSession的使用方法与优势43.GET与POST请求的区别44. HTTP 状态码的含义45. 网络请求的缓存策略七、设计模式(46-50)46. 单例模式的实现与优缺点47. 代理模式的实现与优缺点48. 观察者模式的实现与优缺点49. MVC 与 MVVM 的区别50. 工厂模式的实现与优缺点一、Swift 语言基础与进阶(1-10)1.let与var的本质区别(不是 "常量 / 变量"
iOS 开发面试 50 个高频易混淆知识点详解
目录一、Swift 语言基础与进阶(1-10)1.let与var的本质区别(不是 "常量 / 变量" 这么简单)2.struct与class的核心区别(面试必问)3.==与===的区别4.optional(可选型)的本质与!、?的使用5.guard与if的使用场景区别6.enum的高级用法(关联值、原始值、递归枚举)7.protocol的class-only限制与AnyObject8.extension的使用限制与能力9.throws、try、do-catch错误处理机制10.inout参数的工作原理二、内存管理(11-18)11. ARC 的工作原理与自动引用计数12. 强引用(strong)、弱引用(weak)、无主引用(unowned)的区别13. 循环引用的产生原因与解决方法14.autoreleasepool的作用与使用场景15.deinit的调用时机与限制16. 值类型的内存管理与 Copy-On-Write17. Core Foundation 对象的内存管理(__bridge、__bridge_retained、__bridge_transfer)18. 内存泄漏的检测方法三、多线程与 GCD(19-27)19. 进程与线程的区别20. 串行队列与并发队列的区别21. 同步(sync)与异步(async)的区别22. 主队列与全局队列的区别23.DispatchGroup的使用方法与场景24.DispatchSemaphore的使用方法与场景25.DispatchBarrier的使用方法与场景26.OperationQueue与 GCD 的区别27. 线程安全的实现方法四、UIKit 与界面开发(28-36)28.frame与bounds的区别29.UIView的生命周期方法30.UIViewController的生命周期方法31.UIButton的addTarget与closure的区别32.UITableView的重用机制33.Auto Layout与Frame布局的区别34.UIStackView的使用方法与优势35.CALayer与UIView的区别36. 离屏渲染的产生原因与优化方法五、数据持久化(37-41)37.UserDefaults的使用限制与最佳实践38.Keychain的使用方法与优势39.Core Data与SQLite的区别40.FMDB的使用方法与优势41. 数据持久化方案对比六、网络编程(42-45)42.URLSession的使用方法与优势43.GET与POST请求的区别44. HTTP 状态码的含义45. 网络请求的缓存策略七、设计模式(46-50)46. 单例模式的实现与优缺点47. 代理模式的实现与优缺点48. 观察者模式的实现与优缺点49. MVC 与 MVVM 的区别50. 工厂模式的实现与优缺点一、Swift 语言基础与进阶(1-10)1.let与var的本质区别(不是 "常量 / 变量"