面试形式:电话面试html
解析:面试
[operationB addDependency:operationA]; // 操做B依赖于操做
//这至关于网络请求中的依赖,必须先执行完信号A才会执行信号B //常常用做一个请求执行完毕后,才会执行另外一个请求 //注意信号A必需要执行发送完成信号,不然信号B没法执行 RACSignal * concatSignal = [self.signalA concat:self.signalB] //这里咱们是对这个拼接信号进行订阅 [concatSignal subscribeNext:^(id x) { NSLog(@"%@",x); }];
解析:这个涉及到简单知识,可参考 http://www.360doc.com/content/17/0111/22/32626470_621879084.shtml算法
解析:首先,简单介绍下KVO的用法,先添加观察者,而后怎样实现监听的代理。关于原理,能够利用runtime的知识进行实现KVO的原理,笔者曾经实现KVO的block和delegate两种形式,可参考 https://www.jianshu.com/p/c1aa85779d80编程
简单概述下 KVO 的实现:api
当你观察一个对象时,一个新的类会动态被建立。这个类继承自该对象的本来的类,并重写了被观察属性的 setter 方法。天然,重写的 setter 方法会负责在调用原 setter方法以前和以后,通知全部观察对象值的更改。最后把这个对象的 isa 指针 ( isa 指针告诉 Runtime 系统这个对象的类是什么 ) 指向这个新建立的子类,对象就神奇的变成了新建立的子类的实例。网络
原来,这个中间类,继承自本来的那个类。不只如此,Apple 还重写了 -class 方法,企图欺骗咱们这个类没有变,就是本来那个类。更具体的信息,去跑一下 Mike Ash 的那篇文章里的代码就能明白,这里就再也不重复。函数
解析:比较简单,能够参考这个 http://blog.51cto.com/lanchaohuan/1563103学习
解析:思路,递归,从根节点开始,判断左右子节点是否对称,若对称,递归,若不对称,则返回NO。spa