一面
1、先简单自我介绍一下自己
2、对mrc和arc的理解
3、谈谈对自动释放池的理解
4、自动释放池在mrc和arc区别
5、多层自动释放池嵌套的对象在哪一层释放
6、对于block,理解,mrc和arc下有什么区别,使用注意事项
7、对于深拷贝和浅拷贝的理解
8、对于strong weak,atomic等等理解
9、weak原理
10、如果属性完全不加修饰词入weak,atomic,系统会怎么处理
11、简述下block的实现
12、描述下IM系统如何保证消息不丢
13、IM数据库如何设计表
14、C++引用和指针有什么区别
15、Http协议30x的错误是什么
16、谈谈你懂runloop得理解:由浅入深
17、谈谈对多线程理解:由浅入深
18、谈谈category和extension区别,系统如何底层实现category
19、谈谈消息转发机制实现
20、谈谈事件响应链,如何响应view之外的事件
21、界面性能优化
二面
1、开头都是简短的自我介绍
2、聊一聊过往项目中你觉得收获最大的一个模块。
答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。引申到的新话题还涉及到了增量更新,内存缓存,本地缓存。细节上还谈到了富文本绘制,Coretext框架的使用
3、上个项目中存在视频裁剪,录制等功能,面试官对这块有些兴趣,就聊到了视频裁剪的实现,因为我们项目中使用了ffmpeg做的裁剪功能。包括视频下载,数据裁剪封装,引申聊到了边预览边裁剪
4、期间简单谈到了rstp协议,和HLS,rtmp等协议的对比,信令协议。
5、视频盒子断线如何检测做处理,什么原因导致的?
6、项目做过视频播放需求,使用的AVPlayer框架,AVPlayer怎么监听视频缓冲状态的,有哪几种状态?这个需求遇到过哪些坑,怎么解决的?
7、发散问到如果网络不好,首帧出图之后,如何优化后续播放不卡顿
8、项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。
9、最后给出了一个非常有意思的算法题:
有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒?
答:开始我想到的是常规思路二分法,717,和面试官说了,发现四只老鼠根本不够,面试官友好的提示从老鼠面去想,这时候很快想到了一个老鼠有死和不死,也就0和1两个状态,四只老鼠有16个组合,正好是足够的。
全部评论
(2) 回帖