iOS面试题目整理 - jiaxw32/iNote GitHub Wiki
- 谈谈你对 KVO 的理解?[3]
- runloop内部实现逻辑?[8]
- 请说明并比较以下关键词:__weak,__block[10]
- 请说明并比较以下关键词:atomatic, nonatomic[10]
- 以scheduledTimerWithTimeInterval的方式触发的timer,在滑动页面上的列表时,timer会暂停,为什么?该如何解决?[10]
- block 原理,循环引用问题举例? block 的属性修饰词为什么用 copy,使用 block 时有哪些要注意的?
- classA 继承 classB,classB 继承 NSObject。画出完整的类图。
- Category 中有 load 方法吗? load 方法是什么时候调用的? load 方法能继承吗?
- 实现 isEqual 和 hash 方法时要注意什么?
- @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的[11]
- id 声明的对象有什么特性?[11]
- Category(类别)、 Extension(扩展)和继承的区别[11]
- 为什么我们常见的delegate属性都用是week而不是retain/strong?[11]
- 什么是 KVO 和 KVC?[11]
- KVC的底层实现?[11]
- 你是否接触过OC中的反射机制?简单聊一下概念和使用[11]
- isKindOfClass、isMemberOfClass 区别是什么[11]
- BAD_ACCESS在什么情况下出现?[11]
- 用伪代码写一个线程安全的单例模式 [11]
- 请简单的介绍下APNS发送系统消息的机制 [11]
- 类(class)和结构体(struct)有什么区别?[10]
- Swift 是如何实现多态的?
- Swift 和 OC,各自的优缺点有哪些?
- 如果让你实现 NSNotificationCenter,讲一下思路
- 让你设计一种机制检测UIViewController的内存泄漏,你会怎么做?[1]
- 什么是 ARC? (ARC 是为了解决什么问题而诞生的?)[2]
- 关键字 assign 与 weak, __block 与 __weak 的区别[2]
-
weak实现原理[3] - 请说明并比较以下关键词:strong, weak, assign, copy[10]
- 什么情况下会出现循环引用?举例说明 [10]
- Autorelease Pool 原理
- property 原理及关键字介绍,weak 与 assign 区别
- EXE_BAD_ACCESS 错误是什么,如何解决?
- copy 关键字的作用,为什么 NSString 用 copy 修饰,还有其他的类型使用吗?
- @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符?[11]
- 怎么用 copy 关键字?[11]
- 用@property声明的 NSString / NSArray / NSDictionary 经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?[11]
- 浅拷贝和深拷贝的区别?[11]
- 系统对象的 copy 与 mutableCopy 方法[11]
- 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?[11]
- Objective-C 如何对内存管理的,说说你的看法和解决方法?[11]
- 什么是野指针、空指针?[11]
- 谈下Objective C都有哪些锁机制,你一般用哪个?[1]
- iOS下如何实现指定线程数目的线程池?[1]
- 使用 nonatomic 一定是线程安全的吗?[2]
- GCD 里面有哪几种 Queue? 背后的线程模型是什么样的?[2]
- Core Data 或者 sqlite 的读写是分线程的吗? 死锁如何解决?[2]
- 你理解的多线程?[8]
- GCD执行原理?[9]
- 说一下 OperationQueue 和 GCD 的区别,以及各自的优势
- 线程安全的处理手段有哪些?把你想到的都说一下。
- 如果让你实现 GCD 的线程池,讲一下思路
- Objective-C 中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?[11]
- 如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)[11]
- dispatch_barrier_async(栅栏函数)的作用是什么?[11]
- OC中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?[11]
- 如何使用runtime hook一个class的某个方法,又如何hook某个instance的方法?[1]
- +load 与 initialize 方法有什么作用?[2]
- 为什么其他语言里叫函数调用, Objective-C 中是给对象发送消息 (谈下对 runtime 的理解)[2]
- 什么是 Method Swizzling?[2]
- 谈谈你对 Runtime 消息转发机制的理解[3]
- runtime如何通过selector找到对应的IMP地址?[8]
- Category 的实现原理,以及 Category 为什么只能加方法,不能加属性
- _objc_msgForward 函数是做什么的,直接调用它将会发生什么?[11]
- UIView 和 CALayer 有什么关系?[2]
- loadView 的作用是什么?[2]
- viewWillLayoutSubviews 的作用是什么?[2]
- cell 复用原理
- 细致地讲一下事件传递流程
- frame 和 bounds 有什么不同?[11]
- ViewController 生命周期[11]
- 谈谈 UITableView 的优化[11]
- 如何高性能的给 UIImageView 加个圆角?[2]、[11]
- 使用 drawRect: 有什么影响?[2]
- 如何自己高效实现NSUserDefault?[1]
- 穷举iOS下所有的本地持久化方案。[1]
- iOS的沙盒目录结构是怎样的?
- main()之前的过程有哪些?[3]
- 怎么防止别人动态在你程序生成代码?[8]
- 优化你是从哪几方面着手?[8]
- iOS 的热更新方案有哪些?介绍一下实现原理?
- 你在项目中,是如何优化内存的?
- 列表卡顿的原因可能有哪些?你是如何优化的?
- 开发项目时你是怎么检查内存泄露?
- NSString如何计算字符的个数?[1]
- 介绍下iOS设备获取唯一设备号的历史变迁。[1]
- 断点的实现方式,app 是如何停止在断点的
- 介绍下内存的几大区域?[8]
- 如何用HTTP实现长连接?[1]
- HTTP2.0针对同一个域名的多个请求,会建立多少个tcp连接?[1]
- 聊下HTTP post的body体使用form-urlencoded和multipart/form-data的区别。[1]
- POST 和 GET 请求有什么区别?
- 在浏览器输入“google.com”后都发生了什么?
- HTTP和HTTPS的区别?
- 前端经典面试题: 从输入URL到页面加载发生了什么?
- http 请求报文,响应报文结构
- 为什么是三次握手?为什么是四次挥手?三次挥手不行吗?
- 讲一下 HTTPS 密钥传输流程
- 解释下tcp的慢启动特性。[1]
- TCP 与 UDP 区别
- 项目中网络层如何做安全处理?[3]
- 通信底层原理(OSI七层模型)[11]
- 数据库建表的时候索引有什么用?[1]
- SDWebImage 里面给 UIImageView 加载图片的逻辑是什么样的?[2]、[11]
- YYAsyncLayer如何异步绘制?[8]
- 热修复,JSPatch 原理
- AFNetworking 底层原理分析
- 函数式编程当中的 first-class function是什么意思呢?[1]
- 如何设计一个简单的图片内存缓存器?[2]
- 假如
Controller太臃肿,如何优化?[3] - 你是如何组件化解耦的?[8]
- 常用的设计模式及区别
- 手写观察者模式
- 讲讲 MVC、MVVM、MVP,以及你在项目里具体是怎么写的?
- iOS 系统框架里使用了哪些设计模式?至少说6个。
- 设计模式是什么? 你知道哪些设计模式,并简要叙述?[11]
- MVC 和 MVVM 的区别 [11]
- 什么是 Binary search tree, 它的时间复杂度是多少?[2]
- 数组与链表的区别
- 快排与堆排
- 遍历一个树,要求不能用递归
- 找出两个字符串的最大公共子字符串
- 你在项目中遇到的最大的问题是什么?你是怎么解决的?
- 哪一个项目技术点最能体现自己的技术实力?具体讲一下。
- 和产品经理、测试产生冲突时,你是怎么解决的?
- 你是如何学习 iOS 的?