参考知乎
1. 什么是arc?(arc是为了解决什么问题诞生的?)
ARC,自动引用计数,内存管理。
2. 请解释以下keywords的区别: assign vs weak, __block vs __weak
assign用于primitive type,weak用于object
__block为block捕获的变量提供了修改权,__weak防止block内的循环引用。
3. __block在arc和非arc下含义一样吗?
我关心ARC...
4. 使用atomic一定是线程安全的吗?
不一定。比如当a线程写操作结束后,b线程进行写操作,之后当a线程进行读操作时,就读入的是b线程的值。
5. 描述一个你遇到过的retain cycle例子。(别撒谎,你肯定遇到过)
我不想撒谎...
6. +(void)load; +(void)initialize;有什么用处?
load在类被import时调用,此时是改变类的行为的最佳时机,比如method swizzling。initialize在第一个消息发送之前被调用。
7. 为什么其他语言里叫函数调用, objective c里则是给对象发消息(或者谈下对runtime的理解)
Objective-C是一门动态语言,[obj foo]在编译时被转换为objc_msgSend(obj, foo, ...)。
8. 什么是method swizzling?
方法搅拌,运行时交换两个方法的实现...
9. UIView和CALayer是啥关系?
UIView拥有CALayer,CALayer的Delegate是UIView 参考
10. 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
一般通过clipsToBounds和layer.cornerRadius会强制Core Animation提前渲染屏幕的离屏绘制,影响性能。
可以通过贝塞尔曲线切割图片达到目的。
11. 使用drawRect有什么影响?(这个可深可浅,你至少得用过。。)
drawRect依赖Core Graphics和UIKit根据传入的rect进行自定义绘制
12. ASIHttpRequest或者SDWebImage里面给UIImageView加载图片的逻辑是什么样的?(把UIImageView放到UITableViewCell里面问更赞)
找缓存-找不到下载-设置图片
13. 麻烦你设计个简单的图片内存缓存器(移除策略是一定要说的)
14. 讲讲你用Instrument优化动画性能的经历吧(别问我什么是Instrument)
15. loadView是干嘛用的?
loadView是UIViewController的实例方法,会在获取试图控制器的view为nil时被调用。手写控制器时,重载此方法来定义view属性。
16. viewWillLayoutSubView你总是知道的。。
视图的bounds改变(如屏幕旋转)时被调用,视图子视图位置发生改变前重载此方法做出响应。
17. GCD里面有哪几种Queue?你自己建立过串行queue吗?背后的线程模型是什么样的?
mainQueue、globalQueue、customQueue
18. 用过coredata或者sqlite吗?读写是分线程的吗?遇到过死锁没?咋解决的?
19. http的post和get啥区别?(区别挺多的,麻烦多说点)
并没有太多区别...
20. 我知道你大学毕业过后就没接触过算法数据结构了,但是请你一定告诉我什么是Binary search tree? search的时间复杂度是多少?我很想知道!