iOS 面试题

688 阅读2分钟

OC

  • #import 跟 #include 有什么区别,@class 呢?#import<> 跟 #import"" 有什么区别?
  • frame 和 bounds 有什么区别?UView 和 CALayer 有什么区别?
  • self 和 super 有什么区别?self. 跟 self-> 什么区别?
  • OC 的类可以多重继承么?没有的话用什么代替?OC 是如何控制代码访问权限的?
  • @property 的本质是什么?@property 中有哪些属性关键字以及作用?
  • Delegate 和 Notification 的区别?发/收通知是同步还是异步的?Notification 中的参数 object 和 userinfo 有什么区别?页面销毁时不移除通知会崩溃吗?
  • 用 @property 声明的 NSString、NSArray、NSDictionary 经常使用 copy 关键字,为什么不用 strong 关键字,可能造成什么问题?浅拷贝和深拷贝的区别?
  • OC 如何进行内存管理的?
  • OC 中 Category 和 Extension 的区别?
  • +load 方法和 +initialize 方法的区别?
  • OC 访问空指针会发生什么?nil、Nil、NULL、NSNull 有什么区别?
  • OC 的一个方法调用是怎样的过程?如果没有找到这个方法,是如何处理的?

Swift

  • Swift 和 OC 有什么区别?
  • unowned 和 weak 有什么区别?
  • struct 和 class 有什么区别?
  • 访问控制关键字有哪些(比如:public...),分别代表什么含义?
  • OC 和 Swift 混编该怎么做?
  • 你是如何使用 enum 的,用过 Result 吗?
  • Collection 的 map、filter、reduce、compactMap、flapMap 分别有什么作用?
  • guard 和 defer 分别有什么用?
  • try、try?、try! 和 throws、rethrows 有什么区别?
  • extension 中如何添加一个属性,用什么参数实现,有什么需要注意地方吗?
  • Swift 中 Array 如何去重并保持顺序不变?

iOS

  • UIViewController 的完整生命周期?
  • UITableView 的复用机制是怎样的,有尝试过优化性能吗?
  • 用过 GCD 的哪些函数,分别用来做什么?
  • 你有了解 RunLoop 吗,请说说使用场景?
  • KVO 底层实现原理?手动触发 KVO?Swift 如何实现 KVO?
  • 用过的数据持久化方案有哪些?
  • 你有封装过 SDK/库 吗?是如何封装的?
  • 了解过 iOS 的事件处理机制吗?响应者链是如何传递的?
  • App 启动优化策略?main 函数执行前后怎么优化?
  • 内存泄露的场景?如何防止?
  • crash 的出现场景?如何防护?
  • weak 的实现原理?
  • 了解过 runtime 吗?说说使用场景?
  • 常用过哪些第三方库?用来做什么?有了解过内部实现代码吗?
  • 了解/使用过的设计模式有哪些?说说你的理解?
  • 了解/使用过的架构有哪些?说说你的理解?
  • 一个 App 的开发和上架流程是怎样的?你在审核中有遇到什么问题吗,是如何处理的?
  • 讲一下你曾经觉得自己做得比较好的地方?不限于 封装代码、实现功能、处理思路等。