跳至主要內容

校招进入飞书的个人经验

月色真美技术文章精选集面试约 3963 字大约 13 分钟

推荐语:这篇文章的作者校招最终去了飞书做开发。在这篇文章中,他分享了自己的校招经历以及个人经验。

原文地址https://www.ihewro.com/archives/1217/open in new window

基本情况

我是 C++主要是后台开发的方向。

2021 春招入职字节飞书客户端,入职字节之前拿到了百度 offer(音视频直播部分) 以及腾讯 PCG (微视、后台开发)的 HR 面试通过(还没有收到录用意向书)。

不顺利的春招过程

春招实习对我来说不太顺利

实验室在 1 月份元旦的那天正式可以放假回家,但回家仍然继续“远程工作”,工作并没有减少,每天日复一日的测试,调试我们开发的“流媒体会议系统”。

在 1 月的倒数第三天,我们开了“年终总结”线上会议。至此,作为研二基本上与实验室的工作开始告别。也正式开始了春招复习的阶段。

2 月前已经间歇性的开始准备,无非就是在 LeetCode 上面刷刷题目,一天刷不了几道,后面甚至象征性的刷一下每日一题。对我的算法刷题帮助很少。

2 月份开始,2 月初的时候,LeetCode 才刷了大概 40 多道题目,挤出了几周时间更新了 handsome 主题的 8.x 版本,这又是一个繁忙的几周。直到春节的当天正式发布,春节过后又开始陆陆续续用一些时间修复 bug,发布修复版本。2 月份这样悄悄溜走。

找实习的过程

2021-3 月初

3 月 初的时候,投了阿里提前批,没想到阿里 3 月 4 号提前批就结束了,那一天约的一面的电话面也被取消了。紧接了开学实验室开会同步进度的时候,发现大家都一面/二面/三面的进度,而我还没有投递的进度。

2021-3-8

投递了字节飞书

2021-4 月初

字节第一次一面,腾讯第一次一面

2021-4 中旬

美团一、二面,腾讯第二次一面和二面,百度三轮面试,通过了。

2021-4 底

腾讯第三次一面和字节第二次一面

2021-5 月初

腾讯第三次二面和字节第二次二面,后面这两个都通过了

阿里

第一次投了钉钉,没想到因为行测做的不好,在简历筛选给拒绝了。

第二次阿里妈妈的后端面试,一面电话面试,我感觉面的还可以,最后题目也做出来了。最后反问阶段问对我的面试有什么建议,面试官说投阿里最好还是 Java 的…… 然后电话结束后就给我拒了……

当时真的心态有点崩,问了这个晚上 7 点半的面试,一直看书晚上都没吃……

所以春招和阿里就无缘了。

美团

美团一面的面试官真的人很好。也很轻松,因为他们是 Java 岗位,也没问 c++知识,聊了一些基础知识,后面半个小时就是聊非技术问题,比如最喜欢网络上的某位程序员是谁,如何写出优雅的代码,推荐的技术类的书籍之类的。当时回答王垠是比较喜欢的程序员,面试官笑了说他也很喜欢。面试的氛围感觉很好。

二面的时候全程就问简历上的一个项目,问了大概 90 分钟,感觉他从一开始就有点不太想要我的感觉,很大原因我觉的是我是 c++,转 Java 可能成本还是有一些的。最后问 HR 说结果待定,几天后通知被拒了。

百度

百度一共三轮面试,在一个下午一起进行,真的很刺激。一面就是很基础的一些 c++问题,写了一个题目说一下思路没让运行(真的要运行还不一定能运行起来:))

二面也是基础,第一个题目合并两个有序数组,第二个题目写归并排序,写的结果不对,又给我换了一个题目,树的 BFS。二面面试官最后问我对今天面试觉得怎么样,我说虽然中间有一个道题目结果不对,但是思路是对的,可能某个小地方写的有问题,但总体的应该还是可以的。二面就给我通过了。

三面问的技术问题比较少,30 多分钟,也没写题目,问了一些基本情况和基础知识。最后问部门做的什么内容。面试官说后面 hr 会联系我告诉我内容。

字节飞书

第一次一面就凉了,原因应该是笔试题目结果不对……

第二次一面在 4 月底了,很顺利。二面在五一劳动节后,面试官还让学姐告诉我让我多看看智能指针,面试的时候让我手写 shared_ptr,我之前看了一些实现,但是没有自己写过,导致代码考虑的不够完善,leader 就一直提醒我要怎么改怎么改。

本来我以为凉了,在 5 月中旬的时候都准备去百度入职了,给我通知说过了,就这样决定去了字节。

感悟

这么多次面试中,让我感悟最深的是面试中的考察题目真的很重要,因为我在基础知识上面也不突出,再加上如果算法题(一般 1 道或者 2 道)如果没做出来,基本就凉了。而面试之前的笔试考试反而没那么重要,也没那么难。基本 4 题写出来 1~2 道题目就有发起面试的机会了。难度也基本就是 LeetCode top 100 上面的那些算法。

面试中做题,我很容易紧张,头脑就容易一片空白,稍不注意,写错个符号,或者链表赋值错了,很难看出来问题,导出最终结果不对。

入职字节实习

入职字节之前我本来觉得这个岗位可能是我面试的最适合我的了,因为我主 c++,而且飞书用 c++应该挺深的。来之后就觉得我可能不太喜欢做客户端相关,感觉好复杂……也许服务端好一些,现在我仍然不能确定。

字节的实习福利在这些公司中应该算是比较好的,小问题是工位比较窄,还是工作强度比其他的互联网公司大一些。字节食堂免费而且挺不错的。字节办公大厦很多,我所在的办公地点比较小。

目前,需要放轻松,仓库代码慢慢看呗,mentor 也让我不急,准备有问题就多问问,不能憋着,浪费时间。拿到转正 offer 后,秋招还是想多试试外企或者国企。强度太大的工作目前很难适应。

希望过段时间可以分享一下我的感受,以及能够更加适应目前的工作内容。

求职经验分享

一些概念

日常实习与正式(暑期)实习有什么区别

  • 日常实习如果一个组比较缺人,就很可能一年四季都招实习生,就会有日常实习的机会,只要是在校学生都可以去面试。而正式实习开始时间有一个范围比较固定,比如每年的 3-6 月,也就是暑期实习。
  • 日常实习相对要好进一些,但是有的日常实习没有转正名额,这个要先确认一下。
  • 字节的日常实习和正式实习在转正没什么区别,都是一起申请转正的。

正式实习拿到 offer 之后什么时候可以去实习

暑期实习拿到 offer 后就可以立即实习(一般需要走个流程 1 周左右的样子),也可以选择晚一点去实习,时间可以自己去把握,有的公司可以在系统上选择去实习的时间,有的是直接和 hr 沟通一下就可以。

提前批和正式批的区别

以找实习为例:

  • 先提前批,再正式批,提前批一般是小组直接招人不进系统没有笔试流程相对走的快,一般一面过了,很快就是二面。
  • 正式批面试都会有面评,如果上一次失败的面试评价会影响下一次面试,所以还是谨慎一点好

实习 offer 和正式 offer 区别

简单来说,实习 offer 只是给你一个实习的机会,如果在实习期间干的不错就可以转正,获得正式 offer。

签署正式 offer 之后并不是意味着马上去上班,因为我们是校招生,拿到正式 offer 之后,可以继续实习(工资会是正式工资的百分比),也可以请假一段时间等真正毕业的时候再去正式工作。

时间节点

尽早把简历弄出来,最好就是最近一段时间,因为大家对实验室项目现在还很熟悉,现在写起来不是很难,再过几个月写简历就比较痛苦了。

以去年为例:

  • 2 月份中旬的时候阿里提前批开始(基本上只有阿里这个时候开了提前批),3 月 8 号阿里提前批结束。腾讯提前批是 3 月多开始的,4 月 15 号结束
  • 3-5 月拿到实习 offer,最好在 4 月份可以拿到比较想去的实习 offer。
  • 4-8 月份实习,7 月初秋招提前批,7 月底或者 8 月初就是秋招正式批,9 月底秋招就少了挺多,但是只是相对来说,还是有机会,
  • 10 月底秋招基本结束,后面还会有秋招补录

  • 怎么找实习机会,个人觉得可以找认识的人内推比较好,内推好处除了可以帮看进度,一般可以直推到组,这样可以排除一些坑的组。提前知道这个组干嘛的。
  • 实习挺重要,最好是实习的时候就找到一个想去的公司,秋招会轻松很多,因为实习转正基本没什么问题,其次实习转正的 offer 一般要比秋招的好(当然如果秋招表现好也是可以拿到很好的 offer)身边不少人正式 offer 都是实习转正的。
  • 控制好实习的时间,因为边实习边准备秋招挺累的,一般实习的时候工作压力也挺大,没什么时间刷题。

面试准备

项目经历

我觉得我们实验室项目是没问题的,重要是要讲好。

  • 项目介绍

首先可能让你介绍一下这个项目是什么东西,以及为什么要去做这个项目

  • 项目的结果

然后可能会问这个项目的一些数据上最终结果,比如会议系统能够同时多少人使用,或者量化的体验,比如流畅度,或者是一些其他的一些优势。

  • 项目中的困难

最后都会问过程中有没有遇到什么困难、挑战的,以及怎么解决的。这个过程中主要考察这个项目的技术点是什么。

困难是指什么,个人觉得主要是花了好几天才解决的问题就是困难。

举两个例子:

第一个例子是排查 bug 方面,比如有一个内存泄露的问题花了一周才排查出来,那就算一个困难,那么解决这个困难的过程就是如何去定位这个问题过程,比如我们先根据错误搜索相关资料,肯定没那么容易就直接找到原因,而是我们会在这些资料中找到一些关键词,比如一些工具,那么我们对这个工具的使用就是解决问题的一个过程。

第二个例子是需求方案的设计,比如某个需求完成,我们实现这个需求可能有多个可行的设计方案。解决这个困难的过程就是我们对最终选择这个方法的原因,以及其他的设计方案的优缺点的思考

面试中被问到:你在工作中碰到的最困难的问题是什么?发现问题,解决问题.-CSDN 博客面试中问到工作中遇到困难是怎么解决的open in new window

有人说我解决方法就是通过百度搜索,但实际上细节也是先搜索某个错误或者问题,但是肯定不可能一下子就搜到了代码答案,而是找到一个答案中有某个关键词,接着我们继续找关键词获取其他的信息。

笔试

找实习的笔试我觉得不会太难,一般如果是 4 道题目,做出来 1-2 道题目差不多就有面试的机会了。

刷题老生常谈的问题,LeetCode Top100。一开始刷题很痛苦,等刷了 40 道题目的时候就有点感觉的,建议从链表、二叉树开始刷,数组类型题目有很多不能通用的技巧。

  • ::一定要用白版进行训练::,一定要用白板,不仅仅是为了面试记住 API,更重要的是用白板熟练后,写代码会更熟练而且思路更独立和没有依赖。
  • 算法题重中之重,终点不是困难题目,而是简单,中等,常见,高频的题目要熟能生巧,滚瓜烂熟。
  • 面试的笔试过程中,如果出现了问题,一定要第一时间申请使用本地 IDE 进行调试,否则可能很长时间找不到问题,浪费了机会。

面试

面试一般 1 场 1 个小时候分为两个部分,前半部分会问一些基础知识或者项目经历,后半部分做题。

基础知识复习一开始没必要系统的去复习,首先是确保高频问题必会,比如计算机网络、操作系统那几个必问的问题,可以多看看面经就能找到常问题的问题,对于比较偏问题就算没答上来也不是决定性的影响。

  • 多看面经!!!!!! 不要一直埋头自己学,要看别人问过了哪些常问的问题。
  • 对于实习工作,看的知识点常见的问题一定要全!!!!!,不是那么精问题不大,一定要全,一定要全!!!!
  • 对于自己不会的,尽量多的说!!!! 实在不行,就往别的地方说!!!总之是引导面试官往自己会的地方上说。
  • 面试中的笔试和前面的笔试风格不同,面试笔试题目不太难,但是考察是冷静思考,代码优雅,没有 bug,先思考清楚!!!在写!!!
  • 在描述项目的难点的时候,不要去聊文档调研是难点,回答这部分问题更应该是技术上的难点,最后通过了什么技术解决了这个问题,这部分技术可以让面试官来更多提问以便知道自己的技术能力。
JavaGuide 官方公众号
JavaGuide 官方公众号