iOS面试题汇总(网易/拼多多/爱奇艺)

最近因为一些原因,离开饿了么-物流BU,出去面试了几家,包括拼多多、哒哒英语、爱奇艺、网易等,见到了彪哥和包哥,被你们虐了一顿,我表示很爽😂,也感谢你们给的机会,在这里对本次面试遇到的题目做一下总结,里面还是有一些自己不知道的地方,也希望自己好好整理一下知识点,记录一下。

面试问到的知识点简单分为几类,包括编程语言及iOS的特性、第三方库、网络、算法、具体业务问题、闲聊,也有些问题我已经忘记了,想起来的时候再加进去吧,后面我也会给出自己的理解和答案,如果有一些不对的,还请轻喷。

编程语言及iOS的特性

这是iOS开发的基础,也很多底层的东西,主要考察对语言和系统的掌握能力。这类问题也比较多,毕竟找的是iOS开发的工作,双方对这方面的了解也相对最多多一点,所以能聊的东西不少,上题目吧。

  • 内存泄漏和野指针的区别
  • property后的关键字相关,注意copy
  • block用什么修饰
  • nsstring和nsarray用strong修饰会有什么问题
  • iOS的内存管理机制
  • 什么时候会出现循环引用,__weak、__strong、__block分别是什么作用
  • 说一下autoreleasepool
  • autoreleasepool怎么做到释放对象的
  • nil Nil null NSNull的区别
  • oc中调用nil的方法会返回nil或0,但有些时候有特殊情况,不是真正意义上的空/0,举例
  • 返回struct的方法并没有走send message,走的什么
  • 列举修饰符中,内存管理相关关键字及其作用
  • Category中使用@property方式添加的属性,实质是什么?支持KVO吗?
  • isa指针是什么
  • meta-class是什么
  • NSDictionary的实现
  • OC调用C++ 的方式有哪些
  • runloop的理解,几种模式优先级排序
  • runloop是怎么实现的
  • iOS中有哪些方法创建线程
  • gcd once怎么保证once
  • GCD串行/并行队列以及sync/async的问题
  • 比较一下线程操作的gcd和nsoperation
  • OC中提供哪些可扩展的方式
  • 动态库和静态库的区别有哪些
  • displaylink和timer的区别
  • 如何自己实现timer
  • 不用runtime中的exchange,还有什么方法能达到hook的效果
  • 用runtime交换方法,有些情况下,可能会出问题,怎么解决的
  • iOS的响应链(详细过程),可以用什么方法影响到响应链
  • iOS的锁有哪些?介绍一下自旋锁
  • 描述一下OC的编译过程

第三方库

问第三方库相关的问题,一般首先会让你挑一个你熟悉的几个第三方库,深入的问底层实现,平时做业务不要浮在表面上,只是使用第三方库就好了。

  • RAC中的冷信号和热信号是什么,有什么区别
  • RAC的Subject和Signal的区别
  • RAC中如何监听方法调用的
  • RAC中的RACObserver和KVO有什么区别
top Created with Sketch.