iOS面试题-基础篇

BAT的一些基础面试图

  1. 分类和扩展有什么区别?可以分别用来做什么?分类有哪些局限性?分类的结构体里面有哪些成员?
  1. 讲一下atomic的实现机制;为什么不能保证绝对的线程安全(最好可以结合场景来说)?
  1. 被weak修饰的对象在被释放的时候会发生什么?是如何实现的?知道sideTable么?里面的结构可以画出来么?
  1. 关联对象有什么应用,系统如何管理关联对象?其被释放的时候需要手动将所有的关联对象的指针置空么?
  1. KVO的底层实现?如何取消系统默认的KVO并手动触发(给KVO的触发设定条件:改变的值符合某个条件时再触发KVO)?
  1. Autoreleasepool所使用的数据结构是什么?AutoreleasePoolPage结构体了解么?
  1. 讲一下对象,类对象,元类,跟元类结构体的组成以及他们是如何相关联的?为什么对象方法没有保存的对象结构体里,而是保存在类对象的结构体里?
  1. class_ro_t 和 class_rw_t 的区别?
  1. iOS 中内省的几个方法?class方法和objc_getClass方法有什么区别?
  1. 在运行时创建类的方法objc_allocateClassPair的方法名尾部为什么是pair(成对的意思)?
  1. 一个int变量被__block修饰与否的区别?
  1. 为什么在block外部使用weak修饰的同时需要在内部使用strong修饰?
  1. RunLoop的作用是什么?它的内部工作机制了解么?(最好结合线程和内存管理来说)
  1. 哪些场景可以触发离屏渲染?
看到这就是真爱,打个赏呗~