抖音iOS面试20190716
一面
算法题
会一行一行讲,也会问时间复杂度,以及优化
- 最近公共父节点
两个节点,都可能为null,都可能不在树上。 - 反转链表
常规题
其他
- HTTP了解吗?HTTP2.0介绍下
- iOS9-13,每个版本讲一个特性
- 怎么实现多个任务执行完后,再统一处理(应该是同步阻塞、栅栏函数、调度组。中间那个没答)
- 夜间模式怎么实现的?除了通知的方式,有什么更优雅的方式吗?
- 图片怎么加载的?(SDWebImage)
- 不让用SDWebImage,如何实现类似逻辑 (自己设计图片请求和缓存,简单讲了SDWebImage的思路)
- 每个TableViewCell都有一个UIImageView要加载图片,如果没有缓存,有五个Cell请求一个url,同时发请求肯定是不实际的,如何处理?
- 微信TableView滑动的时候,动图是不动的,为什么?(Runloop的Mode决定的)
- 有了解过WebSocket吗?(没有…)
- 线程安全的处理手段有哪些?把你想到的都说一下
二面
算法题
- 如何不试用递归,打印所有一个UIView所有的subviews(包括孙子view等)
- 设计一个图片缓存系统,并代码实现
清理缓存应该用LRU,我不会…
其他
大部分是计网+多线程
- 介绍了Melton(面试官最后默默来了句,还算是讲清楚了)
- 七层协议栈
- HTTP是哪一层的协议
- HTTP常见的返回码有哪些?
- HTTP除了GET、POST还有哪些?(UPDATE、DELETE、HEAD)
- HTTPS介绍一下
- HTTPS能防止中间人攻击吗?(答了可以,答案应该是可以)
- TCP和UDP的区别
- 线程和进程的区别
- 线程之间如何进行通讯
- 不使用gcd,如何保证线程安全?
- 怎么实现多个任务执行完后,再统一处理(重复)
- iOS有哪些多线程方式?(NSOperation、NSThread、GCD)
- 同步和异步有什么区别?
- 串行队列和并行队列有什么区别?
- 队列和线程的关系
- 死锁是怎么产生的?(四个条件只说了三个…)
- 你有什么要问我的
三面
算法题
- 合并排序链表
其他
- HTTPS用的对称加密还是非对称加密?
- TCP的慢启动,快恢复介绍下
- 客户端发送网络请求,到拿到响应的整个过程(类似打开一个网页的过程)
- 接上题,如果DNS解析的时候,某个ISP服务器没有了,这时候逻辑是怎样的?(不会,面试官说会通知其他节点,还提到了ARP协议…)
- 介绍了下简历上写的字典转模型的设计+夜间模式的设计
- 为什么不用成熟的字典转模型的三方?有了解过吗?(了解一点,有YYModel,但没用过)
- 夜间模式有什么缺点,能怎么优化?(从初始化的时候设置值,改为用配置文件。再就不会了)
- 锁有哪些?(只答出了NSLock、SpinLock…)
- 遇到哪些小坑?内存相关的有吗?
- 我看你简历写了数据存储,怎么存的(FMDB)
- 自己写的LoadingView怎么做的(用UIImage的animationImages…)
- 线程安全错误是怎么出现的?(面试官解释:先读到寄存器…就出现了错误)
- 你有什么要问我的
- 本文链接:http://katherineleeyq.cn/2019/07/16/抖音iOS面试20190716/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!