iOS面试题 --- 中级

1,171 阅读2分钟

最近在准备ms,发现了一些比较尖锐的问题,可能平时开发注意不要,自己也会但是就是不能清晰的表达出来,问题比较宽泛再此做个总结(下面附部分答案,答案为自己理解结合百度,可能有些不标准欢迎各位提出意见)。问题持续更新,答案也持续更新。欢迎投稿。这些都会了我觉得找工作应该没问题了。这些知识是一些简单的点,真正面试的时候肯定会有比这儿更深的层次,这只是引出一个问题的点。还是需要多学习

iOS底层

  1. KVO的实现原理,KVC是什么,他是如何实现的
  2. 请简单介绍一下Runtime,以及它的原理和应用(消息发送机制,动态解析。应用防止崩溃)
  3. 什么是block?(堆block,栈block,全局block)
  4. weak的实现原理。
  5. 通知和代理的区别。
  6. 说说你读过的第三方库工作流程。
  7. oc类的本质是什么?他的结构是什么,他是如何初始化的。
  8. Swift类的初始化发生了什么

架构

  1. 谈谈MVC,MVVM,MVP的三种架构各自的优缺点。

设计模式

  1. 适配器
  2. 装饰器
  3. 迭代器
  4. 工厂模式,抽象工厂,简单工厂模式的区别
  5. 对象池(可选)
  6. 适配器
  7. 代理
  8. 单例的优缺点

...

网络相关

  1. 什么是http,它与https的区别
  2. tcp和udp的区别,介绍一下三次握手,四次挥手,为啥连接要三次,断开要四次挥手
  3. alamofire或者AFN的证书认证。

线程

  1. 什么时候会造成线程死锁
  2. Runloop是什么以及它的工作流程
  3. NSOperation和GCD的区别。
  4. 线程与进程的区别。

数据结构与算法

  1. 链表是什么,如何确定链表有环
  2. 如何用队列实现一个栈,或者用栈实现一个队列。
  3. 二分法查找的实现流程
  4. 说说你知道的排序算法的实现以及他们的时间复杂度,以及稳定性。