字节跳动 AI-Lab 智能语音团队面经

字节跳动 AI-Lab 智能语音团队分布式机器学习训练平台组

具体请见介绍

  • 内推简历时间:2月22日
  • HR电话确认时间:2月23日
  • 一面+二面时间:2月25日
  • HR面时间:2月26日
  • Offer Call时间:3月3日

一面(50min)

一面是 mentor 面,人超好很有耐心,会积极地引导你回答问题,必要时会给出提示,问题问的也很到位,体验良好。

八股:

  • 虚拟内存的概念和好处(提高系统并发性、方便编程、方便共享和保护等等)
  • 刚刚说的共享和保护怎么实现的(分段、锁机制)
  • 分段和分页的区别,为什么要分段(一维地址空间和二维地址空间、对用户透明与不透明等等)
  • 一个进程如何创建一个子进程(fork(),exec(),写时复制(COW),复制task_struct内的东西)
  • 你刚刚说子进程会复制父进程的所有内容,包括地址空间,那么如何实现你上面说的保护呢(这个引导的很棒啊,想了很久好像确实存在这个问题,面试官说这是一个开放性问题让我随便说说,最后给出的做法是父进程需要保护的段可以维护一个PID的list,只有这些PID才可以访问这个段)
  • 说一说锁机制

算法题:

T1 无序数组找中位数

利用快排的思想可以想到理论复杂度为\(O(n)\)的算法,具体可以参考这道题

面试的时候过于紧张,说了思路之后就开始写了,结果因为太长时间没写过快排了,各种小bug频出,而且我也不知道我哪根筋不对了上了直接写找第K小的,强行增加代码难度,debug了15分钟后面试官说你的思路是对的,由于时间有限就先不Debug了,心态小崩。


T2 二叉树的之字形的遍历

层序遍历稍微改一下就好了,参考这道题

#include <bits/stdc++.h>
using namespace std;
struct node{
    int val;
    node *left,*right;
};
void solve(node *root){
    if(!root) return;
    queue<node*> q;
    q.push(root);
    int op=1;
    while(!q.empty()){
        vector<node*> v;
        while(!q.empty()){
            node *now=q.front();
            printf("%d\n",now->val);
            q.pop();
            if(op){
                if(now->left) v.push_back(now->left);
                if(now->right) v.push_back(now->right);
            }else{
                if(now->right) v.push_back(now->right);
                if(now->left) v.push_back(now->left);
            }
            op^=1;
        }
        reverse(v.begin(),v.end());
        for(auto u:v) q.push(u);
    }
}


反问:

  • 学习机会多吗
  • 能学到什么
  • 会有技术分享吗(会的,并且会让在入职后一个月进行一次分享)WTF???
  • 接下来流程(稍等一下马上二面)

二面(40min)

二面是 leader 面,感觉人挺随和的,不严肃不古板,问题引导的也蛮好的,虽然那道算法题我一直没明白想考察的点,但是最后还是get到了。

算法题:

T1 给定一棵二叉树,返回二叉树宽度,保证结果不超过int

每一层都要输出一次,相当于返回每一层最左边非空节点和最右边非空节点间的节点数(包括空节点)。

一开始没get到考察到点,结合一面刚写过的层序遍历,很自然的写了一个空间\(O(n)\)的做法,给面试官讲了一遍,然后自己造了个样例跑了一遍又解释了一遍之后,面试官要求限制空间(原话是每层的节点数可能超过int,但是答案在int之内怎么办)。这我就get到不能直接模拟了,那就跟写线段树那样每个点标个号嘛,左右儿子的编号分别是 rt<<1 和 rt<<1|1 然后 DFS 下去找每层的最小编号和最大编号,一减就是答案了。


八股:

  • 一个程序写完之后要如何执行(编译的四个阶段)
  • 动态链接和静态链接的区别(稳定性、内存消耗、链接时机)
  • 用过哪些编译命令,动态链接的命令是什么(-std,-O2,-g,-Wall,不会没用过)
  • inline函数的作用、优缺点
  • 编译器一定会对inline函数进行处理吗(不会,内联函数只是对编译器的建议,是否对函数内联,决定权在于编译器,对于较为复杂的代码(比如递归层数太多,循环过多等等)编译器不会选择内联)

闲聊

  • 可以实习的时间,什么时候可以来实习
  • 现在大三是吧,接下来有什么打算
  • 觉得自己有什么优势
  • 平时怎么学习的,有没有学习过机器学习相关内容
订阅评论
提醒
43 评论
内联反馈
查看所有评论
哈哈哈
11 月 前

大佬,我也是AI LAB的后端实习,已经拿到offer了。请问下大佬AI LAB的后端主要工作是干啥的。

Hold Porn
1 年 前

First time here, haha

啥是
1 年 前

后端还是算法?

abc
2 年 前

二叉树的宽度这个题,既然空节点算在内,那知道是哪一层(dep),不就知道多少个节点了吗(2^dep)

rxdragon
2 年 前

请问进去实习后有哪些快速适应的tips吗,我也要去实习了,贼紧张

最后由rxdragon编辑于2 年 前
rxdragon
回复给  Edwiv
2 年 前

那那那就好 谢谢啦

dwbcz
2 年 前

还有就是是需要直接在他的平台上写代码吗,还是说可以用自己的ide呢。。。quq

dwbcz
回复给  Edwiv
1 年 前

我今天也oc了,看到您标题这个字节跳动 AI-Lab 智能语音团队分布式机器学习训练平台组,我想问一下他们实习生都还分组的嘛,我还以为智能语音的实习生都是一个组滴。。。

dwbcz
回复给  Edwiv
1 年 前

。。。谢谢回复!那悄悄问一下组之间差距大吗,有没有哪些个组比较不行啊。。。您用qq吗?要么加下qq交流呀quq

dwbcz
2 年 前

还有就是面试是用的牛客的平台吗quq,蟹蟹博主~

dwbcz
2 年 前

请问那个代码是真的让你跑出来吗><,还是就把代码写上就行不用跑结果(提交啥的)

国玉
2 年 前

博主简历有写项目么?面试官没有问项目么?

国玉
回复给  Edwiv
2 年 前

我周日投简历,这周一HR电话说简历过了,在准备第一次面试,关于自我介绍,博主面试时候大概讲了多久呀?内容这方面需要注意些什么呢?

CCjiahao
回复给  Edwiv
1 年 前

HR面一般会问什么问题?明早HR面,有点没谱

111
2 年 前

有要求实习的时间天数嘛?最好是几个月呀?

yang
2 年 前

没太看懂那个二叉树的宽度,就算采用左右孩子rt<<1 和 rt<<1|1策略,如果树足够深,那值还是会超int范围呀

Mmasker
回复给  Edwiv
1 年 前

如果说样例是一条链呢?宽度每一层都是1,但是你节点的编号是指数上升的呀。

Mmasker
回复给  Edwiv
1 年 前

当时我面的时候面试官就一直问我这点,问我这里应该怎么处理,我一直回答不上来,然后应该是挂了/流泪

李阳
2 年 前

博主面的是后端还是算法?

lozcy
2 年 前

后续情况如何,我刚面完语音组二面

Eva
回复给  Edwiv
2 年 前

请问hr面就是3面吗

lozcy
回复给  Edwiv
2 年 前

兄弟我有点怀疑你一面和我都是一个面试官,我也是层序,估计二面八股答得不行,现在凉了

lozcy
回复给  Edwiv
9 月 前

楼主现在在字节转正还是到别家了