2018-11-15 松果出行面试

1.首先简单自我介绍,主要是工作经历

2.面试官问题

    ⑴.内存管理机制:

                1.MRC(人工引用计数),手动管理内存。MRC模式下,所有的对象都需要手动的添加retain、release代码来管理内存。使用MRC,需要遵守谁创建,谁回收的原则。也就是谁alloc,谁release;谁retain,谁release。当引用计数为0的时候,必须回收,引用计数不为0,不能回收,如果引用计数为0,但是没有回收,会造成内存泄露。如果引用计数为0,继续释放,会造成野指针。为了避免出现野指针,我们在释放的时候,会先让指针=nil。

                2.。在ARC模式下,只要没有强指针(强引用)指向对象,对象就会被释放。在ARC模式下,不允许使用retain、release、retainCount等方法。并且,如果使用dealloc方法时,不允许调用[super dealloc]方法。ARC模式下的property变量修饰词为strong、weak,相当于MRC模式下的retain、assign。strong :代替retain,缺省关键词,代表强引用。weak:代替assign,声明了一个可以自动设置nil的弱引用,但是比assign多一个功能,指针指向的地址被释放之后,指针本身也会自动被释放

        ⑵.block 引起循环引用的原因:

                    self.xx 调用block 在block块中再次调用self的属性 self -> xxx -> block -> self   

                    解决办法:__weak typeof(self) weakSelf = self 或者把block使用对象=nil使其不形成循环

        ⑶.kvc kvo:KVC(Key-Value-Coding)内部的实现:一个对象在调用setValue的时候,(1)首先根据方法名找到运行方法的时候所需要的环境参数。(2)他会从自己isa指针结合环境参数,找到具体的方法实现的接口。(3)再直接查找得来的具体的方法实现。KVO(Key-Value- Observing):当观察者为一个对象的属性进行了注册,被观察对象的isa指针被修改的时候,isa指针就会指向一个中间类,而不是真实的类。所以 isa指针其实不需要指向实例对象真实的类。

        ⑷.oc 与 swift 优缺点:

                       优点:Swift容易阅读,语法和文件结构简易化,更易于维护,文件分离后结构更清晰,更加安全,它是类型安全的语言,Swift代码更少,简洁的语法,可以省去大量冗余代码,Swift速度更快,运算性能更高。

                        缺点:使用人数比例偏低,目前还是OC的天下,社区的开源项目偏少,毕竟OC独大好多年,很多优秀的类库都不支持Swift,不过这种状况正在改变,现在有好多优秀的Swift的开源类库了,公司使用的比例不高,很多公司以稳为主,还是在使用OC开发,很少一些在进行混合开发,更少一些是纯Swift开发,偶尔开发中遇到的一些问题,很难查找到相关资料,这是一个弊端,纯Swift的运行时和OC有本质区别,一些OC中运行时的强大功能,在纯Swift中变无效了,对于不支持Swift的一些第三方类库,如果非得使用,只能混合编程,利用桥接文件实现。

          ⑸.架构整个app需要考虑到哪些:参考https://www.jianshu.com/p/78af03893117

你可能感兴趣的:(2018-11-15 松果出行面试)