面试前任务计划
目录
- 刷面试题
- Runloop经典六问,iOS面试必会!
- 架构模式(MVC,MVP,MVVM),底层详解
- 性能优化之内存优化
- 大厂面试题解析上下两集
- Runtime常用的几个应用场景
- 约束布局相关知识点
- 多线程
- RTSP协议和FFMpeg的使用
- 熟悉Swift项目_极客商城Demo
- 离屏渲染面试题解析
part01
- Runloop经典六问,iOS面试必会!
- 1、分析RunLoop与线程的关系,理解Source0与Source1的区别
- 当App出现崩溃问题 -> 首先会在线程中找是否有定义处理函数 -> 如果没有,则直接exit() -> 如果有,则执行该函数
- 资料:dispatch_source学习宝典.epub
- source0是非系统事件,source1是系统事件
- 2、理解主线程RunLoop与子线程RunLoop的区别
- 3、通过Mach Port理解跨线程通讯和IPC,梳理RunLoop内在运行机制
- Mach Port如何进行跨线程通讯?
- Mach IPC:基于Mach内核实现进程间通讯
- Mach IPC被抽象三种操作:messages、ports and port sets
- Mach Port:跨线程通讯
- MachPort是最基础的API,Socket是基于它来实现的
- Mach Port如何进行跨线程通讯?
- 4、RunLoop Timer不准的两个原因
- 5、RunLoop mode自定义
- 6、RunLoop常见面试题分析
- 1、分析RunLoop与线程的关系,理解Source0与Source1的区别
- 多线程
- 多线程原理
- 线程的生命周期
- 线程与RunLoop关系
- iOS八大锁对比探索解析
- GCD
- 队列与函数
- 常见GCD面试分析
- dispatch_barrier_async/sync栅栏函数应用及底层分析
- dispatch_group调度组探索
- dispatch_source解析
- 单例底层原理
- Dispatch Semaphore信号量解析
part02
- 违背架构
- 1、架构越好,代码越少?(否)
- 2、便于维护,项目清晰。
- 3、高类聚,低耦合。
- 4、谁的事情谁做。
- 如何降低MVC耦合度
- 使用MVP或MVVM
- 使用MVP或MVVM
- 轻量化VC
- VC应该做调度,并且建立View和Model关系(此处可以使用MVP)
MVP是一种面向协议编程的架构模式
从本质出发,cell为何会复用?
- cell <-> model 通讯 双向绑定
两种实现MVVM的方式 - block 反向 + 响应式 KVO
- block + 响应式编写(ReactiveObjc) 双向绑定
- Swift、Combine(类似于RxSwift)
- 架构 - 需求 - 写接口 -> 代理三部曲(编写协议、遵循协议、实现协议)
- MVP 以需求驱动代码
- MVP MVC MVVM
- 嵌套层深的架构推荐使用MVP,而不是MVVM,因为大量的block会影响项目的调试、安全、清晰度
- 嵌套层深的架构推荐使用MVP,而不是MVVM,因为大量的block会影响项目的调试、安全、清晰度
part03
- OC和Swift关于对象的内存分配情况
- OC对象分别有isa和所有的存储属性所构成
- Swift对象是有metadata、引用计数和所有的存储属性所构成