最近也是有想进行一些工作上的变动,所以也在四处投递简历,主要的岗位还是音视频开发的岗位,毕竟在这个岗位上自己还是会有一点点技术壁垒的。不过其实说实在的,C++方向上我觉得有几个方向真的很不错:流媒体相关、服务器后台相关、游戏相关。这三个方向上对于语言的要求很难发生变化,C++基本可以维持很久的活力。还是把话题转回到面试,主要是投递的还是音视频开发的岗位,面的公司有几个,有几个小公司,感觉参考意义不大,印象比较深的两个公司是:曜科智能和百家云都面了两轮视频面试就没下文了,在线编程,难度相对较高其余的一些面试大多都是通过简历中的一些项目展开的。
曜科智能的在线编程题
请用C++编写一个基于TCP网络通信的“生产者消费者”的小程序, “生产者” 会布置任务给“消费者”,任务的种类有多种(例如打印一个字符串、对两个整数做加法等),但是任务的类型数量不确定。“消费者” 收到任务后就会根据任务的类型执行相关的操作和计算。
PS:虽然打印一个字符串、对两个整数做加法的任务看起来很简单,但假设在这台服务器上需要花费很多的CPU时间。但好在这台服务器有许多CPU核心(n>32), 所以可以用并行计算的方式来处理多个任务。
您编写的程序应同时该满足以下要求:
1.一个生产者,多个消费者,消费者用多线程处理任务,尽可能充分使用所有CPU核心, 生产者连续地随机生成任务通过网络传输给消费者( 如打印字符串任务、整数加法任务)。
2.如果消费者没有收到任何任务,应该保持CPU核心为空闲状态,直到新任务的到达;
3.使用C++ 的多态来支持不同种类的任务需求。
4.一个完整的单文件代码程序,包括include 所使用到的头文件,同时编写main() 函数用于启动您的程序,可以使用第三方库。
5.完整的程序不需要通过编译,但代码要保持语法的正确。
编写时间: (100分钟以内) 19:40 ~ 21:20
这给题我没写完,但封装了好几个类,也写了大致的一些思路,当时我考虑的比较多,我还不知道这一题要考的重点是:实现一个类似kafka这样的消息队列的组件。
百家云的在线编程题:
实现一个函数,输入字符串,返回值是这个字符串中连续字母的个数,示例如下:
输入的字符串: qqqyyyyyavvveqqs
输出结果: q3y5a1v3e1q2s1
这个题相对简单,我做完了。
其他拿到的offer有:
阅维科技 给了25k offer
芯翌智能 给了28k offer
九章云极 给了27k offer
虽然没有达到自己的预期,但是比现在好了不少。
具体问题:
1.一般都是先来一个电话面试问一些基础的东西,eg:语法,数据结构,一些基础组件的原理
2.我项目中用了SRS流媒体服务器,所以问了SRS中的协程与golang中的协程区别
3.我主要是做流媒体服务器,所以问了很多协议和音视频数据格式例如:rtp/rtcp/rtmp/rtsp/hlstp-flv ,mp4/flv[未知表情], 等
音视频编码原理
比如qp控制码率与平均码率的区别 动态qp直
还会问问 idr侦 i侦 区别 前向参考侦 缺失数据以后产生绿块与 部分数据丢失
那块产生画面一部分发生移动 限制码率 一些协议rtm prtsp rtp hls 流媒体服务器的大概工作原理
电话问的就是一些基础的问题
先问问基础的C++ 11的特性都有什么
什么是右值引用
移动拷贝构造函数
移动赋值函数
重载覆盖的区别
c++ 继承哪几种public private protected
c++ 菱形继承
多线程 自旋锁 跟mutex 的区别应用场景
blockqueue 怎么弄的
raii 咋回事
std::shared_ptr scope_ptr unique_ptr 都干啥的什么区别
使用的时候要注意什么的
h264 里头的I B P IDR帧 都是怎么回事
编码的那些baseline high 什么的
码率怎么控的
rtsp 协议怎么个流程 rtp rtcp 协议怎么回事
rtmp协议怎么个流程 数据封装 怎么回事
vp8 vp9编码器用过没 都有什么特性什么的
还问了问tcp 协议的拥塞控制的大概怎么事 udp可靠传输怎么事
怎么分析直播的延迟,从推流-流媒体服务器-拉流播放分析。
大致就是这些,还有些想不大起来了。。。。
然后推荐一个音视频流媒体服务器的学习路线,包含流媒体服务器相关知识的讲解,也包括了Android NDK开发。对于Android开发的朋友,建议先在Windows、Ubuntu、MAC任意一个平台先熟练掌握FFmpeg,再开始Android NDK的开发,这样可以做到事半功倍的效果。
音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:小编整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!~点击832218493加入(需要自取)