iOS面试知识点整理

1、runtime相关问题

runtime可以说是OC开发中最重要的知识点之一了,面试时回答的完美会让面试官在心底给你加不少分哦。

结构模型

1、介绍下runtime的内存模型(isa、对象、类、metaclass、结构体的存储信息等)
2、为什么要设计metaclass
3、class_copyIvarList&class_copyPropertyList区别
4、class_rw_t 和 class_ro_t 区别
5、category如何被加载的,两个category的load方法的加载顺序,两个category的同名方法的加载顺序
6、category和extension区别,可以给NSObject添加Extension吗,结果如何
7、消息转发机制,消息转发机制和其他语言的消息机制优劣对比
8、在方法调用的时候,方法查询->;动态解析->;消息转发之前做了什么
9、IMP、SEL、Method的区别和使用场景
10、load和initialize方法的区别是什么?在继承关系中他们有什么区别
11、说说消息转发机制的优劣

2、runloop

1、app如何接收到触摸事件的
2、为什么只有主线程的runloop是开启的
3、为什么只能在主线程刷新UI
4、PerformSelector和runloop的关系
5、如何使线程保活

3、KVO && KVC

1、KVO实现原理
2、如何手动关闭KVO
3、通过KVC修改属性会触发KVO吗
4、哪些情况下使用KVO会崩溃,如何避免
5、KVO的优缺点

4、内存管理

1、 weak的实现原理
2、关联对象的应用,系统是如何关联对象的
3、关联对象如何进行内存管理的?关联对象如何实现weak属性
4、AutoreleasePool原理,所使用的数据结构是什么
5、ARC的实现原理?ARC下对retain & release做了哪些优化,ARC哪些情况下会造成内存泄漏

5、Block

1、block的内部实现,结构体是什么样的
2、block是类吗?有哪些类型?
3、一个int变量被__block修饰与否的区别?block的变量截获
4、block在修改NSNutableArray需不需要添加__block
5、block怎么进行内存管理
6、block可以用strong修饰吗?
7、解决block循环引用为什么要用__strong、__weak修饰
8、block发生copy的时机
9、block访问对象类型auto变量时,ARC和MRC下有什么区别?

6、多线程

1、iOS开发中有多少类型的线程?对比一下
2、GCD有哪些队列,默认提供哪些队列?
3、GCD有哪些方法
4、GCD主线程 & GCD主队列的关系
5、如何实现同步?
6、dispatch_once实现原理
7、什么情况下会死锁
8、有哪些类型的线程锁,作用和使用场景
9、NSOperationQueue中的maxConcurrentOperationCount默认值
10、定时器有几种?优劣

7、视图&图像相关

1、AutoLayout的原理性能如何
2、UIView &; CALayer的区别
3、事件响应链
4、drawRect & layoutSubviews的调用时机
5、UI的刷新原理
6、隐式动画 & 显式动画 的区别?
7、什么是离屏渲染?
8、imageNamed和imageWithContentsOfFile的区别
9、多个相同的图片会重复加载吗?
10、图片什么时候解码,如何优化?
11、图片渲染怎么优化
12、如果GPU的刷新频率超过iOS屏幕60Hz刷新频率是什么现象,怎么解决?

8、架构设计

手动埋点、自动化埋点、可视化埋点
MVC、MVP、MVVM
单例的弊端
常见路由方案,对比优劣
如何保证项目的稳定性
设计一个图片缓存框架
设计一个线程池,画出你设计的架构图
你的app架构是什么,有什么优缺点、为什么这样做、怎么改进

9、系统基础知识

1、线程 & 进程的区别
2、HTTPS握手过程
3、TCP的握手过程,为什么进行三次握手、四次挥手
4、堆 & 栈 的区别,谁占用的内存大
5、加密算法,对称加密和非对称加密的区别
6、Charles抓包过程?不适用Charles,4G网络如何抓包
7、下match-o文件结构

10、性能优化

1、如何做启动优化,如何监控
2、如何做卡顿优化,如何监控
3、如何做耗电优化,如何监控
4、如何做网络优化,如何监控

你可能感兴趣的:(iOS面试知识点整理)