两年Java,去字节跳动写Python和Go

2019年5月,在收到offer邮件的那一刻,我仍然不敢相信自己这一番际遇。经历了七场面试,终于得偿所望,拿到了字节跳动的offer。

做加入大厂的决定并不是巧合。在多年的职业生涯里,我曾多次对接一线互联网公司的服务,与一线公司的员工有不少接触,再加上各种技术博客的耳濡目染,愈发让我对大厂心向往之。另外,二线互联网公司节奏相对较慢,内部的管理机制并不能满足我对极致工程师文化的期待。也许我注定要被996文化洗礼吧^_^

正如我之前博客所述,凭借扎实的C#.net功底,我进入了一家二线互联网公司,这一待就是4年零3个月。这期间,我买房买车,过上了悠闲舒适的生活。但安闲的生活并没有让我获得满足,在写了两年C#之后,我毅然决定地选择转Java,并同时攻读软件工程硕士学位,终于在2018年5月,我拿到了硕士学位,Java编程能力也沉淀了一年。

是时候了。

两年Java,去字节跳动写Python和Go

筹备

早年我曾经参加过大厂的面试,当时我的技术功底和行业知识沉淀,是能够获得认可的。但近几年互联网公司面试风格突变,并且各家大厂的转变惊奇地一致:做题。于是重新拾回数据结构和基础算法,变成我唯一要重视的筹备工作。

在攻读硕士的那几年,我几乎没有完整的周末。前面的一年半,我周末都要去学校上课,每两周的周日下午会考试。后面的两年的每个周末,我则是一直苟在办公室里准备硕士论文。老师对我尽职尽责,也导致我的论文一改再改,这块可以单开一篇博客聊一聊了~在这几年的锻炼里,没有完整的周末我早已习惯,硕士毕业后突然闲下来我反而不适应了,那就操练起来吧。

刷题并不是一件容易的事,在我初次打开leetcode时上面只有800+的题目,我给自己定了计划,规定每天刷多少道。有趣的是leetcode会随着时间不断增加题目,截止我拿到字节offer时,网站上已经1000+的题目了。离开学校多年,并且工作一直在工程领域内浸淫,数据结构和基础算法早就还给老师了。

初刷题很不适应,有些题我并不愿意看答案,就想着自己一定可以解决,于是前面的题会花很久的时间。这一过程是痛苦的,并且对自己的怀疑和失望与日俱增,我的思维状态也在不断深入,开始茶不思饭不想,一心怼题。也许是量变产生质变,在某一个周末终于彻底想通一道hard题之后,后面的进程就开始一路顺畅。

刷题的经过感觉也能单独水一篇博客,希望大家能感兴趣。

两年Java,去字节跳动写Python和Go

 

 

面试与失败

面试的状态是需要逐渐培养的,最好可以先面其他公司练练手,随后再去面试自己心仪的公司。获取面试的方式,可以通过内推,或通过猎头推荐,最下策是官网自投简历。那时字节在扩张招聘,与我一拍即合,便欣然接受猎头的面试邀请。当然后续我也收到了另一家巨头公司的邀请,开启了另一段故事,这里先按下不表。

字节的面试流程带起了整个互联网圈的刷题风,这么说应该不为过。面试通常是3场技术面,一场HR面。技术面试都是在线面试,面试官和候选人都抱着电脑,在牛客网上,通过摄像头和麦克风对话。前面两场技术面试官都非常nice,再加上我已经工作多年,问题基本对答入流,最后面试官都是狡黠一笑说,我们做两道题吧,我便知道前戏结束了。

半年后我也成为了字节的面试官,才明白,做题部分如果没做好,前面答题做的再好也都会fail。当然如果答题非常优秀,coding题目难度也会酌情降低,增加候选人的通过概率。如果问答表现不好,coding题目难度会适当增加,确保编程功底扎实却不善言辞的候选人,能够通过面试。由于我做了精心准备,coding部分并没有难到我,最难的题只有leetcode中medium的难度。面试的结尾我都与面试官沟通融洽,尽管面试官不能透露面试结果,但我也心知十拿九稳。

可在第三场技术面,我遭遇了滑铁卢。面试官是一位非常硬核的,且看起来比我年长不少的前辈,问及了存储锁与树型数据结构的问题,我回答的并不好。随后的做题中,面试官也给了树型数据结构的变种题,我也做的磕磕绊绊。

可以预见的,我在第三面fail了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzffd.html