2017年iOS面试题总结
https://www.jianshu.com/p/f9eb6b315c08
2018 6月底面试经历简单回忆
https://www.jianshu.com/p/7b0eb24b567b
iOS面试题:阿里-P6一面-参考思路
https://www.jianshu.com/p/de1418dc031a
必问
MySQL内联外联的区别
https://www.jianshu.com/p/343a6802195c
说说UI自动化测试的原理
说说JS和浏览器通信机制
https://www.jianshu.com/p/da2fa597f6ac
体验优化
CPU 资源消耗原因和解决方案
https://www.jianshu.com/p/d9143c0b2bf6
GPU 资源消耗原因和解决方案
https://www.jianshu.com/p/edb724254aee
首页启动速度如何优化
https://www.jianshu.com/p/85751ffe637d
页面浏览速度如何优化
https://www.jianshu.com/p/bcb339733e48
请介绍一下ASDK的原理
https://www.jianshu.com/p/5db47becc67b
预加载怎么做
还有怎么防止卡顿
内存相关问题
如何寻找野指针, 如何查找内存泄露
https://www.jianshu.com/p/2ea1ab4b55c1
已经上架的app, 我现在有一个崩溃的地址,你如何找出具体崩溃的哪行代码
https://www.jianshu.com/p/d360aaeaaf62
GCD&Block问题
Block的原理是什么?
GCD如何多个异步任务,最后返回的时候同步执行
https://www.jianshu.com/p/7a0dc50e5988
NSOperation 与 GCD 的区别
https://www.jianshu.com/p/9b6e4cc2b151
GCD 中如何避免死锁和数据竞争
按照官方说明,只有使用了dispatch_sync函数分发任务到 当前队列 才会导致死锁。
Block 的使用及如何避免循环引用
互相持有self retain 无法释放,解决方法 weakself
runtime
请讲一下类方法和实例方法的调用过程
https://www.jianshu.com/p/0cf27af3e445
什么情况使用 weak 关键字,相比 assign 有什么不同?
属性的实质是什么?
objc在向一个对象发送消息时,发生了什么?
https://www.jianshu.com/p/c8b7d33c7e32
什么时候会报unrecognized selector错误?iOS有哪些机制来避免走到这一步?
https://www.jianshu.com/p/6d044493032a
能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
https://www.jianshu.com/p/991af956961e
runtime如何实现weak变量的自动置nil?
https://www.jianshu.com/p/40aa3cc2e265
如何使用队列来避免资源抢夺?
https://www.jianshu.com/p/75f733adfb50
有可能出现循环引用的时候用weak,比如: delegate 属性
设置weak属性的时候, 只是持有该对象的地址, assign主要是设置nsinteger之类的
weak的底层实现,从对象alloc开始
https://www.jianshu.com/p/91cb10531b3d
ARC什么时候起作用?
在编译的时候, 编译器会在适当的地方插入release
Objective-C的哪些特性利用了运行时机制
https://www.jianshu.com/p/ea22758f029b
对象的结构,isa指针是做什么的。
imp,selector,method,是什么关系
category为什么不能添加属性
https://www.jianshu.com/p/de7dec245b7c
为什么使用Runtime又可以添加属性?
https://www.jianshu.com/p/0319d041f062
说说自旋锁的实现原理
https://www.jianshu.com/p/51a7bd8c4437
KVO实现原理?
https://www.jianshu.com/p/916fd77347ac
消息转发机制原理?
https://www.jianshu.com/p/5600f786f36f
说说NSCache缓存的原理
https://www.jianshu.com/p/1c4d47db3758
说说NSCache优于NSDictionary的几点
https://www.jianshu.com/p/619edcf0d29b
网络相关
为什么af2.0有常驻的子线程,3.0为什么没有(AFNetworking3.0后为什么不再需要常驻线程?)
https://www.jianshu.com/p/e9c3d77414d4
scoket是怎么建立连接的?
https://www.jianshu.com/p/ceb406dd5e29
第三方库的问题
SDWebImage面试可能问到的细节?
最大的并发数是多少
_downloadQueue.maxConcurrentOperationCount = 6;
SDImageCache是怎么做数据管理的?
https://www.jianshu.com/p/91e1e6a4d6e7
说说你理解weak属性?
https://www.jianshu.com/p/e1d58dd9739d
说说富文本渲染有哪些方案
https://www.jianshu.com/p/7a8c3d994db2
问: aop的原理是什么
https://www.jianshu.com/p/9041423916f0
举例子说循环引用
还有时间复杂度
还有抓包
main函数运行,app做了哪些事
https://www.jianshu.com/p/c02c70993607
通知是异步还是同步
https://www.jianshu.com/p/0719b08ebeb5
JS 与原生应用是如何交互的
官方推荐使用WKWebView(ios8)的evaluateJavaScript:completionHandler:代替这个方法。
banner自动轮播实现方案
https://www.jianshu.com/p/f142be876cca
WKWebView与UIWebView的区别
https://www.jianshu.com/p/630c7cc2b3e8
高斯模糊的优化(不知道)
UIVisualEffectView, 用系统自带的, 或者加载图片, 伪装成动态高斯
微信搜索聊天记录是怎么实现的,怎么优化
微信的数据库都是存在sqlite中, 每个conversation是存成3个表, 可能因为字段太多了, 所以有chatExt, chatExt_2, chatExt_3, 然后本地是做了localID做区分, 同时保存serverID, 这样展示的时候顺序不会错乱, 并且保存一个sequence表, 记录上次的ID和conversation, 用来与服务器交互时增量更新, 在同一个conversation中搜索的话, 比较简单, 只要按照时间排序搜索即可, 加上limit 0,10之类的做分页. 如果是全局搜索的话, 因为可以看到微信是先显示三个搜索结果, 所以可以做懒加载, 因为是跨表查询, 可以先展示前三个搜索结果, 然后在异步线程继续搜索剩余结果. 最后再展示全部结果的时候, 载入这个搜索结果.
并行和并发的区别?
并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
如何令自己所写的对象具有拷贝功能?
遵循nscopying协议,并且实现
- (id)copyWithZone:(NSZone *)zone