兩年Java,去位元組跳動寫Python和Go

itread01 2021-02-22 11:24:24
java Python itread01 位元


前言

2019年5月,在收到offer郵件的那一刻,我仍然不敢相信自己這一番際遇。經歷了七場面試,終於得償所望,拿到了位元組跳動的offer。

做加入大廠的決定並不是巧合。在多年的職業生涯裡,我曾多次對接一線網際網路公司的服務,與一線公司的員工有不少接觸,再加上各種技術部落格的耳濡目染,愈發讓我對大廠心嚮往之。另外,二線網際網路公司節奏相對較慢,內部的管理機制並不能滿足我對極致工程師文化的期待。也許我註定要被996文化洗禮吧^_^

正如我之前部落格所述,憑藉紮實的C#.net功底,我進入了一家二線網際網路公司,這一待就是4年零3個月。這期間,我買房買車,過上了悠閒舒適的生活。但安閒的生活並沒有讓我獲得滿足,在寫了兩年C#之後,我毅然決定地選擇轉Java,並同時攻讀軟體工程碩士學位,終於在2018年5月,我拿到了碩士學位,Java程式設計能力也沉澱了一年。

是時候了。

籌備

早年我曾經參加過大廠的面試,當時我的技術功底和行業知識沉澱,是能夠獲得認可的。但近幾年網際網路公司面試風格突變,並且各家大廠的轉變驚奇地一致:做題。於是重新拾回資料結構和基礎演算法,變成我唯一要重視的籌備工作。

在攻讀碩士的那幾年,我幾乎沒有完整的週末。前面的一年半,我週末都要去學校上課,每兩週的週日下午會考試。後面的兩年的每個週末,我則是一直苟在辦公室裡準備碩士論文。老師對我盡職盡責,也導致我的論文一改再改,這塊可以單開一篇部落格聊一聊了~在這幾年的鍛鍊裡,沒有完整的週末我早已習慣,碩士畢業後突然閒下來我反而不適應了,那就操練起來吧。

刷題並不是一件容易的事,在我初次開啟leetcode時上面只有800+的題目,我給自己定了計劃,規定每天刷多少道。有趣的是leetcode會隨著時間不斷增加題目,截止我拿到位元組offer時,網站上已經1000+的題目了。離開學校多年,並且工作一直在工程領域內浸淫,資料結構和基礎演算法早就還給老師了。

初刷題很不適應,有些題我並不願意看答案,就想著自己一定可以解決,於是前面的題會花很久的時間。這一過程是痛苦的,並且對自己的懷疑和失望與日俱增,我的思維狀態也在不斷深入,開始茶不思飯不想,一心懟題。也許是量變產生質變,在某一個週末終於徹底想通一道hard題之後,後面的程序就開始一路順暢。

刷題的經過感覺也能單獨水一篇部落格,希望大家能感興趣。

 

 

面試與失敗

面試的狀態是需要逐漸培養的,最好可以先面其他公司練練手,隨後再去面試自己心儀的公司。獲取面試的方式,可以通過內推,或通過獵頭推薦,最下策是官網自投簡歷。那時位元組在擴張招聘,與我一拍即合,便欣然接受獵頭的面試邀請。當然後續我也收到了另一家巨頭公司的邀請,開啟了另一段故事,這裡先按下不表。

位元組的面試流程帶起了整個網際網路圈的刷題風,這麼說應該不為過。面試通常是3場技術面,一場HR面。技術面試都是線上面試,面試官和候選人都抱著電腦,在牛客網上,通過攝像頭和麥克風對話。前面兩場技術面試官都非常nice,再加上我已經工作多年,問題基本對答入流,最後面試官都是狡黠一笑說,我們做兩道題吧,我便知道前戲結束了。

半年後我也成為了位元組的面試官,才明白,做題部分如果沒做好,前面答題做的再好也都會fail。當然如果答題非常優秀,coding題目難度也會酌情降低,增加候選人的通過概率。如果問答表現不好,coding題目難度會適當增加,確保程式設計功底紮實卻不善言辭的候選人,能夠通過面試。由於我做了精心準備,coding部分並沒有難到我,最難的題只有leetcode中medium的難度。面試的結尾我都與面試官溝通融洽,儘管面試官不能透露面試結果,但我也心知十拿九穩。

可在第三場技術面,我遭遇了滑鐵盧。面試官是一位非常硬核的,且看起來比我年長不少的前輩,問及了儲存鎖與樹型資料結構的問題,我回答的並不好。隨後的做題中,面試官也給了樹型資料結構的變種題,我也做的磕磕絆絆。

可以預見的,我在第三面fail了。

再戰與成功

哪有什麼成功是一蹴而就,我這樣安慰自己。但籌備了多時,仍然沒有獲得一線大廠的認可,讓我的內心波瀾四起,並且開始了自我懷疑。

後來我成為了位元組跳動面試官才知道,人才庫會篩選之前面試優秀的候選人,重新撈回來繼續面試。我之前的兩輪面試表現很好,位元組HR終於又一次聯絡了我,讓我繼續參加面試。經歷了之前的失敗,我痛定思痛,一方面繼續鞏固自己的知識體系,另一方面則不斷穩固自己的心態,終於我通過了接下來的3輪面試,走到了HR面。

最後一場技術面試,我收到HR的邀請,去到了位元組上海總部。那一天位元組的同學們剛剛搬入科技綠洲的新辦公大樓,大家臉上都洋溢著新奇快樂的幸福表情,而我在則在一間明亮舒適的小會議室裡,見到了位元組的一位元老員工,一番愉快的交談後,他給了我紙和筆,讓我在紙上做題。我有些驚訝,但隨即一笑,感慨這就是位元組範兒吧。寫完了兩道medium的題後,我與這位元老員工握了手,他便離去了,只留下我靜靜地等待HR前來進行最終的溝通。

一週後,我收到了位元組跳動的offer。

總結

加入位元組的歷程是值得我長久回味的。在二線網際網路沉淪許久的我,仍然能被一線大廠認可;28歲的年紀,仍然能被賦予機會進入到國際一線的團隊中;日常努力付出的點點滴滴,都被證明了不是徒勞。

這段經歷裡,我特別想感謝HR小姐姐,是她再次發現了我;想感謝在位元組的老闆,是他給了我啟發和挑戰,讓我在加入位元組後能夠再次蛻變;以及感謝最後與我交談並讓我在紙上做題的前輩,這是一段新奇且快樂的經歷^_^

位元組的工作經歷,讀碩士的過程,以及我後來與另一家網際網路巨頭的緣分,會在後面的部落格中陸續更新,希望大家關注我的微信公眾號:技術學術藝術,B站:技術學術藝術     

版权声明
本文为[itread01]所创,转载请带上原文链接,感谢
https://www.itread01.com/content/1613898243.html

  1. 27000 stars! The most comprehensive collection of Python design patterns
  2. python day3
  3. python day3
  4. Commonly used data operation functions of Python
  5. (数据科学学习手札108)Python+Dash快速web应用开发——静态部件篇(上)
  6. (learning notes of data science 108) Python + dash rapid web application development -- static components (I)
  7. (数据科学学习手札108)Python+Dash快速web应用开发——静态部件篇(上)
  8. (learning notes of data science 108) Python + dash rapid web application development -- static components (I)
  9. [Python] Matplotlib 图表的绘制和美化技巧
  10. Drawing and beautifying skills of [Python] Matplotlib chart
  11. [Python] Matplotlib 图表的绘制和美化技巧
  12. Drawing and beautifying skills of [Python] Matplotlib chart
  13. Virtual environment of Python project
  14. 翻译:《实用的Python编程》02_01_Datatypes
  15. Translation: practical Python Programming 02_ 01_ Datatypes
  16. 翻译:《实用的Python编程》02_01_Datatypes
  17. 翻译:《实用的Python编程》02_01_Datatypes
  18. Translation: practical Python Programming 02_ 01_ Datatypes
  19. Translation: practical Python Programming 02_ 01_ Datatypes
  20. Python 3 入门,看这篇就够了
  21. Python 3 entry, see this is enough
  22. 华为大佬打造的400集Python视频学起来,学完万物皆可爬
  23. 400 episodes of Python video created by Huawei boss
  24. django之csrf_exempt解决跨域请求的问题
  25. CSRF of Django_ Exempt solves the problem of cross domain requests
  26. 1.7 万 Star!一个简单实用的 Python 进度条库
  27. 17000 stars! A simple and practical Python progress bar library
  28. Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租
  29. Python crawler: setting cookie to solve website interception and crawling ant short rent
  30. Python-Net编程
  31. Python net programming
  32. 学习Python数学英语基础重要吗?Python教程!
  33. Is it important to learn the basics of math and English in Python!
  34. Python数据分析常用库有哪些?Python学习!
  35. What are the common libraries for Python data analysis? Learn Python!
  36. win 创建python虚拟环境
  37. Creating Python virtual environment with win
  38. In order to automatically collect B station barrage, I developed a tool in Python
  39. 用Python编程语言来实现阿姆斯特朗数的检查
  40. Using python programming language to check Armstrong number
  41. Python中的解决中文字符编码的问题
  42. Solving the problem of Chinese character coding in Python
  43. Translation: practical Python Programming 02_ 01_ Datatypes
  44. Installation and use of Python and tensorflow in win10 environment (Python version 3.6, tensorflow version 1.6)
  45. Python series 46
  46. Linux安装Python3
  47. 【python接口自动化】- 正则用例参数化
  48. Python RestFul Api 设计
  49. filecmp --- 文件及目录的比较│Python标准库
  50. Installing python3 on Linux
  51. [Python] Matplotlib 圖表的繪製和美化技巧
  52. (資料科學學習手札108)Python+Dash快速web應用開發——靜態部件篇(上)
  53. 翻譯:《實用的Python程式設計》02_01_Datatypes
  54. 【python接口自动化】- 正则用例参数化
  55. 翻译:《实用的Python编程》02_02_Containers
  56. 两年Java,去字节跳动写Python和Go
  57. [Python interface automation] - regular use case parameterization
  58. Python restful API design
  59. 翻译:《实用的Python编程》02_02_Containers
  60. 两年Java,去字节跳动写Python和Go