# 头条一面

  • MVC的一些缺点
  • 讲一讲其它架构
  • 你知道哪些编码方式
  • 算法字符串翻转
  • HTTPS
  • 多线程的方式和它们的区别
  • 队列和线程的关系
  • 一道线程安全的题
  • 有哪些锁
  • 属性的关键字
  • assign可以用于OC对象吗
  • copy和strong的区别
  • weak如何实现自动赋nil
  • 为什么不可变对象要用copy
  • assing可以使用在对象中吗

# 头条二面

  • Pod update和pod install的区别
  • layoutIfNeeded和setNeedsLayout的区别
  • 抓包工具抓取HTTPS的原理
  • isEquel和hash的关系
  • SD的源码
  • bitmap的结构
  • 可变数组的实现原理
  • 如何hook一个对象的方法,而不影响其它对象
  • 如何避免if else
  • 自旋锁和互斥锁的区别

# 头条三面

  • 介绍项目,主要介绍自己强项一点的地方
  • 数组cop后里面的元素会复制一份新的吗
  • 数组的浅拷贝与深拷贝
  • TCP为什么是三次握手和四次挥手
  • 基本就是走走形式了,主要就是问了一些个人方面的东西。。。。。

# 一面

  1. 介绍自己
  2. 询问了与简历上项目相关的一些事情。比如你印象最深刻的一个项目。
  3. 可能是觉得我自己介绍的还不够充分把,让我补充评价一下我自己。
  4. 因为在介绍项目的时候提到了,其中一个项目经历了MVC到MVVM的“重构”,让我介绍了一下。
  5. 问了一下知道KVO和KVC吗?底层原理呢?
  6. 知道runtime吗?介绍一下runtime怎么工作的?还能做些什么?
  7. property的默认参数
  8. 快排的思想?怎么实现(说思路)?复杂度是多少?归并呢?
  9. [算法]给出两个字符串,只包含字母,本身会有重复。求s1和s2的重复字符。
  10. 脑筋急转弯 4个人过桥,只有1个手电筒(没有手电摔死人哦),只能同时2人同时过。4人过桥时间分别为1 2 5 10,问最短需要多少时间?

【哎这里又丢人了有木有。面试的时候千万别立flag!面试官小哥哥可能看我说排序的时候很流利,在出算法题的时候就停顿了一小会,我就说了句,“其实我准备的很仓促,算法题也就简单刷了刷。” 面试官:你刷过算法啊那这个绝对没问题!】 然后我就遇到了这个没见过的东西。没(you)写(hua)完(hen)整(lan)。最后在面试官的提示下,根据新思路说了下自己的想法就过了。

然后就是提问环节。我询问了一下这边的主要职责(一开始有点卡,没听到),工作强度,工作地点和氛围。

# 二面

一面结束之后我以为很晚了会直接另外约时间,面试官说稍等一下去找一下二面的面试官,如果没时间再另约。等了不到5分钟那头就有反应了。见到了二面面试官。面试官感觉是有一定工作年限的人了,因为问的问题跟一面不太一样。

一上来先问一面面试官是否介绍过这边的工作,说这边是做的音视频相关,同时给抖音火山以及整个头条提供技术支持的。然后问以后是否能全职在北京工作?(可能是因为我一面结束的时候问了地点。但这个当然只能答能啦…前途更重要嘛…实在不行再说咯…)

  1. 以前都做过什么项目?觉得怎么样?
  2. 做过音视频相关的东西吗?
  3. 会用C++吗?
  4. (中间停顿了一下,临时插入的)为什么做iOS?没有考虑别的编程语言?
  5. 在iOS上对自己的职业规划有什么打算?
  6. 说一下iOS里面的事件响应链吧。
  7. 说一下iOS的内存管理机制?(我简单说了下MRC ARC,栈堆的区别和怎么回收)
  8. 简单的数据结构知道吗?手撸一下链表结构吧,再写个插入和链表反转。(基础很重要啊,插入和反转都没啥问题,差点忘了怎么完整定义一个node哈哈哈)

可能是因为比较赶时间吧,关于OC的问题不是很多。这时候也出现了网络波动。也就没有做别的代码题了。到了问答环节。

“那我觉得我们今天就到这里吧”

面试官的开头是这样的…我以为自己挂了有木有…然后面试官说可以提一些问题。我询问了一下像我这种准备入行iOS开发的小菜鸟的职业规划和移动开发的未来。

最后面试官说太晚了,看看再找时间约下一面吧。

希望不是敷衍我哈哈。(因为二面的时候网络各种不好…音视频向的东西我说没怎么做过…可能也会因为这个原因把我pass了吧。不过尽力咯。)