基础理论
1.面向对象和面向过程区别、概述面向对象特性,重写和重载区别
2.设计的原则有哪些?并简述常用的设计模式?单一职责,里氏替换原则、依赖倒置原则,
3.UIView和CALayer区别
4.NSProxy的介绍以及用法
5.深复制和浅复制
6.类的本质
7.分类底层原理解析
8.分类和扩展的区别
9.简述KVO以及内部实现
10.多线程下同步和异步,串行并行的概念
内存分区
内存分区,每一区的含义和用法?
常用的属性修饰符?weak和assign的区别
Setter的流程
讲述alloc都做了什么事情?
概括dealloc流程?
讲述weak修饰的变量如何创建和释放?
讲述关联对象内部如何实现创建和释放
简述iOS的内存管理方案?
概述自动释放池?从它的数据结构和工作流程(对象加入 如何被释放)
retainCount如何存储
循环引用的几种情况
Runtime
简述方法本质?内部实现流程?
关联对象的创建和释放流程
SEL、IMP都是什么
概述类和对象,如何定义一个类
对象在内存中如何存储,对象怎么调用属性和方法的
类在代码段如何存储,并如何获取
简述iSA指针。通过对象isa指针,查找对象所属类在代码段的方法
RunLoop
概述RunLoop结构
简述项目中使用
block
简述block本质以及类型
概述内部实现
__block修饰的变量可以被修改的原因
多线程
GCD线程组、栅栏、信号量的一些方法
NSOperation的使用
同步主队列会造成的问题
网络
TCP和UDP的区别
网络七层和TCP/IP五层模型
三次握手和四次离手过程
讲述一次http请求的过程,每个步骤都做了什么
cookie和session的区别
抓包工具的使用
网络数据传输的RSA、DES加密
WebSocket的了解和使用
八、数据存储
IOS沙盒结构,偏好设置存储位置
MySQL的操作【FMDB】
性能
卡顿优化、内存优化、启动优化、网络优化、电量优化等步骤
算法
了解算法时间和空间复杂度,看到方法能大致估算
了解栈和队列的概念,以及数据进出执行
了解树,二叉树,红黑树等顺序查找
了解图的顺序查找
排序算法中冒泡排序和选择排序的写法
刷LeetCode题中初级算法,每日一道2篇
组件架构
MVC、MVVM的了解,在项目中的使用
了解AFNetWorking、SDWebImage源码实现
App Store账号
个人和公司账号的申请
掌握提审信息的填写
能够解决被拒问题,内购,元数据,内容素材等问题
音视频
了解WebRTC,熟悉常用的API
FFmpeg的源码阅读,能够基于此二次集成
IJKPlayer的项目使用
了解H264、H265编码实现
了解直播RTMP原理实现
Swift-类
概述几种初始化器
Swift之weak和unowned
??底层实现
Lazy、guard、元组、associatedtype
是否具备动态性
简述mutating
swift结构体和类区别
Swift和OC区别
简述写时复制机制