logo头像

不忘初心,奋力前行

字节跳动互娱提前批面试笔记和反思记录

字节跳动互娱提前批面试笔记和反思记录

7月1日投了字节跳动,然而直到提前批结束都没有收到一面通知,以为是挂了,没想到在7月18日收到了一面通知,然而当时自己很劳累,本来想推迟,结果没想到面试官也因为有事所以直接推迟了一面。于是乎实际一面是7月22日,二面是7月26日,三面是7月28日。最后在8月2日晚收到了字节跳动的offer call,收到了秋招的第一个offer。

字节跳动面试(一面)反思记录(7月22日)

问题记录

  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部分进行了解。

字节跳动面试(二面)反思记录(7月26日)

问题记录

  1. 介绍自己的项目。

  2. 麦克风阵列的物理结构特性有哪些指标?你的麦克风阵列的指标都是怎样的?

  3. 都用了哪些噪声种类?现在机器学习几百种噪声,为什么用这么少?

  4. 在哪些噪声环境下语音增强的效果比较差?

  5. 增强语音的结果的衡量标准是什么?

  6. 指针和引用的区别

  7. 多线程(因为知道非计算机专业的,所以提了一下就没有问)

  8. TCP和UDP的区别?TCP的拥塞控制策略有哪些?

  9. 一个绳子切三段,可以组成三角形的概率是多少?

编程题

寻找第k个数字

问题点

  1. 对麦克风阵列物理结构了解不够。**由于个人偏向于做算法这一块,所以对麦克风阵列的相关性能指标理解较少,且没有考虑结合物理结构去完成语音增强这一块。

  2. 结合新技术的东西太少**。应该多阅读最新论文,了解问题的解决方案。

  3. 仍需要增加噪声种类进行全方位测试。**

  4. 计算机网络方面仍需要进行了解。**

总结反思

  1. 对麦克风阵列的物理指标进行广泛查询搜集,然后进行整理,确定自己使用的麦克风的参数。

  2. 广泛阅读最新论文,结合论文对算法进行优化。

  3. 增加测试噪声。

  4. 考虑对于多说话人的时候如何实现背景说话人的噪声。

  5. 对计算机网络的基本知识仍需要进行全方位的了解。

  6. 接下来对项目仍然需要深挖,以应对各种实际情况,并结合面试官问题,在下一步项目推进的时候做的更完善。

字节跳动面试(三面)反思记录(7月28日)

问题记录

  1. 你平时是用VS多还是Linux编程多?VS你都是怎么调试?

  2. 你知道VS下面断点调试的底层原理是什么吗?

  3. 你项目中的时延估计是做什么的?

编程题

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class B
    {
    int b;
    public:
    virtual ~B(){cout <<"B::~B()"<<endl;}
    };
    class D:public B
    {
    int i;
    int j;
    public:
    virtual ~D() { cout <<"D::~D()"<<endl;}
    };
    int main(void)
    {
    B *pb = new D[2];
    delete[] pb;
    return 0;
    }

代码可否正确输出?

  1. 递归写出n个数字的子集(包含空集)

n个数字的子集有多少个?

  1. 二叉树的右视图

问题点

  1. 对C++虚函数的基本还是有欠缺。**虽然知道代码能够正确输出,但是没有100%的理论确定这一点。

  2. 对递归编程这个领域熟悉还不够。**

总结反思

下一步要做以下工作:

  1. 抓住C++基础不放松,特别是虚函数、多态、智能指针等这几个常问的关键点。

  2. 继续加快LeetCode编程题的学习工作,坚持每天刷3~5道题,把一些基本题型的medium和hard题都要刷且弄明白。

支付宝打赏 微信打赏 QQ钱包打赏

感觉不错?欢迎给我 打个赏~我将不胜感激!