头条iOS面试总结

一面

  • 自我介绍

  • 项目相关

  • 怎么自定义导航跳转

  • 谈谈runtime的理解

  • KVC的用途

  • 使用method swizzling要注意什么?(进行版本迭代的时候需要进行一些检验,防止系统库的函数发生了变化)

  • 谈对引用计数的理解

  • 谈谈runloop的理解

  • runloop有哪些状态

  • autoreleasepool的使用场景

  • TableView优化,怎么减少卡顿

  • copy assign retain weak关键词

  • JSON转Model

  • 代码布局

  • 多屏幕适配

  • HTTP2

  • HTTP请求头和响应头

  • Cookie

  • NSCache

  • 自己设计一个缓存器

  • 怎么实现LRU

  • SDWebImage

  • 二叉树先序遍历(递归和非递归)

二面

  • MVC的一些缺点

  • 讲一讲其它架构

  • 你知道哪些编码方式

  • 算法字符串翻转

  • 多线程的方式和它们的区别

  • 队列和线程的关系

  • 一道线程安全的题

  • 有哪些锁

  • 属性的关键字

  • assign可以用于OC对象吗

  • copy和strong的区别

  • weak如何实现自动赋nil

  • 为什么不可变对象要用copy

  • assing可以使用在对象中吗

  • Pod update和pod install的区别

  • layoutIfNeeded和setNeedsLayout的区别

  • 抓包工具抓取HTTPS的原理

  • isEquel和hash的关系

  • bitmap的结构

  • 可变数组的实现原理

  • 如何hook一个对象的方法,而不影响其它对象

  • 如何避免if else

  • 自旋锁和互斥锁的区别

三面

  • 介绍项目,主要介绍自己强项一点的地方

  • 数组cop后里面的元素会复制一份新的吗

  • 数组的浅拷贝与深拷贝

  • TCP为什么是三次握手和四次挥手

头条一直都是视频面,而且是一条龙服务。总体来说感觉不错,反正主要就是需要基础足够扎实