iOS面试题

Posted winjayq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS面试题相关的知识,希望对你有一定的参考价值。

1、MVC跟MVP的区别以及使用的优缺点是什么?

  • MVC中V和C之间的关系:C可以控制V的渲染这部分,V起显示作?用,同时V上发?生的?用户事件也可以给C来做?些处理理.

  • C和M之间的关系: C可以修改M. M跟V之间的关系: M可以改变V, V读取M给它提供的数据, 可以展示界 ?面. MVC中, V跟M之间是有依赖关系的. 在使?用MVC的时候, ?网络是从C中发起的, C整体来说承担的业务逻辑会?较大, 它起到了控制V和M的作?用

  • MVP是面向协议编程,V跟Model之间是完全没关系的, 他们之间不存在引用和依赖关系. 耦合的操作全部由 Presenter来进?处理理.

  • 网络请求在Model中发起, 把数据传给P来进?处理, V也是?样,它要拿数据, 就遵守P提供的协议, 实现P给它提供的协议方法. 获取数据之后, 就可以进?展示了. 当然它的?些发起操作还是由C来进行. MVP中C?面的代码很少, 主要逻辑由P来处理理. 由于是?向协议编程, 所以在开发的时候, 完全可以把?络那层封装起来,V和C完全没必要关心?络那层.

    2、MVC经典的架构中说说有哪些常用的设计模式?

    技术分享图片
    图中包含的设计模式:
  • delegate (代理模式)
  • Notification & KVO (观察者模式)
  • target-action(命令模式)
  • MVC(中介者模式 ,内置了策略模式)

3、怎么解决ios打包成功之后,运行在iPhone上会闪退,黑屏的问题?

  • 证书的错误,比如用发布证书打App Store的包
  • 设备并不在开发者账号里
  • 有?些闪退, 像ios10的时候, 要我们加的那个访问权限, 如相机的访问,就是在plist?文件?面加上.

    4、说一说OC中字典的实现原理?

  • ?部分语言字典的底层是?个哈希表
  • 哈希表(本质就是一个数组)
  • 哈希函数:md5,哈希算法,SHA1

5、iOS中的消息发送机制和消息转发机制的区别?

  • 消息发送机制:使用了运行时,通过selector快速去查找IMP的一个过程
  • ?法在执行的时候, 编译器会把?法编译成objc_msgSend()函数
  • 消息转发机制:IMP找不到的时候,通过一些方法做转发处理

    6、组件间的通讯,是通过什么方式来做的,请详细的解释一下.

  • 采?路由的方式, 通过路由的方式来实现模块之间业务的调转, 主工程跟模块之间,不直接引用. 模块与模块之间也不直接引?. 直接引?的时候, 依赖性会更强. 在中间引?的router, 可以降低耦合性。
  • router中采用了target_action以及NSInvocation来进行实现,它们其实是一种命令模式。

    7、SDWebImage是怎么来清理缓存的?

    清理缓存有两种?方式:
  • 1.根据时间周期来清理:
    步骤:
    1. 找磁盘缓存目录
    1. 使??录枚举?, 根据传入的key获取缓存文件
    1. 获取超过7天的文件
    1. 把超过7天的文件放到?个数组?面, 统一进行删除
  • 5.把没有过期的文件存起来, 并计算文件的总?小

  • 2.根据定义的磁盘大小清理
    步骤:
  • 1.如果设置了磁盘的最?存储. 最?的缓存大于零, 并且当前的缓存?小已经?于最大的缓存?小
  • 2.清除缓存, 直到缓存到达最大缓存的一半.
  • 3.清除的时候, 虽然图?没有过期, 它也会根据时间最?的来先删,

8、SDWebImage是怎么处理接收的内存警告的?

  • ?的是AutoPurgeCache这个类来处理内存警告
  • 这个类是继承?NSCache.
  • 发现内存警告, 就直接removeAllObjects全部清理掉

9、SDWebImage中怎么计算图片的成本大小?

  • 计算图片占用的内存?小. 高?例因子宽*?例因?

  • 计算在缓存中的?小. 在同步的队列?面, 获取图片的路径,拿到图片之后,依次进行叠加.

10、SDWebImage中clear和clean有什么样的区别?

clean 删除缓存,只会删除一部分,根据过期时间和空间大小
clear 整个目录全部删除

答案都是收集而来,如果有什么错误,欢迎指正!





以上是关于iOS面试题的主要内容,如果未能解决你的问题,请参考以下文章

我的iOS面试经历(附面试题干货)

iOS面试题都有哪些

iOS面试题

iOS开发面试题:堆和栈的区别

整理出一份高级iOS面试题

IOS面试题(多线程) --- 锁