记忆犹新的一次面试

面试就是想对象

2017年8月10号,从一个待了三年的公司离职了,说实话还真有些不舍,公司情况大家有目共睹,走也不好,不走也不好!
面试的时候都会问你为啥要离开啊?说实话我只想找一个稳定的,让自己有个归属感的地方。可是这些真话没有哪个hr或者leader认可,
其实这是每个人的初心,他们更喜欢被骗,说一些不切实际的幻想,人都喜欢好话而已。一些牢骚而已,下面是我面试遇到一些问题

block

  • 问:MRC和ARC下一般声明block用什么
  • 答:MRC用copy,因为初始化实在栈上;ARC声明也用copy
  • 问:ARC用strong行吗?
  • 答:当然可以,ARC用strong系统会自动拷贝到堆上

NSString

1
2
3
4
5
6
7
8
9
10
11
NSString *str1 = @"stringtest";
[str1 retain]; // str1引用计数是多少?-> -1
[str1 copy]; // str1引用计数是多少?-> -1
NSString *str2 = str1; // str2引用计数是多少?-> -1 str1引用计数是多少?-> -1
NSString *str3 = [str1 copy]; // str3引用计数是多少?-> -1 str1引用计数是多少?-> -1
NSString *str4 = [str1 mutableCopy]; // str4引用计数是多少? -> 1 str1引用计数是多少? -> -1

NSString有自己的存储空间,有点类似static,而且如果字符串相同,只会有一个内存地址

在iOS开发中我们存储分为

  • 全局区(静态区) (static)
  • 文字常量区 存放常量字符串,程序结束后由系统释放
  • 程序代码区 存放函数的二进制代码

@synchronized ()

  • 这个后面到底接什么,接self,还是相应的属性,这个锁的原理是把括号里面的放到一个hash表里面,
    等取值或者赋值会取hash表里面的key值,如果有就等待,具体相应

  • 如果是self相应的类多不能更改,如果是相应的属性,其他属性是不受影响的。

UIView animation

dispatch_asyc

原子就是说cpu要不就不

做,要做就一定要做完某些操作才能干别的事情,对应这里就是比较和交换要一次过做完