iOS面试题:讲讲iOS事件响应链的原理
当事件发生的时候,响应链首先被发送给第一个响应者(往往是事件 发生的视图,也就是用户触摸屏幕的地方)。事件将沿着响应者链一 直向下传递,直到被接受并作出处理。
第一响应者一般指的是用户当前触摸的响应者对象,表示当前该对象正在与用户交互,第一响应者是响应者链的开端。具有响应和处理iOS事件能力的对象,也就是继承UIResponder的类的对象。
当这些事件发生时,iOS会生成对应的响应链, 来查找第一响应对象并进行事件的分发,最后处理事件,完成相应操作。下面我们接着看关于响应链的概念。 响应链,顾名思义,就是有一系列响应对象的集合成的一个层次结构。
如果是,系统会先从响应网中寻找响应链。如果不是,说明该事件是当前正在进行中的事件产生的一个Touch message, 也就是说已经有保存好的响应链 寻找到最佳响应者后,事件就在响应链中的传递及响应了。
面试题判断是不是合格的ios工程师
1、了解职业素养:除了技术层面,还需要了解其工作态度、团队合作精神、沟通能力等职业素养。这些也是评判一个工程师是否优秀的重要标准。通过多方面的提问和深入了解,可以更准确地评估应聘者是否适合iOS工程师的岗位。在面试过程中,应注意观察应聘者的非言语表现,如眼神交流、肢体语言等,以获取更全面的信息。
2、在面试iOS工程师时,首要一步是明确岗位需求。如果公司没有明确划分,可以根据应聘者提供的薪资预期来大致分类:3-7k可视为初级工程师,7-14k对应中级工程师,14k以上则为高级工程师。对于初级职位,面试者应能掌握OC或Swift基础,了解控件使用和基本代码逻辑,例如基础面试题的正确率需达到40%以上。
4、首先看公司有没明确的岗位定位,比如有些公司招初级,中级,高级工程师。
5、如果是有工作经验的工程师,直接问做过什么app就可以了;再问问一些自身产品上比较关键功能的实现就可以看的差不多了;再问问ios每年的新功能掌握的是否及时就可以看出这个工程师的所有了。 没有工作经验的实习生,只能看懂不懂语法了,学习能力怎么样,可塑性可以不可以。
iOS面试题:说说响应链
当事件发生的时候,响应链首先被发送给第一个响应者(往往是事件 发生的视图,也就是用户触摸屏幕的地方)。事件将沿着响应者链一 直向下传递,直到被接受并作出处理。
第一响应者一般指的是用户当前触摸的响应者对象,表示当前该对象正在与用户交互,第一响应者是响应者链的开端。具有响应和处理iOS事件能力的对象,也就是继承UIResponder的类的对象。
当这些事件发生时,iOS会生成对应的响应链, 来查找第一响应对象并进行事件的分发,最后处理事件,完成相应操作。下面我们接着看关于响应链的概念。 响应链,顾名思义,就是有一系列响应对象的集合成的一个层次结构。
iOS面试题主要有:多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原理。实现机制。如何解决tableView卡的问题。block和代理的通知的区别。block的用法需要注意些什么。strong,weak,retain,assign,copy nomatic 等的区别。
事件的传递是从上到下(父控件到子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件到父控件。
iOS面试题:如何关闭默认的KVO的默认实现,KVO的实现原理?
想知道如何手动触发,必须知道自动触发 KVO 的原理:键值观察通知 依赖于 NSObject 的两个方法: willChangeValueForKey: 和 didchangevlueForKey: 。在一个被观察属性发生改变之前, willChangeValueForKey: 一定会被调用,这就 会记录旧的值。
首先会查找该对象是否实现了key、valueForUndefinedKey:或Key这几个方法,如果实现了就直接调用。如果没有实现,则会查找该对象是否有一个名为Key的属性,并返回这个属性的值。如果都没有找到,则会报错。 KVO原理KVO(Key-Value Observing)是iOS中一种用于监听对象属性变化的机制。
KVO的实现原理在于运行时动态创建一个新类作为中间类,修改对象的isa指向新类,同时重写class方法返回原类的Class。这样,KVO能够在对象属性改变时自动通知观察者,实现属性监听功能。
禁止属性KVO时,可通过automaticallyNotifiesObserversForKey返回NO。KVC兼容KVO,当通过KVC调用非属性实例变量时,KVC会触发KVO回调。KVO实现核心基于isa-swizzling技术,动态创建中间类并修改isa指针指向,同时重写class方法以屏蔽中间类。
默认情况下,KVO是通过点语法调用setter方法来触发通知的。但开发者可以通过重写类方法+ (BOOL)automaticallyNotifiesObserversForKey:来将某个属性设置为手动触发模式。在手动触发模式下,开发者需要在属性值变化前后手动调用willChangeValueForKey:和didChangeValueForKey:方法。
深入理解KVC和KVO的工作原理,包括它们的触发机制,以及在不同场景下的应用。面试官可能会抛出一些延伸问题,考验你的理解深度。 GCD与线程:调度的艺术 讲解GCD与线程的关系,以及dispatch_once的使用,掌握如何控制线程并理解并发队列的运作原理。
【秋招】百度:移动软件iOS开发一面二面三面面经
百度移动软件iOS开发秋招一面、二面、三面面试经验如下:一面: 技术基础考察:面试开始会有约5分钟的自我介绍环节。 编程题:需要手撕LeetCode题468。 Swift语言特性:考察可选类型、类与结构体的区别。 软件架构:询问MVC和MVVM的区别。 计算机网络:涉及TCP四次挥手和死锁原理。
在百度的秋招过程中,移动软件iOS开发的面试经历了多轮考验。第一面主要关注技术基础,包括自我介绍(约5分钟)、手撕LeetCode题468(判断IPv4)以及Swift中的可选类型、类与结构体区别、MVC和MVVM的区别等。计算机网络方面,涉及TCP四次挥手和死锁原理。
用队列计算一个树的高度,我说用层次遍历记录节点高度。 24 一个黑名单集合,数据量很大,快速查询一个值是否在集合里,怎么设计,我说布隆过滤器。 25 还是上一题,说这个黑名单可能需要动态地增删改,如何设计才能避免访问响应太慢。我没思路,瞎扯了一下加硬件,用内存存,都被驳回了。然后他说算了。