我從外包辭職了,10000小時后,走進字節(jié)跳動拿了offer

前言:

沒有絕對的天才,只有持續(xù)不斷的付出。對于我們每一個平凡人來說,改變命運只能依靠努力+幸運,但如果你不夠幸運,那就只能拉高努力的占比。

2020年7月,我有幸成為了字節(jié)跳動的一名Java后端開發(fā),正如標題所說,我從外包辭職了,10000小時后,走進字節(jié)跳動拿下了offer。相信同行都清楚,從外包進大廠有多難,運氣之余,也離不開我自己的腳踏實地,所幸每踏出的一步都留下了厚厚的腳印。

image.png

下文內(nèi)容涉及到:面試題(含答案)+學習筆記+電子書籍+學習視頻

有需要學習的小伙伴需添加此v: maxiaoye5397 即可獲??!。

A:字節(jié)跳動IES互娛面試經(jīng)歷還原(抖音后臺)

<1> 字節(jié)跳動抖音4面面試題

因為我個人有復盤的習慣,所以在面試字節(jié)跳動時,基本是做到了每一輪結(jié)束就把面試題給總結(jié)出來,當然總結(jié)出來的可能跟實際情況有細微出入,但相差不大,基本上是我記憶里的極限。

Java部分:

  • synchronized,lock,AtomicInteger底層原理* HashMap,ConcurrentHashMap底層結(jié)構(gòu)原理* 講講服務注冊于發(fā)現(xiàn)(這部分主要講了springcloud eureka 和部分 zookeeper,zookeeper的選舉機制)* Spring AOP 的實現(xiàn)方式,siglib 能否代理final修飾的類?* JVM垃圾回收過程,并詳細講一種垃圾回收器* 強引用,軟引用,弱引用,虛引用應用場景

計算機網(wǎng)絡:

  • 擁塞控制和流量控制* 快重傳和超時重傳* 為什么四次揮手后客戶端等2MSL* DNS解析全過程* http2.0,http3.0* https的連接過程* CA證書的驗證過程* RPC框架了解嗎?* 如何設計基于udp的可靠傳輸?* tcp如何保證數(shù)據(jù)安全性的?磁盤如何保證數(shù)據(jù)不丟的?

操作系統(tǒng):

  • 阻塞io和非阻塞io* 進程和線程區(qū)別,通信方式分別是什么?* 虛擬內(nèi)存和物理內(nèi)存* linux 按 ctrl + c 中斷的原理* 協(xié)程高效在哪?

MySQL:

  • Innodb,B+樹,聚簇索引和非聚簇索引區(qū)別* 一千萬條數(shù)據(jù),問 b+樹大概多高?* 為什么用b+樹而不是 b樹,紅黑樹?* 在設計聯(lián)合索引時需要注意什么?* 聯(lián)合索引最左原則的底層原理* mysql 的 MVCC 以及是否解決幻讀?* 手寫sql,實現(xiàn)一個按時間降序的分頁查詢* redo log,bin log,undo log

Kafka:

  • kafka的rebalence* ISR* 如果新加進一個消費者會發(fā)生什么?* 如何保證數(shù)據(jù)一致性?

Redis:

  • RDB和AOF區(qū)別* 為什么RDB 要 fork子進程而不是線程?* redis基本數(shù)據(jù)類型* zset的底層數(shù)據(jù)結(jié)構(gòu),跳表何時增加高度?* 分布式 redis,緩存和數(shù)據(jù)庫讀寫不一致,答的延遲雙刪* 面試官讓隨便講講redis,所以還說了緩存穿透,擊穿,雪崩以及處理方法

場景題和智力題:

  • 打字的智能提示和糾錯的原理,讓你來設計,你怎么做?* 如果有一個訪問過的所有網(wǎng)站的記錄集合,如何快速判斷當前網(wǎng)站是已經(jīng)訪問過?(考慮布隆過濾器)* 從一個網(wǎng)站下載的時候,進度條如何實現(xiàn)的?* 64匹馬,八個賽道,問至少跑多少次能找到最快四匹馬?* 操作系統(tǒng)給你一塊空閑內(nèi)存,你如何設計使用和回收?

手撕代碼:

  • 柱狀圖中矩形最大面積 leetcode 84* 查找第k小的數(shù),用堆以外的方法做* 給m個房子涂n種顏色,相鄰房子不同色,cost[i][j]表示給i號房子涂j顏色代價,求最小上色總成本。(LeetCode原題)

其他:(HR和Leader都問了一些開發(fā)性問題)

  • 你認為遇到過最大的挫折是什么?怎么解決的?* 職業(yè)規(guī)劃* 對字節(jié)跳動的認識* 你認為字節(jié)是一家年輕的公司嗎?年輕是核心競爭力嗎?* 你有沒有崇拜的人* 不考慮公司地理因素,最想要去哪個城市工作?* 平時的興趣愛好?* 喜歡寫博客嗎?看什么書?
image.png

贈送我的刷題題庫(1:BAT一線大廠面試真題)


image.png

贈送我的刷題題庫(2:專題面試題)

<2> 字節(jié)跳動面試總結(jié)(一些心得和小建議)

  1. 字節(jié)跳動對算法真的非常重要,提前刷題真的很有必要,不然基本上沒戲,運氣好的說不定還能被問到原題,當然你是算法大神,就不需要浪費時間在這上面了。
  2. 基本上每輪都有算法題,1~3道左右,難度不一,一般根據(jù)當次面試情況來的,會考慮的面試者的表現(xiàn),但也不會太為難你。
  3. 拿到算法題時,不要立即作答,可以先和面試官聊一下自己的思路。
image.png

B:我為什么想要去字節(jié)跳動?(字節(jié)跳動的優(yōu)勢)

①福利待遇

我不是hr,也不是給字節(jié)打廣告,這里真的要提一下字節(jié)跳動的福利待遇絕對是一線廠子里數(shù)一數(shù)二的。加上我是外包出身,這種待遇給我造成的落差感就更明顯,讓我覺得能夠進字節(jié)跳動工作算是我最大的幸運了。

至于福利待遇,這里隨便提及幾點:

  1. 彈性打卡
  2. 房補(額度算很高了,算很人性化)
  3. 免費的三餐、下午茶(吃胖了)
  4. 免費健身房
  5. 頂配16寸MacBook
  6. 各種節(jié)日禮包

②巨大的知識庫

字節(jié)跳動對于我來說,算是一個巨大的知識庫,之所以這么說,從面試的流程及細節(jié),到后來我入職之后工作上面的安排,都讓我有不一樣的觸動。從這幾方面,我們都能夠感受到公司對于員工的職業(yè)規(guī)劃非常重視,你的主管和導師都會主動去找你溝通這方面的,這對比我之前的外包,是截然不同的地方。而在這個交流過程中,我獲得到的,不是一星半點。

最讓我佩服的是,字節(jié)有統(tǒng)一的入口可以導航到海量的指南和知識沉淀,甚至是其他各個產(chǎn)品線整理的技術(shù)和業(yè)務文檔等等。

③我看到了認同

來到字節(jié),我看到了認同,收獲了歸屬感。字節(jié)跳動雖然年輕,但在做事上有共同一致的目標,這里的人講“字節(jié)范兒”,它不是條條框框的束縛,它是一種精神食糧,實質(zhì)是一種價值認同。恰好,擁有同一種價值認同的人走到了一起。

④雖辛苦,但不感覺累

字節(jié)跳動是一家非常年輕化的公司,對于一線的互聯(lián)網(wǎng)公司來說,996是常態(tài),字節(jié)跳動也脫離不開“加班”二字。但是字節(jié)給我最大不同的感受是,忙碌且生機勃勃。在字節(jié)工作一段時間了,我也算是跟上了這里的節(jié)奏,雖然辛苦,但我卻一點也不感覺累,因為在充實的工作環(huán)境中,我是有所收獲的,在公司野蠻生長的同時,我個人也得到了快速的成長。

另外,別以為一線大廠的“打工人”只會死工作,字節(jié)人最大的特點就是年輕,他們同樣會玩,每個人都有自己的愛好,騎行、狼人殺、健身、攝影、瑜伽等等,這與我之前對大廠人的印象顯然不同,我也一點一點在慢慢被影響著。

⑤反思:關(guān)注工作效率

以前覺得自己的工作效率和時間管理做得還不錯,至少能拿出時間做一點大家想做卻沒有做的事情,但現(xiàn)在才發(fā)現(xiàn)這也許只是錯覺,你總做容易的事情,當然不會感覺到時間的壓力,即便是項目進度比較緊的時候,加加班,搞搞996似乎也就那么回事。我們通常都會愿意延長時間,而不是考慮如何提高效率,在同樣的時間內(nèi)完成更多的工作,當然也有很多不言自明的客觀原因。

來字節(jié)后,我才從身邊同事的工作細節(jié)中看到了什么才是“效率”。

image.png

C:外包教了我什么?(積累了什么?)

很多人認為在外包學不到什么東西,但我卻不這么認為,無論你身處什么環(huán)境,造成什么樣結(jié)果的人都是你自己。所以,在外包工作的這些年,我并不是單一的機械化敲代碼,在這個過程中,我會主動地去復盤,去總結(jié),去學習,而慢慢積累的工作方式才鑄就了我今天的“質(zhì)變”。

在外包中,我積累到了什么?

  1. 代碼效率;
  2. 各種項目和業(yè)務的理解;
  3. 熟練使用增刪改查。

在外包中,我復盤了什么?做了哪些總結(jié)?(寫了一些博客,做了一些筆記總結(jié),附下PDF)

  • Java架構(gòu)成長筆記
image.png
  • Redis核心技術(shù)筆記(學習總結(jié))


    image.png
  • Spring全家桶學習筆記(SpringBoot+SpringMVC+SpringCloud+源碼等)
image.png
  • 其它
image.png

D:下一個3年如何規(guī)劃?

1.確定發(fā)展方向

程序員生涯大致分為五個階段:

  • 第一階段:2-3年,初級程序員
  • 第二階段:3-5年,中級程序員
  • 第三階段:4-7年,高級程序員
  • 第四階段:5-8年,互聯(lián)網(wǎng)架構(gòu)師,大數(shù)據(jù)工程師
  • 第五階段:8年+,技術(shù)總監(jiān),技術(shù)主管,首席架構(gòu)師

目前,我處于第二階段,有一定的工作經(jīng)驗,可以獨立做一些項目,也有自己的代碼習慣,甚至在團隊中我也可以擔任重要的角色。而日后的1-2年內(nèi),我肯定是要往三階段過渡,甚至是四階段過渡。

2.梳理學習路線

想要快速成長,一條合理且正確的學習路線才是最為重要的,所以梳理學習路線,是我目前學習上最重要的事情。(個人梳理的學習路線圖如下)

目標:能夠獨當一面,在專業(yè)領(lǐng)域具備輔導他人的能力

學習內(nèi)容:并發(fā)編程與JVM實戰(zhàn)+緩存中間件+消息中間件+搜索中間件+高并發(fā)+高可用+搞擴展+網(wǎng)絡通信與協(xié)議+分布式與微服務+分布式權(quán)限控制+微服務熔斷降級與限流+微服務鏈路追蹤+底層&源碼深入解讀+一線大廠分布式場景實戰(zhàn)


image.png

3.學習方法

我個人的學習方法很簡單,利用碎片時間進行系統(tǒng)性的學習。關(guān)于學習方法,我個人喜歡閱讀書籍文檔結(jié)合視頻的方式,對于這些我自己個人也有一些整理。

  • 閱讀書籍文檔:


    image.png
  • 看視頻學習:


    image.png

結(jié)尾:未來愿景及祝福

我知道,對于一些學歷沒有優(yōu)勢的人來說,外包是別無選擇,但是未來的路究竟要怎么走,取決你的步子邁多開。每個人都有自己的選擇,如果你喜歡穩(wěn)定,那按部就班適合你,但你有想法,不甘平庸,那就別讓外包埋沒了你。

最后,希望未來的我發(fā)展順利,早日拿下p7!同樣,也祝愿你實現(xiàn)自己的人生理想,愿我們都越來越好,共勉!

友情分享:文章碼字不容易,希望多多點贊+轉(zhuǎn)發(fā)+評論支持一波。

需要文章中提到的面試題、筆記、電子書、學習視頻需添加此v: maxiaoye5397 即可獲?。?。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容