# 头条一面
- 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为什么是三次握手和四次挥手
- 基本就是走走形式了,主要就是问了一些个人方面的东西。。。。。
# 一面
- 介绍自己
- 询问了与简历上项目相关的一些事情。比如你印象最深刻的一个项目。
- 可能是觉得我自己介绍的还不够充分把,让我补充评价一下我自己。
- 因为在介绍项目的时候提到了,其中一个项目经历了MVC到MVVM的“重构”,让我介绍了一下。
- 问了一下知道KVO和KVC吗?底层原理呢?
- 知道runtime吗?介绍一下runtime怎么工作的?还能做些什么?
- property的默认参数
- 快排的思想?怎么实现(说思路)?复杂度是多少?归并呢?
- [算法]给出两个字符串,只包含字母,本身会有重复。求s1和s2的重复字符。
- 脑筋急转弯 4个人过桥,只有1个手电筒(没有手电摔死人哦),只能同时2人同时过。4人过桥时间分别为1 2 5 10,问最短需要多少时间?
【哎这里又丢人了有木有。面试的时候千万别立flag!面试官小哥哥可能看我说排序的时候很流利,在出算法题的时候就停顿了一小会,我就说了句,“其实我准备的很仓促,算法题也就简单刷了刷。” 面试官:你刷过算法啊那这个绝对没问题!】 然后我就遇到了这个没见过的东西。没(you)写(hua)完(hen)整(lan)。最后在面试官的提示下,根据新思路说了下自己的想法就过了。
然后就是提问环节。我询问了一下这边的主要职责(一开始有点卡,没听到),工作强度,工作地点和氛围。
# 二面
一面结束之后我以为很晚了会直接另外约时间,面试官说稍等一下去找一下二面的面试官,如果没时间再另约。等了不到5分钟那头就有反应了。见到了二面面试官。面试官感觉是有一定工作年限的人了,因为问的问题跟一面不太一样。
一上来先问一面面试官是否介绍过这边的工作,说这边是做的音视频相关,同时给抖音火山以及整个头条提供技术支持的。然后问以后是否能全职在北京工作?(可能是因为我一面结束的时候问了地点。但这个当然只能答能啦…前途更重要嘛…实在不行再说咯…)
- 以前都做过什么项目?觉得怎么样?
- 做过音视频相关的东西吗?
- 会用C++吗?
- (中间停顿了一下,临时插入的)为什么做iOS?没有考虑别的编程语言?
- 在iOS上对自己的职业规划有什么打算?
- 说一下iOS里面的事件响应链吧。
- 说一下iOS的内存管理机制?(我简单说了下MRC ARC,栈堆的区别和怎么回收)
- 简单的数据结构知道吗?手撸一下链表结构吧,再写个插入和链表反转。(基础很重要啊,插入和反转都没啥问题,差点忘了怎么完整定义一个node哈哈哈)
可能是因为比较赶时间吧,关于OC的问题不是很多。这时候也出现了网络波动。也就没有做别的代码题了。到了问答环节。
“那我觉得我们今天就到这里吧”
面试官的开头是这样的…我以为自己挂了有木有…然后面试官说可以提一些问题。我询问了一下像我这种准备入行iOS开发的小菜鸟的职业规划和移动开发的未来。
最后面试官说太晚了,看看再找时间约下一面吧。
希望不是敷衍我哈哈。(因为二面的时候网络各种不好…音视频向的东西我说没怎么做过…可能也会因为这个原因把我pass了吧。不过尽力咯。)