字节跳动Ailab | 算法四面面经(ssp offer)

作者 | Giant 

来源 | 知乎

https://zhuanlan.zhihu.com/p/279154639

写在前面

先介绍一下笔者自身背景:双非本,top5硕士,研究方向是对话系统和Text2SQL,2段创业公司实习经历,若干NLP比赛Top10(天池、CCF、Spider),1篇发明专利。

因多方面因素,2020年的秋招形势依然严峻,特别是AI相关的算法岗位,竞争十分火热,既内卷又倒挂。6月初的字节跳动是我秋招面试的第一家公司,横跨6/7月的4场面试印象非常深刻。终于在11月初收到了字节的「ssp offer」,感恩诚意满满的字节。

为了感谢准备面试过程中在知乎学到的众多经验,决定分享面经回馈给广大知友,或许能在之后的校招、社招中起到一些帮助。也祝愿大家不断夯实自我,收获钟意的offer。

我的4轮面试是提前批,hc相对充足,都是远程视频的方式进行,其中1、2、4面有手撕代码;每一轮面试时间在1小时左右。

经朋友提醒,在面经中详细透露面试的具体问题可能涉及公司隐私,所以文中部分内容可能会做打码处理,请谅解。

一面

难度中等,持续时长:1小时

  1. 自我介绍

自我介绍即开场白需要提前准备并多次练习,内容不用太多,言简意赅地讲清楚学校、专业、研究方向,概括介绍实习/论文/比赛等亮点即可,细节可以根据面试官的兴趣再深入。

  1. 项目介绍/实习经历介绍

这部分主要根据简历上的实习/项目进行,可能会问背景、怎么做、为什么这样做、最终结果、是否成功上线等,再深挖一些技术细节,或顺带考察ML、DL等知识点。

通常,这一部分撑起了整个面试过程至少一半的时间(面其他大厂时,有几次项目经历甚至占据了90%以上的面试时长),所以大家一定要用心准备。

由于校招同学没有工作经验,所以项目和实习是展示自身能力的最好亮点(一堆CCF-A的大佬请忽略并接受我的膝盖)。面试官可以从介绍中了解到你的工程能力、coding能力、抗压能力、沟通能力、思维方式等等,如果吸引到面试官肯定能加分,要是面试官觉得索然无味估计面试也就到这儿了...

所以对于简历上提及的内容要滚瓜烂熟,能知其然知其所以然最佳。如果问到简历上的内容而没答上或吞吞呜呜,将会非常打脸,造成硬伤(简历上自己写的都不会,别的还用问吗╮( ̄▽ ̄)╭)。

切忌在简历上洋洋洒洒地写“熟悉Xgboost、SVM、Bayes、HMM、CRF、KNN、LR、CNN、RNN、Attention等算法”。是听过名字就算熟悉?还是啃过源码、理解背后原理?即便真的对这些算法理解透彻,最好也能结合具体例子来说明,而不是穷举。

而对于没有项目/实习/比赛经历的同学,这一部分的时间可能只能由考察基础算法来弥补了,这样一来随机性、难度都提升了不少;所以平时尽可能多积累这方面的经验,让简历充实起来。

所以,『项目 or 实习 or 比赛 or 论文』最好为真,这是底线。

3-7. 以下内容涉及具体细节问题而隐去。主要是根据简历内容引申出一些细节点,并根据面试者的回答进一步深挖。

  1. 介绍一个比赛

我的简历上简要写了3段比赛,我从中选择了一个最有亮点的比赛,从数据、模型、提分trick三方面做了介绍。

  1. 介绍论文(合作写的论文,最后被COLING录取)

  2. 来做一道题吧(^∀^)

数组相关的中等难度手撕题,我当时大致回答了3种做法,面试官表示满意。做法中提到了二分查找,被进一步追问证明二分查找为什么不会陷入死循环。

  1. 提问

整个一面感觉难度一般,问的问题基本都答上来了,没有一作CCF-A是硬伤。每一次面试都是很好的复盘过程,要及时总结、查漏补缺。

关于代码手撕,今年应该是非常关键的环节,很多公司直接将编程题作为通过面试与否的硬性指标。刷题要趁早,对于我自己来说,在lc/剑指上各类型的题累计刷300+才算比较稳。

二面

6.23 第二轮面试,难度中等,持续时长:1小时
字节的一面和二面一般都是连着的,所以一面结束在线等了5分钟开始二面。

  1. 自我介绍

  2. 继续介绍项目

虽然有面试记录,但是是不同的面试官,所以依然会对各个项目及细节展开追问,当然侧重点可能不同。比如二面面试官问了我某个项目中,最核心的任务是什么(考察个人对项目/业务的理解度)。

3-4. 和个人项目相关的细节问题

  1. 再做一道题吧

和二叉树相关的算法题,难度一般。

  1. 年底能否提前来北京实习?

  2. 提问

二面的难度依然适中,到目前进行的还算顺利。我的一位好室友在面试杭州某大厂时,出了一道手撕实现红黑树,直接劝退...

三面

7.12 第三轮面试,难度中等+,持续时长:50分钟。三面面试官是部门的总监之一,在Ailab首页见过照片。

  1. 自我介绍

  2. 介绍项目(怎么做的,效果如何、评价指标)

  3. 介绍2段实习经历(这次没问细节)

4-7. NLP方向的基础知识点,同时问到了对整个方向未来发展/瓶颈的思考,考验候选人的思维广度和深度。

  1. 面试官主动介绍部门发展历程、研究方向

  2. 提问

总的来说,这一面发散性问题比较多,同时会重点考察候选人对自己所处的行业是否有一个宏观的认识;以及可能提出一些业界公认的难点、挑战,来考察候选人的思维。

平时打好基础的同时,对所处领域的发展趋势、痛点、解决方案有自己的思考和见解,会是非常加分的。

四面

7.22 第四轮面试(交叉面),难度较大,持续时长:70分钟
这一轮的面试官来自其他部门,个人感觉是面试过程中难度最大的,有压力面的味道。

1-4. 问了4道算法题,涉及算法、基础数学、概率论等等,还有一丝脑经急转弯的味道。手撕题hard难度。最终答出了2.5道。

  1. 介绍一个自己认为最满意/最具挑战性的项目

扣了一些项目细节来追问。

  1. 提问

最后提问环节,我才得知是交叉面,面试官是做搜索的,不是Ailab部门。一开始的算法题占据了将近1个小时,证明自己在算法题上还是存在不少短板。

交叉面重点考察综合能力,包括基本功、表达、逻辑、运算等等。

以上是我在字节跳动秋招算法提前批的全部面试记录,愿能为你提供一些鼓励和帮助!

你可能感兴趣的:(算法,java,面试,字节跳动,人工智能)