面试之我见
2016-06-23 23:47
323 查看
这两天去面试,遇到了好多基础题却答不上来,可能由于紧张脑子短路考虑不周,事后回忆大致都能想起来,看来能神情自若的表达真是太重要了。这方面我要多加强。
1.atomic和nonatomic的区别
——具备atomic特质的获取方法会通过锁定机制来确保其操作的原子性。
也就是说,如果两个线程同时读取一个属性,那么不论何时,总能看到有效的属性值。
如果不加锁的话(或者说使用nonatomic语义),那么当其中一个线程正在改写某属性值的时候,另外一个线程也许会突然闯入,把尚未修改好的属性值读取出来。发证这种情况时,线程读取道德属性值肯能不对。
一般iOS程序中,所有属性都声明为nonatomic。这样做的原因是:
在iOS中使用同步锁的开销比较大, 这会带来性能问题。一般情况下并不要求属性必须是“原子的”,因为这并不能保证“线程安全”(thread safety),若要实现“线程安全”的操作,还需采用更为深层的锁定机制才行。
2.不要使用 dispatch_get_current_queue()
《编写高质量iOS与OS X代码的52个有效方法》之46条,(入手的书没看到怨不得别人!)
1.atomic和nonatomic的区别
——具备atomic特质的获取方法会通过锁定机制来确保其操作的原子性。
也就是说,如果两个线程同时读取一个属性,那么不论何时,总能看到有效的属性值。
如果不加锁的话(或者说使用nonatomic语义),那么当其中一个线程正在改写某属性值的时候,另外一个线程也许会突然闯入,把尚未修改好的属性值读取出来。发证这种情况时,线程读取道德属性值肯能不对。
一般iOS程序中,所有属性都声明为nonatomic。这样做的原因是:
在iOS中使用同步锁的开销比较大, 这会带来性能问题。一般情况下并不要求属性必须是“原子的”,因为这并不能保证“线程安全”(thread safety),若要实现“线程安全”的操作,还需采用更为深层的锁定机制才行。
2.不要使用 dispatch_get_current_queue()
《编写高质量iOS与OS X代码的52个有效方法》之46条,(入手的书没看到怨不得别人!)
相关文章推荐
- 职场培训师的一些建议
- 面试题 一
- 让年轻程序员少走弯路的 14 个忠告
- PHP面试题:50,40,30,20,1这五张优惠卷,订单金额为X元,用方法实现return多少张优惠卷
- 面试2
- js 面试大全
- 在你步入职业软件开发生涯那天起就该知道的五件事
- 记自己写的第一个批处理
- 程序员修炼之道——从小工到专家阅读笔记03
- 操作系统面试—进程同步
- 程序员修炼之道——从小工到专家阅读笔记02
- 文章标题
- 易车面试题
- 关于java socket多用户聊天--图形界面版&带高层架构思想(经典面试题)
- arm9 mini2440 10道面试题
- 一个32岁入门的70后程序员给我的启示
- **科技面试问的问题
- 互联网创业:程序员加入创业团队必备哪些素质?
- 程序员加入创业团队必备哪些素质?
- 每个程序员都应该收藏的算法复杂度速查表