2021年4月16日

未解答:

1.关于image加载的两种方式分别为imageNamed和contentOfFile,加载的区别以及其中哪一种是系统做了缓存处理
解答:imageNamed加载的图片会放在缓存区,即使没有被指针引用也会存在,contentOfFile则会在没有引用的情况下自己释放掉
2.只使用GCD实现多线程的读写安全,如果使用barrier的话是多度少写还是多写少读(考虑:barrier)

3.如何判断单向列表中是否有环的结构,例如链表最后一个节点的next是指向第二个节点
解答:快慢指针,做先后两个指针分别进行迭代,每次迭代后进行指针顺序的比较,如果快指针的值晚于慢指针说明是环状结构
4.https中ssl做的加密处理的细节,加密了请求中的那个部分的数据
解答:混合加密:结合非对称加密和对称加密技术。客户端使用对称加密生成密钥对传输数据进行加密,然后使用非对称加密的公钥再对秘钥进行加密,所以网络上传输的数据是被秘钥加密的密文和用公钥加密后的秘密秘钥,因此即使被黑客截取,由于没有私钥,无法获取到加密明文的秘钥,便无法获取到明文数据。
用服务器端证书里提供的公钥加密了需要解密数据的私钥

5.NSOperation是个抽象类,如果继承的话关于是否取消和是否执行时应该做什么
// 1.使用自己定义的同步operation,需要继承自NSOperation,并实现必要的方法:isFinished,isExecuting,main等,并实现KVO机制
// 2.如果不想让你自定义的operation与其他operation进行异步操作,你可以手动开始(调用start方法),并且在operation的start方法里面简单的调用main方法。
// 3.如果要自定义operation,需要继承资NSOperation。并且重载 isExecuting方法和isFinished方法。在这两个方法中,必须返回一个线程安全值(通常是个BOOL值),这个值可以在 operation 中进行操作。
// 4.一旦你的 operation 开始了,必须通过 KVO,告诉所有的监听者,现在该operation的执行状态。
// 5.在 operation 的 main 方法里面,必须提供 autorelease pool,因为你的 operation 完成后需要销毁。
// 6.必须为我们自定义的 operation 提供一个初始化方法。如:initWithStartingCount 方法。

6.通知在哪个线程回调
一般是在哪个线程发出就哪个线程接收
也可通过以下方法实现指定线程接收
self.observer = [[NSNotificationCenter defaultCenter]
addObserverForName:@”JKRSEC”
object:self
queue:[NSOperationQueue new]
usingBlock:^(NSNotification * _Nonnull note) {
/// 接收到通知回调的block
}];

已解答:

1.响应者链与事件传递
2.选择runloop与runtime中一个,进行相关表述
3.setNeedsLayout与LayoutIfNeeded的区别
4.响应者链的延伸:B控件覆盖于A控件只上,如何将B事件中的事件响应在A上
5.iOS14的新特性
6.__block做了什么
7.get与post的区别
8.pod命令中对pod库进行校验,pod lib link与pod spec link的区别
9.一些第三方库,是否读过源码,你觉得这些库有哪些设计得比较好的地方
————————————————————————————-
非技术相关:
1.项目组人数以及你在项目组内担当的职责
2.关于代码风格冲突时,你怎么和同事解决该问题
3.如果一个新的需求需要用到新技术,排期5天,产品给出3天时间,需要怎么解决
4.如果指定排期5天,中途遇到突发事件,无法保证排期内完成该任务,该如何解决