内存管理
- iOS 内存分布是怎样的?有哪些区域,每个区域的作用
- 谈谈iOS的内存管理方式的理解
- MRC、ARC和 Autorelease的区别
- ARC在编译时和运行时都做了哪些工作
- ARC 使用的过程中需要注意点以及遵循的原则
- ARC情况下有哪些限制
- 介绍下NSZone
- 说说你对assign,strong,weak,unsafe_unretained,copy的理解
- __weak 修饰的变量,是否已经被注册在了 @autoreleasePool 中?为什么?
- ARC 的 retainCount 怎么存储的?
- __weak 属性修饰的变量,如何实现在变量没有强引用后自动置为 nil?
- 说一下什么是 悬垂指针?什么是 野指针?
- BAD_ACCESS 在什么情况下出现?
- retain、release 的实现机制是怎样的?
- 能不能简述一下 dealloc 的实现机制?
- 在 MRC 下如何重写属性的 Setter 和 Getter?
- 介绍下@property、@synthesize和@dynamic的作用
AutoReleasePool相关
- 什么是AutoReleasePool,它都有哪几种类型
- RunLoop AutoReleasePool的创建及释放时机是怎样的
- 简要介绍下 @autoreleasePool 的数据结构?
- 函数返回一个对象时,会对对象 autorelease 么?为什么?
- 自动释放池的作用是什么
- AutoreleasePool drain 和 release区别
循环引用,内存泄漏相关
- 分类的作用有哪些?
- 分类与扩展的区别?
- 通过分类可以为某个类添加哪些东西?
- 分类的实现原理?
- 如何给分类添加属性?关联对象以什么形式进行存储?
- 分类可不可以添加实例对象?为什么?
- 分类在编译过后,是在什么时机与原有的类合并到一起的?
- 分类与宿主类有同名方法会有什么结果?
- 分类与其他分类有同名方法会有什么结果?
- 协议可以添加属性吗?如果可以怎么添加。
- 说一下什么是Block?
- Block 和 函数指针 的区别?
- 说下Block的对不同类型变量的捕获情况
- Block 有几种类型?分别是什么?
- 说说你对__block的理解,以及forwarding的作用
- 对不同类型的block进行copy操作结果分别是怎样的?
- 哪些情况下block会被copy到堆上?
- __block 的解释以及在 ARC 和 MRC 下有什么不同?
- dispatch_block_t这个有没有用过?解释一下?
- 实例对象的数据结构?
- 类对象及元类对象的数据结构?
- Obj-C 对象、类的本质是通过什么数据结构实现的?
- Obj-C 中的类信息存放在哪里?
- 一个 NSObject 对象占用多少内存空间?
- 说一下对 class_rw_t 结构体的理解?
- 说一下对 class_ro_t 的理解?
- 说一下对 isa 指针的理解,对象的 isa 指针指向哪里? isa 指针有哪两种类型?(注意区分不同对象)
- 说一下 Runtime 消息解析。
- 说一下 Runtime 消息转发。
- 说一下 Method Swizzling? 说一下在实际开发中你在什么场景下使用过?
- 如何运用 Runtime 字典转模型?
- 如何运用 Runtime 进行模型的归解档?
- 在 Obj-C 中为什么叫发消息而不叫函数调用?
- 说一下 Runtime 的方法缓存?存储的形式、数据结构以及查找的过程?
- 是否了解 Type Encoding?
- Objective-C 如何实现多重继承?
- 说说+load +initializer区别
- 说说Mach O的组成结构以及每个部分的作用
- 说说点击App后到main方法经过的步骤
- class方法和objc_getClass方法有什么区别?
- 说下KVC与普通的实例变量存取方法的区别
- 说下KVC setValue:forKey:的搜索策略
- 说下KVC valueForKey:的搜索策略
- 说下KVC 常用的场景
- 介绍下KVO的原理
- 介绍下KVO的触发时机
- 说说什么时候需要手动触发KVO
- 介绍下iOS中的多线程的几种实现方案,及各自的特点
- 创建太多线程会有什么影响
- 说一下线程的生命周期
- 介绍下GCD的特点
- 说下任务和队列组成的四种组合的情况
- 介绍下GCD 任务组的作用
- 介绍下dispatch_group_enter/dispatch_group_leave和dispatch_group_async各自的应用场景以及使用的时候需要注意哪些问题
- 介绍下dispatch_barrier_async的应用场景
- 介绍下你所知道的NSOperation 和 NSOperationQueue的相关内容
- NSOperation如何实现串行
- 如何实现线性编程?
- 说一下 GCD 并发队列实现机制?
- 说一下你了解的iOS开发中的各种锁
- NSLock使用的时候需要注意哪些
- 为什么需要递归锁,它解决的问题是什么
- Synchronized 的实现机制
- 说说自旋锁与互斥锁的区别,以及自旋锁适用的场景
- 如何确保线程安全?
- atomic 在保证线程安全使用方面要注意哪些问题
- NSMutableArray、和 NSMutableDictionary是线程安全的吗?NSCache呢?
- 多线程的 并行 和 并发 有什么区别?
- 多线程有哪些优缺点?
- 如何自定义 NSOperation ?
- GCD 与 NSOperationQueue 有哪些异同?
- 解释一下多线程中的死锁?,死锁的条件,以及死锁的解决方案
- 解释一下多线程中的优先级反转?
- 子线程是否会出现死锁?说一下场景?
- 多线程技术在使用过程中有哪些注意事项?
- Runloop 和线程的关系?
- 讲一下 Runloop 的 Mode?
- 讲一下 Observer ?
- 讲一下 Source ?
- 讲一下 Runloop 的内部实现逻辑?
- 你所知的哪些三方框架使用了 Runloop?
- AutoreleasePool 在何时被释放?
- 解释一下 事件响应 的过程?
- 解释一下 手势识别 的过程?
- 解释一下 GCD 在 Runloop 中的使用?
- 解释一下 NSTimer与Runloop的关系。
- AFNetworking 中如何运用 Runloop?
- PerformSelector 的实现原理?
- 利用 Runloop 解释一下页面的渲染的过程?
- 如何使用 Runloop 实现一个常驻线程?这种线程一般有什么作用
- 为什么 NSTimer 有时候不好使?
- PerformSelector:afterDelay:这个方法在子线程中是否起作用?为什么?怎么解决?
- 介绍下定时执行有几种方式
- 如何检测 App 运行过程中是否卡顿?
- 简单介绍下你所知道的Runloop的应用
- 介绍下应用有哪些状态
- 介绍下,冷启动,热启动,锁屏,解锁,按Home进入后台,其他应用中断了当前应用,重新回到当前应用这些情况都会调用哪些方法
- 应用如何在后台保活
- 介绍下应用的生命周期
- 介绍下UIView的生命周期
- 介绍下UIViewController的生命周期
- loadView方法了解吗?
- 说一下控制器 View 的生命周期,一旦收到内存警告会如何处理?
- 说下什么情况下会触发约束的自动更新,怎么手动更新约束
- 说下什么情况下会触发布局的自动更新,怎么手动更新布局
- 说下什么情况下会自动触发绘制,怎么手动触发绘制
- 简要介绍下iOS 渲染框架组成
- 为什么要存在UIView和CALayer,说说它们的区别及联系
- 介绍下绘制流程
- 说下渲染的整个过程,以及CPU,GPU各做了哪些工作
- 说下什么是离屏渲染,触发离屏渲染的因素,为什么离屏渲染会比较耗时,要如何解决这些问题
- 说说绘图上下文的作用,iOS有哪些绘图上下文类型
- CGContextSaveGState/CGContextRestoreGState 与 UIGraphicsPushContext/UIGraphicsPopContext区别
- CGPath 和 UIBezierPath() 区别
- 简要介绍下frame, bounds, position,center,anchorPoint这些属性
- 有哪几种布局方式
- 说说AutoLayout 工作原理
- 说说bounds 和 Frame 的区别?
- 说说你知道的三方布局开源库,简要对比下,它们的优缺点
- UITableViewCell 如何根据 UILabel 内容长度自动调整高度
- 简要介绍下动画所涉及到的哪些类,它们的继承关系是怎样的
- 说说动画的事务管理
- 什么情况下会有隐式动画,为什么会有隐式动画
- 说说presentingViewController和presentedViewController的区别
- 如何暂停一个 UIView 中正在播放的动画?暂停后如何恢复?
- 说说iOS有哪些事件源类型
- 哪些对象能够响应事件,这些对象的共同点是什么?
- 说说touchesBegan/touchesMoved/touchesEnded/touchesCancelled的作用
- 说说iOS上的事件对象有哪些相关的类,它们之间的关系是怎样的?
- 介绍下事件的传递流程
- 介绍下构建响应链的流程,及事件响应流程
- 说下手势有哪些状态?
- 说下事件和手势共存的情况下的事件处理流程
- 说下常见的事件冲突和解决方案
- UIButton 的父类是什么?UILabel 的父类又是什么?
- 实现一个控件,可以浮在任意界面的上层并支持拖动?
- 如何以通用的方法找到当前显示的ViewController?
- setNeedsDisplay 和 layoutIfNeeded 两者是什么关系?
- nil、NIL、NSNULL 有什么区别?
- 如何实现一个线程安全的 NSMutableArray?
- atomic 修饰的属性是绝对安全的吗?为什么?
- 实现 isEqual 和 hash 方法时要注意什么
- id 和 instanceType 有什么区别?
- 说一下对 Super 关键字的理解
- @synthesize 和 @dynamic 分别有什么作用?
- 头文件导入的方式?
- 如何将 Obj-C 代码改变为 C++/C 的代码?
- 如何定义一台 iOS 设备的唯一性?