2019年iOS面试题《三》

1.iOS怎么实现多个任务执行完后,再统一处理:

https://blog.csdn.net/hero_wqb/article/details/80271206

2.不让用SDWebImage,如何实现类似逻辑 (自己设计图片请求和缓存,简单讲了SDWebImage的思路):

在SD里面使用了大量的block作为回调。
SD将URL地址作为key,去查找内存是否存在这张图片,如果存在,直接加载,不进行后续操作。

如果不存在,去本地数据里面查找是否存在这张图片,如果存在,加载到内存,加载图片。否则去网络下载图片,下载完成后,写入本地加载到内存并显示图片。

这就是SD加载图片的基本原理,当然了它实际的流程还有很多细节。例如图片下载方式的选择,图片显示的方式(是直接显示还是经过处理,例如大图的加载),同步异步的选择,缓存的清理,代码结构,RunTime等。

这里提一下SD大量使用block回调,这样比代理回调要好,主要减少了代码之间的依赖关系。

3.每个TableViewCell都有一个UIImageView要加载图片,如果没有缓存,有五个Cell请求一个url,同时发请求肯定是不实际的,如何处理?

//www.greatytc.com/p/c611c952f1b2?utm_campaign

4.微信TableView滑动的时候,动图是不动的,为什么?

Runloop的Mode决定的.

5.有了解过WebSocket吗?

为了改善HTTP请求的这种网络延迟的情况,也出现了一些适应不同需求的其他的[web通信]方式,比如说:轮询,长轮询(long-polling),数据流,EventSouce等等,WebSocket便是其中一种。

允许服务器端与客户端进行全双工(full-duplex)的实时通信。这里有个例子特别好:HTTP协议像发电子邮件,发出后必须等待对方回信;WebSocket则是像打电话,服务器端和客户端可以同时向对方发送数据,它们之间存着一条持续打开的数据通道。

//www.greatytc.com/p/75a088e8bee1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • ## iOS常用问题总结#### iOS基础知识回顾##### 1、为什么说Objective-C是一门动态的语言...
    蝉始鸣阅读 485评论 0 3
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,434评论 0 35
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,043评论 0 12
  • 实习反馈 钱佳辰 12852 产品经理实习生 有没有导师?导师是谁? 有导师:姚易 目前姚老师正让我了解她所负责的...
    钱佳辰_Hangzhou阅读 1,768评论 3 1