一面 1.iOS有哪几种锁?比较各种锁的优缺点?并给出实例场景判断用哪种锁 2.内核态和用户态?写的代码在哪上面? 3.内存管理机制 4.block有几种?追问 为什么__block修饰的值在内部可以改变 5.修饰属性有哪几个?追问 为什么用copy?weak对象为nil的底层 6.多线程有哪几种?GCD和NSOpretionyou什么区别?追问 信号量,dispatch_once的原理 7.runtime是什么?superclass是什么类型的?math_list里有什么?追问SEL里面有什么(知道的请告诉我,查资料没找到) 8.runLoop机制?source0是什么?source1是什么?追问 事件响应时怎么通知runLoop的 9.SDWebImage的原理 10.KVO的实现原理 11.字典的原理?追问重复的key是怎么排列的?取的时候是怎么取的 12.给一个二叉树图,并用前排,中排写出结果 13.layoutIfNeed 和 setNeedlayout有什么区别 面试一个多小时,跟面试官聊得很愉快,总体感觉有点难度 主要是1.2不知道,12不知道,sel里面有什么不知道,dsipatch_once的原理不知道,13回答的不好