【字节跳动】C++岗-多媒体开发实习(视频架构组)
基本情况介绍
暑假将近,最近半个月突然有了紧迫感,便开始找实习,第一个投的就是头条
内推是在boss直聘上面直接联系的,很快就有了回复,没有笔试直接约了面试时间
楼主之前没有互联网公司实习经验,基本上是在实验室打杂
简历上写了两个个人项目,一个是图像编解码,一个是自动问答系统。
然后就是hackthon,数模,app比赛了。
第一轮(45min)
基础题为主,没有问项目
- 自我介绍
- 为什么tcp4次挥手
- virtual function 机制
- TCP/IP协议族介绍
- 进程通信方法
- vector的实现
还有一些,不过都是基础题。
- 手写两个基础算法:
- 层序遍历二叉树
- 链表的归并排序
还有什么问题?
- 问了进组之后能够接触的业务量大小
- 组内视频架构基于是否基于开源项目,基于什么开源项目?
面完之后问我后面还有时间吗?我回答能不能改天,于是就约了三天后
第二轮(1h)
- 自我介绍,这一轮比较详细,面试官多次打断,问了一些项目的问题,大概25分钟
- 如何检测视屏流中的场景切换,我提了motion vector和基于 Y channel 的 histogram 计算熵值的方法
- 画一画线程状态机
- ping 发生了什么, 我答到ICMP就被中断了
- ARP协议, NAT协议
- PNG/PNG-8有损无损,如何实现
- 视屏传输为啥要用YUV不用RGB: 主要是down sample, luminance 重要性大于chrominance
- 聊一聊C++是如何实现debug模式的,我答了一下debug模式下加的debug header 对编译后的文件的影响
- 手写两个基础算法:
- 动态规划路径数量
- 翻转链表
第三轮(二面结束后5分钟,45min)
- 一上来盯着项目的几个细节问问题,比如:
- 为什么jpeg不用FFT用DCT
- 讲讲DWT
- 你如何实现的XXX等等
- 之后问了几个非主流的C++题目,大概是:
- c++的一些未定义动作: delete ,delete[] 析构继承体系中有virtual 析构函数的对象,编译器的坑
- 通过内存越界修改其他作用域中的变量
- 写算法:
- 一个unsorted array, 输出第k小的数,平均复杂度尽可能小。
- 给了一个O(n) 基于partition的递归
- 画风突变:
今后的职业规划 我(黑人问号?) 于是开始愉快的聊天
HR(三面结束后,15min)
- 聊了聊你简历中间的一些经历
- 让我做好头条实习强度的准备
总结
整体来说,面试难度是逐层递加的。头条面试的效率很高,从投递约时间到拿到offer在一周之内。可能是实习,开发岗,对算法的要求不算高,除了三面小哥一个刁钻的问题外楼主基本上还是回答出来,并做了一些follow up。