一面

算法题

会一行一行讲,也会问时间复杂度,以及优化

  1. 最近公共父节点
    两个节点,都可能为null,都可能不在树上。
  2. 反转链表
    常规题

其他

  1. HTTP了解吗?HTTP2.0介绍下
  2. iOS9-13,每个版本讲一个特性
  3. 怎么实现多个任务执行完后,再统一处理(应该是同步阻塞、栅栏函数、调度组。中间那个没答)
  4. 夜间模式怎么实现的?除了通知的方式,有什么更优雅的方式吗?
  5. 图片怎么加载的?(SDWebImage)
  6. 不让用SDWebImage,如何实现类似逻辑 (自己设计图片请求和缓存,简单讲了SDWebImage的思路)
  7. 每个TableViewCell都有一个UIImageView要加载图片,如果没有缓存,有五个Cell请求一个url,同时发请求肯定是不实际的,如何处理?
  8. 微信TableView滑动的时候,动图是不动的,为什么?(Runloop的Mode决定的)
  9. 有了解过WebSocket吗?(没有…)
  10. 线程安全的处理手段有哪些?把你想到的都说一下

二面

算法题

  1. 如何不试用递归,打印所有一个UIView所有的subviews(包括孙子view等)
  2. 设计一个图片缓存系统,并代码实现
    清理缓存应该用LRU,我不会…

其他

大部分是计网+多线程

  1. 介绍了Melton(面试官最后默默来了句,还算是讲清楚了)
  2. 七层协议栈
  3. HTTP是哪一层的协议
  4. HTTP常见的返回码有哪些?
  5. HTTP除了GET、POST还有哪些?(UPDATE、DELETE、HEAD)
  6. HTTPS介绍一下
  7. HTTPS能防止中间人攻击吗?(答了可以,答案应该是可以)
  8. TCP和UDP的区别
  9. 线程和进程的区别
  10. 线程之间如何进行通讯
  11. 不使用gcd,如何保证线程安全?
  12. 怎么实现多个任务执行完后,再统一处理(重复)
  13. iOS有哪些多线程方式?(NSOperation、NSThread、GCD)
  14. 同步和异步有什么区别?
  15. 串行队列和并行队列有什么区别?
  16. 队列和线程的关系
  17. 死锁是怎么产生的?(四个条件只说了三个…)
  18. 你有什么要问我的

三面

算法题

  1. 合并排序链表

其他

  1. HTTPS用的对称加密还是非对称加密?
  2. TCP的慢启动,快恢复介绍下
  3. 客户端发送网络请求,到拿到响应的整个过程(类似打开一个网页的过程)
  4. 接上题,如果DNS解析的时候,某个ISP服务器没有了,这时候逻辑是怎样的?(不会,面试官说会通知其他节点,还提到了ARP协议…)
  5. 介绍了下简历上写的字典转模型的设计+夜间模式的设计
  6. 为什么不用成熟的字典转模型的三方?有了解过吗?(了解一点,有YYModel,但没用过)
  7. 夜间模式有什么缺点,能怎么优化?(从初始化的时候设置值,改为用配置文件。再就不会了)
  8. 锁有哪些?(只答出了NSLock、SpinLock…)
  9. 遇到哪些小坑?内存相关的有吗?
  10. 我看你简历写了数据存储,怎么存的(FMDB)
  11. 自己写的LoadingView怎么做的(用UIImage的animationImages…)
  12. 线程安全错误是怎么出现的?(面试官解释:先读到寄存器…就出现了错误)
  13. 你有什么要问我的