今日头条iOS高级工程师面试总结

面试形式:电话面试

1. 你平时怎么解决网络请求的依赖关系:当一个接口的请求需要依赖于另一个网络请求的结果

解析:

  • 办法1:线程:NSOperation 操作依赖和优先级

[operationB addDependency:operationA]; // 操作B依赖于操作

  • 办法2:逻辑:在上一个网络请求的响应回调中进行下一网络请求的激活

2. 关于RAC你有怎样运用到解决不同API依赖关系

  • 信号的依赖

使用场景是当信号A执行完才会执行信号B,和请求的依赖很类似,例如请求A请求完毕才执行请求B,我们需要注意信号A必须要执行发送完成信号,否则信号B无法执行

//这相当于网络请求中的依赖,必须先执行完信号A才会执行信号B
//经常用作一个请求执行完毕后,才会执行另一个请求
//注意信号A必须要执行发送完成信号,否则信号B无法执行
RACSignal * concatSignal = [self.signalA concat:self.signalB]

//这里我们是对这个拼接信号进行订阅
[concatSignal subscribeNext:^(id x) {
NSLog(@"%@",x);
}];

3. 编译链接你有了解多少

解析:这个涉及到简单知识,可参考 http://www.360doc.com/content/17/0111/22/32626470_621879084.shtml

4. 简单介绍下KVO的用法

解析:首先,简单介绍下KVO的用法,先添加观察者,然后怎样实现监听的代理。关于原理,可以利用runtime的知识进行实现KVO的原理,笔者曾经实现KVO的block和delegate两种形式,可参考 https://www.jianshu.com/p/c1aa85779d80

简单概述下 KVO 的实现:

当你观察一个对象时,一个新的类会动态被创建。这个类继承自该对象的原本的类,并重写了被观察属性的 setter 方法。自然,重写的 setter 方法会负责在调用原 setter方法之前和之后,通知所有观察对象值的更改。最后把这个对象的 isa 指针 ( isa 指针告诉 Runtime 系统这个对象的类是什么 ) 指向这个新创建的子类,对象就神奇的变成了新创建的子类的实例。

原来,这个中间类,继承自原本的那个类。不仅如此,Apple 还重写了 -class 方法,企图欺骗我们这个类没有变,就是原本那个类。更具体的信息,去跑一下 Mike Ash 的那篇文章里的代码就能明白,这里就不再重复。

面试形式:牛客网的视频面试,这个网页里面右上角有个视频窗口,然后主要页面内容是在线编程窗口。

1. 编程题:RLE算法,编写一个函数,实现统计字符次数的功能:例如输入为aaabbccc,输出为a3b2c3。不限语言。

解析:比较简单,可以参考这个 http://blog.51cto.com/lanchaohuan/1563103

2. 编程题:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的.

解析:思路,递归,从根节点开始,判断左右子节点是否对称,若对称,递归,若不对称,则返回NO。

3. 你认为自动布局怎么实现的

  • 解析:先提到系统提供的NSLayoutConstraint,再介绍Masonry怎样基于它的封装?

  • 然而面试官继续问AutoLayout原理是?它的原理就是一个线性公式!比如,创建约束,iOS6中新加入了一个类:NSLayoutConstraint。它的约束满足这个公式:

答案获取:1、喜欢小编这篇文章

2、加小编的我的iOS交流群:761407670、进群密码“面试”,即可找到小编免费获取.

分享目的是为了寻找志同道合的朋友一起创建一个我们自己的程序员圈子,有意者请联系作者,让我们一起搭建一个属于我们iOS开发者的私有圈子,内推、共享资源。

部分答案截图:

image
image
image
image

持续更新--请iOS的小伙伴关注! 喜欢的话给一个赞吧!

其他面经

1.直击2020——iOS 面试题大全(补充完整版)

2.“新”携程,阿里,腾讯iOS面试常见问题合集(附答案)

3.我是如何同时拿到阿里和腾讯offer的

4.腾讯&阿里&美团&快手&字节等10公司面经

5.腾讯社招iOS面试记录

6.最新阿里腾讯头条美团等iOS面试总结

7.让 BAT 的 Offer 不再难拿

你可能感兴趣的:(今日头条iOS高级工程师面试总结)