我对知乎上的如何面试一个iOS工程师帖子的一点回答

因为要找工作,在知乎上看了一个帖子,叫做“如何面试iOS工程师”,里面有一些初级问题,我记录下来,一是分享,而是记录,方便复习,如果有不对的,请批评指正,共同进步。问题如下:
1.什么是arc?(arc是为了解决什么问题诞生的?)
2. 请解释以下keywords的区别: assign vs weak, __block vs __weak
3. __block在arc和非arc下含义一样吗?
4. 使用atomic一定是线程安全的吗?
5. 描述一个你遇到过的retain cycle例子。(别撒谎,你肯定遇到过)
6. +(void)load; +(void)initialize;有什么用处?
7. 为什么其他语言里叫函数调用, objective c里则是给对象发消息(或者谈下对runtime的理解)
8. 什么是method swizzling?
9. UIView和CALayer是啥关系?
10. 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
11. 使用drawRect有什么影响?(这个可深可浅,你至少得用过。。)
12. ASIHttpRequest或者SDWebImage里面给UIImageView加载图片的逻辑是什么样的?把UIImageView放到UITableViewCell里面问更赞)
13. 麻烦你设计个简单的图片内存缓存器(移除策略是一定要说的)
14. 讲讲你用Instrument优化动画性能的经历吧(别问我什么是Instrument)
15. loadView是干嘛用的?
16. viewWillLayoutSubView你总是知道的。。
17. GCD里面有哪几种Queue?你自己建立过串行queue吗?背后的线程模型是什么样的?
18. 用过coredata或者sqlite吗?读写是分线程的吗?遇到过死锁没?咋解决的?
19. http的post和get啥区别?(区别挺多的,麻烦多说点)
20. 我知道你大学毕业过后就没接触过算法数据结构了,但是请你一定告诉我什么是Binary search tree? search的时间复杂度是多少?我很想知道!

我打算一个一个问题的去解决,慢慢更新。
1.什么是ARC?
ARC是英文单词automatic reference counting 的简写,是iOS的一种内存管理机制。
在ARC之前,iOS使用的是MRC内存管理机制,MRC机制,简言之遵守“谁创建,谁释放,谁引用,谁管理”的机制。也就是说创建一个对象时,需要向对象发送alloc、copy、retain消息,还要使用完毕后向对象发送release消息,当计数器为0的时候,对象就会被释放。
而ARC是苹果为了简化内存管理,会在程序的适当地方自动插入release和autorelease。
同时,要注意修饰符strong assign weak 。用strong修饰的对象,引用计数会+1,并且strong是默认的修饰符,strong修饰的指针变量指向对象时,当指针指向新值或者指针不复存在,相关联的对象就会自动释放,而weak修饰的指针变量指向对象,当对象的拥有者指向新值或者不存在时weak修饰的指针会自动置为nil。assign是简单的赋值,并不会修改计数,主要用于修饰基本数据类型。
以后,每天更新一点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值