OC基础:
1.冷启动的流程:1.mmap主二进制 2.mmap dyld dyld引导依赖的动态库 fix-up 3.objc runtime (category load等) 4.main函数 5.uikit commit transaction
引申:mmap的实现原理
2.weak的实现原理
3.kvo实现原理
4.load(分类父类子类的调用顺序) initialze 区别
5.category设计模式(拔高题 为什么category不能声明属性 声明属性后会怎么样)为什么categoty的方法会覆盖本类的方法
6.autoreleasepool的实现原理
7.runloop的流程和原理 引申:nstimer ,渲染原理,卡顿监测方案等
8.多线程相关:8.1如何实现a,b完成后 再执行c 8.2锁有哪些8.3递归锁和可重入锁是同一个概念吗?为什么递归锁是可重入的 8.4如何知道已经加过锁 8.5线程安全三要素 8.6 nsoperation main和start的区别 8.7@synchronized的实现原理 8.8 atomic和noatomic的区别 atomic的实现原理 atomic线程安全吗?
9.单例模式:9.1不用dispatch_once实现单例 9.2保证使用其他初始化方法也只能获取到单例
10.copy strong assign weak等修饰符的作用 可变对象 不可变对象的copy的区别 深copy和浅copy的区别 如何实现集合里的对象也能深copy;
11.跨端:javascriptcore如何实现的 oc和js通信 javascriptcore原理
12.离屏渲染哪些属性会导致离屏渲染,如何优化 离屏渲染的本质是什么?
13.为什么不同系统下包的大小不一样
14.消息发送的流程 对象的isa->类的isa->元类isa->root metaclass的isa->root metaclass的isa super的指向?
15.为什么设计UIView 和CAlayer
16.mach-o的结构 crash文件(ips)如何符号化
17.点击事件的传递
18.异步绘制
19.冷热信号
网络:
Https的通信流程 中间人攻击如何防止
Tcp 三次握手 四次挥手 为什么挥手要四次 多路复用
http的缓存策略
网络优化:1.dns解析和缓存 2.减少数据传输量 3,RTT 值
DNS防劫持
三方库:
1.SDWebImage AFNetWorking RAC
设计模式:
1.MVVM MVP MVC
2.DDD模式实践
3.组件化的实现方式有哪些?优缺点是?