0
点赞
收藏
分享

微信扫一扫

2022 iOS interview iOS 面试集锦

悬灸人雪洋 2022-02-27 阅读 81

面试一

1、#include 和 #import的区别

主要知识点:递归循环引入的问题
导入的文推荐格式,均可以导入 C/C++头文件,#include还能导入更多格式类似txt
导入的方式:#include是将文件内容复制到指令处
导入文件的查找方式:#include当前文件所处文件夹,再找不到就从当前文件夹的父文件夹查找,再不行就是往上推,再找不到就IDE设置的查找路径,再找不到就从系统环境变量配置的地址。
再讲讲"" && <> 的异同。

2、初始化返回值 id 和 instancetype 的区别

  1. 相同点:
  • 都可以作为返回值
  1. 不同点
  • instancetype 可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象
  • instancetype 只能作为返回值,id可以作为参数类型

3、成员变量会出发KVO手动触发KVO的方式

成员变量可以
手动触发的方式KVO

4、 RunLoop 的理解 Source0、1的区别

1是基于端口的。0是基于非端口的。可以将runloop启动的过程讲一遍。
主要包含两个observer, 监听runloop entry状态,第二个observer主要监听beforeWaiting状态和 exit状态。然后静候面试官的问题,看看想要更深入的了解哪部分的。

5、定时器造成的卡顿的解决方案

按照提问的顺序,面试官可能对RunLoop比较感兴趣,可以讲讲定时器,在runloop中是如何注册事件的。然后讲讲定时器tolerance的问题,关于注册的事件,被一事件处理耽误过后并不会响应的问题。然后讲讲方案,丢到子线程中(主线程刷新UI),添加到RunLoop中。以及CADisplayer方案原理需要储备。

6、分类中的同名函数调用顺序

这个问题可以先讨论,一般函数的调用顺序,一般函数调用的顺序其实主要考察了runtime的知识点,关于分类和主类合并的过程中使用的movecopy.就是说主类函数后移,分类放在前面。故此处的一般函调用顺序是分类被编译的先后顺序。这里还有更深入的问题就是load,initailize的顺序。

7、关于RunLoop的理解

先用一句话来概述RunLoop是啥,RunLoop与线程的对应关系。因为知识点比较庞大,我们可以等面试官来问一下他想知道的点。Jeverson这里的想知道souce0,1的事情。然后Jeverosn讲了区别。然后又继续问了关于定时器在滑动过程为什么不工作的原因。Jeverson讲了关于runloop``mode切换的原因导致的。然后讲讲解决方案。

补充RunLoop的知识点还有很多,比如AFN2.x的常驻线程,常驻线程的使用场景。事件响应过程渲染过程异步绘制子线程使用peformselector:delay:的问题NSTimer的问题

last

  • 祝大家前程似景,收获自己满意的offer

log

  • add the part1 on Feb.27
举报

相关推荐

0 条评论