首页 > 字节跳动 算法全四面 详细面经 已拿意向书
头像
JustinNie
编辑于 2020-07-08 23:01
+ 关注

字节跳动 算法全四面 详细面经 已拿意向书

个人情况

上海交通大学研究生,本科毕业于中国科学技术大学,目前专业是电子与通信工程,主要研究方向是文本匹配(NLP)。面试中的自我介绍第一句hhh。

【旧文重发,欢迎找我内推字节跳动,内推链接在文章末尾】
把去年的算法面经跟大家分享一下,感觉都考的差不多。

一面

被字节跳动HR的电话捞起来了,直接进入了秋招模式,在接下来的一个月里,基本没有投递提前批,就专注参加了字节跳动的几次面试。

1. 一面前半段主要都是在讲项目,面试官追问了一些项目细节的东西,以及做项目的心路历程。

2. 然后就问了一道算法题,就是著名的 小兔的棋盘,我后来查了一下,是什么卡特兰数。然而面试的时候我没听说过这一道题,不过还是磕磕绊绊地用DFS解出来了,面试官说可以了,也没让我继续用DP来解。哎,算法还是有点菜的。

3. 总结:一面大约持续40min,感觉一面主要还是在问项目,算法就问了一道题,发挥一般。面完之后一度以为挂了,不过还好在第二天就接到了二面的电话,HR说一面面试官评价很好???


二面

二面感觉比一面严格了很多。

1. 二面一开始我讲了论文的一些东西,然后面试官追问了非常多,有一些可能答得不太好,感觉对自己项目也好,论文也好,一定要对这个问题有自己深入的理解,不然容易被问住。

2. 二面也是问了一道算法题,是寻找迷宫中的最短路径,迷宫中1表示有墙,路不通,0表示可以走。我脑子不知道怎么抽了,直接想用DFS来解,给面试官讲了一下思路。面试官提醒我,DFS和BFS你是怎么考虑用哪个的。然后我就明白了,应该用BFS,讲了一下BFS和DFS适用的场景。然后用BFS比较顺利的写出了程序。

3. 总结:二面大约持续40min,感觉主要缺点还是在于对项目和论文的应用场景以及模型优缺点总结的不是很到位。二面后大概过了三天,等来了三面的电话。这时候还是挺紧张的,毕竟走到了最后一面,挂了就太划不来了。


三面

三面问的非常多,持续了90min。不过感觉三面面试官很善于引导,所以总体还回答的不错。

1. 一开始就问了一道算法题,LeetCode 76. Minimum Window Substring. Hard。当然,O(mn)复杂度的算法非常好想,我也是第一时间讲了这个思路。面试官提醒我能不能再优化,我优化到了O(nlog(m)),就不知道怎么再优化了,面试官说可以了。最后查了一下,这道题我做过,不过做的时候也是直接用的O(mn)的算法,O(n)对我来说,还是不太好想的。

2. 概率题:考虑五局三胜和三局两胜的情况,哪种更公平之类的。这道题本身比较简单,直接算概率就可以。不过我扯得挺多的,自己分析了 2k-1 局 k 胜的情况,以及无数局是什么情况,结合了一下中心极限定理之类的。不过最后整个框架讲的不是太好,没有完整的圆回来。总体感觉这道题答得还可以。

3. 结合具体场景的题目:A文件有m个专有名词,B文件有n个query,统计每个专有名词出现的次数。回答这个问题,主要其实就是考虑复杂度和分布式的知识,以及如何在query中查找专有名词(本身比较简单,考虑复杂度就不简单了)。不过我对分布式了解的不多,就只是自己手动分布式了以下。

4. 结合实际问题问:如何判断用户查询Query的意图是否是视频,以及如何搭建整套模型。Emmmm,这里主要涉及到机器学习模型的构建,重点在于如何构造训练数据,利用点击率还是提醒了一下才想到的。对具体场景还是不太熟悉。还有考虑如何排序召回之类的事情,主要就是准确性和时效性的权衡。

5. CNN,RNN,Tansformer分别如何编码文本,答得中规中矩吧。

6. python的动态数组是如何实现的,说实话我不太清楚。就扯了一下字典是怎么实现的,然后借鉴字典的实现方式,自己臆想了一下动态数组是怎么实现的,好像还大体是对的。编程语言基础这一块比较弱了。

7. 这一面问的挺多的,有些问题我都忘了。

8. 总结:总体这一面重点感觉在于如何在具体场景中选用合适的机器学习模型,如何构造训练数据。跟具体场景结合的能力还是挺重要的。最后问了一下面试官我的表现如何,面试官说非常满意。感觉稳了,然而没想到。。。看第四面。


四面

1. 讲了项目,主要深入问了项目中如何构造例的情况,以及几种不同的构造方式构造出来的要区别对待吗?这个自己之前确实没有认真想过,不过对项目比较熟悉,基本还是顺畅的聊下去了。

2. 讲了一下论文,也是深入问了一个细节,这里就不展开了。

3. 实际问题:在用户搜索场景中,如何在用户搜索的时候根据用户输入的字推荐要搜索的query,以及如何把错别字也正确推荐。主要是考虑输入与候选集合的匹配,用户画像的构建,考虑用户的历史搜索信息。结合具体业务的问题感觉主要考察思维发散,回答的感觉还可以,结合了StarSpace等Embedding的方式。

4. 算法题:一个正整数数组,寻找连续区间使得和等于target,简单的用两个指针做出来了,不过让我证明一下解法的正确性,纠结了一会儿也算是证明出来了。然后如果里面有负数怎么做,很顺利的讲出来了。

5. 总结:四面大致持续了40min,感觉三面和四面主要还是和具体业务场景结合的比较深入。


总结

四面后,又是焦虑的等待,还好过了四天,等到了录取意向书。

这几场面试下来,感觉算法真的是基础吧,算法答不上来就比较危险了。其次要对自己的项目和论文有深入的了解,对机器学习模型要有自己的理解,可以跟具体业务场景结合。

希望大家都可以收获自己心仪的OFFER。


内推

【此面经为旧文重发,欢迎找我内推字节跳动】

提前批投递接: https://job.toutiao.com/s/JRpMuou
算法、后端、前端、iOS&android开发、测试等等HC都很多。

这里介绍一下楼主所在的大部门 - 字节跳动Data研发部门,负责公司海内外所有产品线的推荐、广告、系统架构、大数据和开放平台等核心技术。旗下包括搜索、推荐、广告、ailab等核心子部门,机会多多。欢迎投递。

自己去年总结的算法岗的准备资料:https://github.com/JustinNie/Basic.git

以及我的校招内推码: REEWSF2




全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐