某运动相机公司二面

投票
1. 介绍一下你这个多路解码模块的业务背景和主要功能?
2. 讲一下你的内存池是怎么设计的?
3. 你前面提到你用到了共享内存做IPC通信,为什么?
4. 你的共享内存是用SPCS队列实现的,能展开说一下这个队列是如何设计的吗?
5. 为什么用SPSC,了解MPMC的实现原理吗?讲讲如何选型?
6. 你的SPSC会不会出现ABA问题?为什么?
7. 为什么你的SPSC队列要预先申请N+1个位置?
8. 你的SPSC队列是如何判断空或者满的?
9. 你在这个项目过程中是如何考虑性能优化的,讲讲思路?
10. 你的SPSC队列如果出现生产者生产速度远快于消费速度?你是怎么处理的?(要么无界队列,但不是很合适因为内存不确定;有界队列做滚动会更好)
11. 你提到你的SPSC队列满了,你需要做滚动操作,你是怎么做的?
12. 如果你滚动时,消费者还在使用这个旧数据怎么办?(生产者速度不会很快,因为视频流严格按20FPS生产,消费时我们在消费队列前端确保消费速度严格大于生产速度,处理不过来也要取帧后丢弃)
13. 上面这个问题,有考虑过通过锁+同步来处理吗?(不会这么做,锁+同步在这个高频调用的情况下容易锁竞争,性能影响大)
14. 聊聊你的播放器项目,先讲讲整体架构吧
15. 你提到更多考虑设计模式,能讲讲你会如何做?(音视频场景可以考虑模板方法设计模式,因为音视频处理都是流水线,具体操作通过虚函数实现,不同芯片子类继承和重写)
16. 有做过跨客户端平台的SDK开发吗?如果让你来设计,你会怎么考虑?
反问环节:
1. 前面我们聊到的SPSC队列来做音视频传输,从您的角度看怎么做会更优?
面试官: SPSC队列本身是很好的设计,旧数据的滚动也是必要的,但我可能更多地希望做到一个优雅且外部无感的滚动逻辑...(没有解释得太细)
2. 您在SDK开发和设计过程中,会考虑哪些设计模式来做外部接口和内部实现的隔离?
面试官:
3. 您这边提到用自动化脚本做模块开发,您是用单个agent来做还是multi-agents来做,您是如何考虑的?
4. 您觉得对于这个岗位我还需要学习和了解哪些知识?让您推荐一本书,您会推荐什么?
面试官:跨平台相关的知识吧,比如安卓、ios、windows、macOS等;像《macOS X技术内幕》、《深入理解Android:Java虚拟机ART》、《Windows 核心编程》

整体偏工程,无手撕,感觉难度一般吧。第二天上午告知通过并安排三面,希望能过。
全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务