当前位置:轶方文库网 > 专题范文 > 公文范文 >

高级ios工程师面试题,菁选2篇(范文推荐)

时间:2023-02-03 09:30:05 来源:网友投稿

高级ios工程师面试题1  1.怎么修改只读(readonly)属性变量  使用KVC可以修改kvc就是键值编码(key-value),可以通过指定的key获得想要的值value,而不是通过调用Se下面是小编为大家整理的高级ios工程师面试题,菁选2篇(范文推荐),供大家参考。

高级ios工程师面试题,菁选2篇(范文推荐)

高级ios工程师面试题1

  1. 怎么修改只读(readonly)属性变量

  使用KVC可以修改 kvc就是键值编码(key-value),可以通过指定的key获得想要的值value,而不是通过调用 Setter,Getter 方法访问

  2.KVO 除了能观察属性外,能不能观察对象

  不能观察对象

  KVO,即 Key-Value Observing, 它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察者的对象的属性被修改后,KVO就会自动通知相应的观察者了

  KVO是一个对象能过观察另外一个对象的属性的值,并且能够发现值的变化。这是一个对象与另一个对象保持同步的一种方法,即当另一种对象的状态发生改变时,观察对象马上做出反应。它只能用来对属性做出反应,而不会用来对方法或者动作做出反应。

  实现原理:当为某个对象属性注册监听的时候,该对象的` isa 指针就会指向一个中间类,而不是本来对象真实的类。所以说,对象的 isa 指针可以改变,我们的程序最好不要依赖 isa 指针。

  简言而之就是:

  1.当一个 object 有观察者时没动态创建这个 object 的类的子类

  2.对于每一个被观察的 property, 重写其 set 方法

  3.在重写的 set 方法中调用- willChangeValueForKey:和- didChangeValueForKey:通知观察者

  4.当一个 property 没有观察者时,删除重写方法

  5.当一个 boserver 观察任何一个 property 时,删除动态创建的子类

  3.block里面能不能修改静态变量

  能 __block 可以 ---> 为什么要用__block

  你可以指定引入一个变量为可更改的,即读-写的,通过应用__block存储类型修改修饰符。

  局部变量的__block的存储和register,auto,static等存储类型相似,但它们之间不兼容。

  __block 变量保存在变量共享的作用域范围内,所有的 blocks 和 block 副本都声明或创建在和变量的作用于相同范围内。所以,如果任何 blocks 副本声明在栈内并未超出栈的结束时,该存储会让栈帧免于被破坏(比如封装为以后执行)。同一作用域范围内给定的多个 block 可以同时使用一个共享变量作为一种优化, block 存储在栈上面,就像blocks本身一样。如果使用 Block_copy 拷贝了 block 得一个副本(或者在 objective-C里面给 block 发送了一条 copy 消息),变量会被拷贝到堆上面。所以一个__ block 变量的地址可以随时间推移而更改。

  使用 __block的变量有两个限制:

  1.它们不能是可变长的数组

  2.它们不能是包含有 C99可变疮毒的数组变量的数据结构

高级ios工程师面试题2

  1.你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?

  2.你实现过多线程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?

  3.Core开头的系列的内容。是否使用过CoreAnimation和CoreGraphics。UI框架和CA,CG框架的联系是什么?分别用CA和CG做过些什么动画或者图像上的内容。(有需要的话还可以涉及Quartz的一些内容)

  4.是否使用过CoreText或者CoreImage等?如果使用过,请谈谈你使用CoreText或者CoreImage的体验。

  5.NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了…)

  6.你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和G.C.D的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。

  7.既然提到G.C.D,那么问一下在使用G.C.D以及block时要注意些什么?它们两是一回事儿么?block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么?

  8.您是否做过异步的网络处理和通讯方面的工作?如果有,能具体介绍一些实现策略么?

  9.对于objective-c,你认为它最大的优点和最大的不足是什么?对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。如果可以的话,你有没有考虑或者实践过重新实现OC的一些功能,如果有,具体会如何做?

  10.你实现过一个框架或者库以供别人使用么?如果有,请谈一谈构建框架或者库时候的经验;如果没有,请设想和设计框架的public的API,并指出大概需要如何做、需要注意一些什么方面,来使别人容易地使用你的框架。

推荐访问:面试题 工程师 高级 高级ios工程师面试题 菁选2篇 高级ios工程师面试题1 高级ios工程师面试题10 高级ios工程师面试题1题 高级ios工程师面试题1分钟