7月1日投了字节跳动,然而直到提前批结束都没有收到一面通知,以为是挂了,没想到在7月18日收到了一面通知,然而当时自己很劳累,本来想推迟,结果没想到面试官也因为有事所以直接推迟了一面。于是乎实际一面是7月22日,二面是7月26日,三面是7月28日。
字节跳动面试(一面)反思记录
问题记录
1. C++中的虚函数是用来干什么的
2. 多线程和多进程的区别
3. 32位和64位操作系统编程的区别
4. PCM和WAV文件中存储的是啥
5.采样率和采样深度的物理意义
6. C++中malloc/free 和new/delete的区别
7.128点FFT变换,16kHz的音频,可以分为多少个子带?
编程题:
查找缺失的最小的正整数
项目:
1.WebRTC VAD中的GMM模型过程
2.维纳滤波和谱减法的区别
3.时延估计的实现
4.你用的VAD的是做什么用的,原理是什么,遇到突发噪声怎么处理?
5.WebRTC NS中的噪声估计用到的三个特征值是什么?它们分别的定义是什么?
6.有没有了解WebRTC中的回声消除? 7.研究生项目的下一步改进计划
问题点
1.对采样深度不懂。采样位深,音频的位深度决定动态范围。我们常见的16Bit(16比特),可以记录大概96分贝的动态范围。那么,您可以大概知道,每一个比特大约可以记录6分贝的声音。同理,20Bit可记录的动态范围大概就是120dB;24Bit就大概是144dB。音频位速,也叫码率,或者比特率。位速是指在一个数据流中每秒钟能通过的信息量,也可以理解为:每秒钟用多少比特的数据量去表示。96kbps的WMA音频格式的音质明显要比96kbps的MP3音质好。为什么会这样呢?因为不同的压缩算法,对数据的利用率不同而造成的差异。再举例,假如MP3压缩至48kbps以下,已经惨不忍睹,而如果是AAC音频格式,同样是48kbps的位速下,音质明显比MP3好。
2.问题7答案继续查找。
3.WebRTC的VAD中GMM模型过程。4.LRT均值的定义。
总结反思
1.Linux和C++基础必须重新看一遍。这些计划7月份大体完成。
2.WebRTC的VAD、NS部分必须重新回顾,再深入理解,推导,一遍一遍仔细看。
3.对音频的格式问题得有深入了解。 4.陆续对回声消除、AGC部分进行了解。
字节跳动面试(二面)反思记录
问题记录
1.介绍自己的项目。
2.麦克风阵列的物理结构特性有哪些指标?你的麦克风阵列的指标都是怎样的?
3.都用了哪些噪声种类?现在机器学习几百种噪声,为什么用这么少?
4.在哪些噪声环境下语音增强的效果比较差?
5.增强语音的结果的衡量标准是什么?
6.指针和引用的区别
7.多线程(因为知道非计算机专业的,所以提了一下就没有问)
8.TCP和UDP的区别?TCP的拥塞控制策略有哪些?
9.一个绳子切三段,可以组成三角形的概率是多少?
编程题:寻找第k个数字
问题点
1.对麦克风阵列物理结构了解不够。由于个人偏向于做算法这一块,所以对麦克风阵列的相关性能指标理解较少,且没有考虑结合物理结构去完成语音增强这一块。
2.结合新技术的东西太少。应该多阅读最新论文,了解问题的解决方案。
3.仍需要增加噪声种类进行全方位测试。4.计算机网络方面仍需要进行了解。
总结反思
1.对麦克风阵列的物理指标进行广泛查询搜集,然后进行整理,确定自己使用的麦克风的参数。
2.广泛阅读最新论文,结合论文对算法进行优化。
3.增加测试噪声。
4.考虑对于多说话人的时候如何实现背景说话人的噪声。
5.对计算机网络的基本知识仍需要进行全方位的了解。 6.接下来对项目仍然需要深挖,以应对各种实际情况,并结合面试官问题,在下一步项目推进的时候做的更完善。
问题记录
1.你平时是用VS多还是Linux编程多?VS你都是怎么调试?
2.你知道VS下面断点调试的底层原理是什么吗?
3.你项目中的时延估计是做什么的?
编程题:
代码可否正确输出?
1.递归写出n个数字的子集(包含空集)
n个数字的子集有多少个? 2.二叉树的右视图
问题点
1.对C++虚函数的基本还是有欠缺。虽然知道代码能够正确输出,但是没有100%的理论确定这一点。2.对递归编程这个领域熟悉还不够。
总结反思
下一步要做以下工作:
1.抓住C++基础不放松,特别是虚函数、多态、智能指针等这几个常问的关键点。2.继续加快LeetCode编程题的学习工作,坚持每天刷3~5道题,把一些基本题型的medium和hard题都要刷且弄明白。