再見了,位元組跳動

Sunshine_Lin發表於2022-01-13
本文為轉載文
作者:十一月de囂張
連結:https://juejin.cn/post/704770...

昨天,是我在位元組的最後一天。

去年入職的時候,我就在想,自己會在位元組待多久,一年?還是兩年?畢竟“位元組一年,人間三年”。現在答案揭曉了,一年零兩個月。不過還好,超過了七個月的“平均在職時間”。

這一年裡,我參加了抖音春節專案,在北京封閉開發了兩個多月,負責錦鯉會場的開發,從零上手自研的跨端框架,做了不少效能優化,給使用者靜態頁面般的流暢體驗。也認識了很多優秀的同事,就不一一點名了。

這一年裡,我參與維護了公司級的 Node.js 框架,重構型別生成,優化 TS 開發體驗,提供多個 CLI 命令輔助開發。

這一年裡,我參與了互娛前端研發框架的建設,基於前端基建以及後端 Node.js 框架,從零建設了前後端一體化的能力,讓前後端可以一起開發、構建、部署,既可以做 Page Server,也可以做服務端渲染,通訊上前端可以直接呼叫後端函式,不再需要註冊路由,通過高階函式和裝飾器增強函式功能,通過 TS 天然實現前後端型別安全,提高全棧開發效率,成功支援了抖音 PC 版以及很多內部中後臺專案。

這一年其實成長蠻大的,來位元組前只做過 PC 端的業務以及 H5,來位元組後做了跨端,做了 Node.js。而且位元組技術氛圍也是很濃厚的,各種討論群可以學到很多知識。經歷的兩次績效評估結果也都不錯,可以晉升了,在入職即巔峰的位元組也漲薪了,一切似乎都在往好的方向發展。

可我還是要走了,就在有獵頭問我看不看機會的時候。對我來說,位元組的工作並沒有那麼好,今年的種種操作讓我對位元組越來越失望。我也開始反思自己在這份工作裡還能得到什麼,繼續幹下去的意義大不大。離職的念頭一旦產生,就會生根發芽,揮之不去。會讓我停下瘋狂加班的腳步,讓自己慢下來,回過頭會發現自己曾經也挺“卷”的,往前看彷彿又是無盡的黑洞。開始反內卷,開始厭倦下班看不到夕陽的日子,開始游泳健身,也開始了跳槽之旅。

跳槽其實並不順利,因為我不想去大廠卷,所以瞄準了創業公司或者外企。10月底開始面試,第一家面的一個創業公司週末聊了一個小時,做了筆試題,讓我感覺還不錯,下週一11月1號就跟 leader 提了離職的想法,其實是想可以少做點事有更多時間準備面試,結果5號也就是週五這家給了我平薪。。下午有家很想去的公司也掛了,因為他們沒有前端,想招的是更偏業務的前端,能擔任產品以及UI的角色,面試時的感覺也比較難受,所以這周給我打擊還挺大的,還好我調節能力還可以,就繼續好好準備唄。

週末做了我下家的第一輪 coding test,LeetCode 715 的變形,對於 hard 我一般直接看題解,不過題解其他語言都有特殊的資料結構,js的題解有個思路不錯,但很難理解而且也不對,我基於他的思路寫了個更好理解的版本,並且補充了各種測試用例。週末晚上也做了下微策略的四輪筆試,感覺最難的是英語部分,平均一分鐘要做一道選擇題,前面查單詞浪費太多時間了,後面就看大體意思直接選了,不過也順利過了。

第二週從外企鈴盛開始,很慚愧鈴盛一面就掛了。。一開始問專案問方案設計之後就是一系列的js題目,巨集/微任務執行順序,一段React程式碼有哪些問題,原型鏈,Class,純函式,高階函式,閉包,設計模式,依賴倒置原則等等,有幾個沒答對,不過我覺得對我幫助還挺大的,一是這也是一個查漏補缺的過程,能知道哪裡還有不足,二是設計模式這塊讓我回去又看了看solid,感覺其實平時做重構的時候,solid就是很好的一個理論支撐。

回去準備了一下,第二天迎來了微策略的面試。微策略每輪都會有一段英語的自我介紹,提前寫好背一下,三輪下來感覺自己已經背的很熟了。第一輪技術面除了正常的各種問題以及手寫節流外還有兩道演算法,第一道沒找到原題,大致就是把二叉樹右子節點變成左子節點的右子節點,當時寫了個後序遍歷,第二道是反轉連結串列,都順利寫出來了。

圖片

二面就是聊天,三面HR面一開始都說英語,後來詞彙量實在不夠了,就“Can I speak Chinese?” 不過最後也掛了,HR說我沒想好,可能當時說了什麼真實想法吧。

週五開始了我下家的兩輪面試,第一輪直接就是演算法,LeetCode 189 輪轉陣列,不過 k 可以是負數,這個是後面加的條件,會問你是否有漏掉的case,如果刷過這道題的可能不會想 k 是負數的情況。我沒刷過,就寫了個比較常規也比較笨的方法,然後就開始問複雜度,問怎麼優化,當時我可能也不清醒,都扯到連結串列上了(挖坑),然後他順勢就問了旋轉連結串列(LeetCode 61)怎麼做,這個我也沒做過,但我知道是雙指標。於是繼續回到陣列上,繼續想優化方法,我想了更高效的api,以及不佔額外空間的原地調整順序,其實都接近答案了,就是沒說出最關鍵的點,時間就到了。

第二輪考系統設計,先是問了問專案,然後說看你對後端也挺了解,那來設計了short url系統吧,開啟 drawio 就開始畫,把我能想到的都畫出來,然後面試官提了一些條件(左上角),怎麼實現這些功能,計算需要多大儲存,怎麼優化系統,怎麼做到高可用等等。

圖片

晚上又面了下滴滴,有HR聯絡我就接了,正好是我同事的前部門,據說不是很好,不過也沒給我過,雖然我覺得面得還不錯,反饋說不合適。

週末簡單準備了下迎來了第三週,從我下家的第三輪CTO面開始,不過在美國,所以是早上9:30面的,依舊是先聊專案,然後一道經典題:從輸入url到渲染頁面都發生了什麼,我各個方面都說了遍,然後開始一點點深入了,全球多個節點的話DNS一般怎麼做,怎麼返回最近的節點,這個我沒了解過,他也跟我說了下實現。HTTPS相關,怎麼握手,怎麼驗證證書等。怎麼讓頁面渲染更快,系統地說了下。後端怎麼做負載均衡,說了下有哪些演算法,rr,p2c等,還問了一個更底層的問題,忘了是啥了。然後問使用者資訊比如餘額等怎麼儲存,我很懵不知道問啥,就扯微服務的話一般是拆分比如使用者中心,交易中心等等,然後他問選擇什麼樣的資料庫,SQL還是NoSQL,我說了SQL,查詢快啥的,他說是強一致性。最後考一道演算法,LeetCode  647 迴文子串,先說思路,我一開始說了個O(n^3)的,他問怎麼優化,提示了下回文子串的特點,我就懂了,利用對稱結構,從中間向兩邊延伸,複雜度多少?O(n^2)。好,那寫吧,寫完跑一下case,漏了一種情況,再調整一下,ok。

然後又加面了一輪,說第一輪不是很好,讓前端的再面面,週四上午又面了一輪技術,是個快手的前端老哥,正好今年也做了春節專案,他們快手退出了我們位元組才頂上了,就聊了聊,然後就是一些js的題目,手寫curry,看我寫的挺快,就加了道演算法,沒有原題。。

圖片

讓我邊思考邊交流下思路,我說先看看有沒有規律,發現沒有規律,他問沒有規律怎麼辦,我說暴力求解,他說那你寫個暴力的,最後也寫出來了,就是 n=100 的 case 一開始沒考慮到,花了點時間。最後問了下這個要怎麼解,面試官說雙指標,其實就是維護兩個佇列,不斷取最小值。

最後就是聯合創始人面,早上7點。。一開始她也說英語,說不好意思這麼早面試,我又被迫亮出“Can I speak Chinese?”大法,回到“有句話叫早起傻一天,我估計今天就要傻一天了”。然後就是從我上大學聊到現在,感覺把我各種經歷都問了個遍,最後問問題,我問了一個如何學英語,她講了下她們有個耶魯畢業的engineer靠看劇學了n國語言的故事,然後說有什麼問題可以給她發郵件,讓我覺得還挺親切的。

第二週就出offer了,稍稍a了下,還比較滿意吧,就接了。後面還有些其他面試,這裡就不多說了。這次跳槽之旅感覺最大的進步就是做題,基本上沒碰到過刷過的題,但是都能做出來,包括後面有個讓我寫100以內的數字轉羅馬數字的:

圖片

另外 HTTPS 是個高頻題,每次必問。然後就是一定要先找幾個面試找找感覺吧,查漏補缺,想面的放到後面。最後就是一定不要裸辭,壓力真的很大,尤其是我還揹著房貸。實際上我在兩週前提離職的時候還沒定好下家,只是有人說我騎驢找馬,我覺得面的也差不多就提了,不過還好最後結果還可以。

結語!

我是林三心,一個熱心的前端菜鳥程式設計師。如果你上進,喜歡前端,想學習前端,那我們們可以交朋友,一起摸魚哈哈,摸魚群,加我請備註【思否】

image.png

相關文章