想來字節做研發,可以先看我這三年的體會和建議。
大家好,我是白露啊。
今天和大家分享一個真實的故事,是關于字節網友分享自己三年的工作經歷和感受。
由于白露也曾在字節待過兩年,可以說,說的都對。
你有沒有想過來字節跳動做研發?如果你有這個想法,那么不妨先看看,或許可以為你提供一些參考。
當我還沒來字節的時候,“字節一年,人間三年”這句話就耳熟能詳。
盡管身邊對字節的評價褒貶不一,但我始終相信,“實踐是檢驗真理的唯一標準”。
于是,經過一番思考,我決定接受挑戰,來到這個充滿機遇和未知的公司。轉眼三年過去了,我有許多感受和你們分享。
新人Landing
很多人會認為字節對新人的友好度不夠,但我的體驗確大不相同。
入職的第一天,你不會立馬陷入忙碌的工作中,通常會給新人一到兩周,甚至更長的時間去熟悉團隊的各項需求開發和質量管理流程。
在新人階段,很多人(包括我自己)都會遇到不理解的業務邏輯,再加上文檔不全,這時你可能會感到迷茫,不知道該找誰咨詢,甚至覺得提問會難為情。
我的建議是,善用搜索,學會思考,大膽提問。無論是mentor還是不認識的同事,大都會樂于幫忙。
業務和個人成長
字節的一個特點就是始終保持創業精神,擁抱變化。很多人吐槽字節的業務變化頻繁,但其實這種變化在任何公司都是常見的。
真正重要的是,你要如何適應這些變化并在其中尋找機會。
比如最近火熱的LLM和AIGC技術,字節投入了大量資源去探索新產品和技術。
如果你覺得某個新領域讓你充滿激情,那就大膽去嘗試,把它當成一次自主創業。在字節,有很多充滿創業精神的同事,他們的經驗和激情會激勵你前進。
工作氛圍和公司文化
字節的工作氛圍和企業文化非常獨特。
這里沒有PPT文化,卻有很多有價值的飛書文檔:知識庫、技術方案……
這些文檔不僅僅是普通的工作文檔,更是一個寶藏,有許多優秀且樂于分享的同事在上面提供他們的經驗和知識,包括旅游攻略、理財思維、工作認知和行業分析。
字節的氛圍平等,沒有排資論輩的文化,沒有嚴格的上下級關系,對事不對人,更注重結果。與優秀的人合作,做有挑戰的事,極大地擴展了我的視野和知識。
我的建議
如果我需要對初入職場的你提幾點建議,我會說:技術實力是基本功,但清晰的表達和強大的共情能力,更是能提高溝通效率、事倍功半的利器。
技術實力主要靠自身打磨,無論在工作中,還是工作外,不能拉下。技術沒有上限,要有自信,大多數情況下,掌握的知識足以應對工作內容,但如果想要把工作做得更好,必須多花時間和精力思考。
至于清晰的表達和共情能力,這些軟實力在工作中同樣重要。在與團隊成員和其他協作方合作時,清晰的表達能提高效率,而良好的共情能力,能站在他人角度思考問題,在邊界區域主動了解他人的工作內容,更有利于事情的推進。
Ending
紙上得來終覺淺,絕知此事要躬行。
字節跳動是一個充滿機遇和挑戰的地方,從白露自身的的體驗來看,如果你是一個很樂于挑戰的同學,那么十分適合加入字節。
我說一些其他的,在字節:
- 字節確實很值得去,很鍛煉人,也能學到好多東西。我有學弟朋友一年從1-2升職到2-1,和他對接的人都不敢相信他是一個校招生。
- 字節是一個很大的平臺,有眾多業務線:短視頻、信息流、電商、生活服務……干就完了!
- 字節一年,工作三年。是真的。
希望這篇文章能給你帶來一些新的視角和啟發,無論是對于職業規劃,還是對企業文化的理解。未來,我們將繼續分享更多有趣且有潛力的公司和人物。大家有任何問題或想法,歡迎在評論區和我討論分享~
簡單的場景題——TopK
面試官: 同學你好,今天我們來討論一個關于大數據處理的問題。假設你有10億個數據,需要找出其中最大的10000個。你知道怎么解決這個問題嗎?
求職者: 當然。我會使用最小堆的方法來解決這個問題。具體步驟如下:
- 先拿10000個數建堆:先從10億個數據中取出前10000個元素,構建一個最小堆。
- 逐個添加剩余元素:然后遍歷剩下的元素,如果當前元素大于堆頂元素(堆中的最小值),則將當前元素替換堆頂,并調整堆結構使之仍然是一個最小堆。
- 遍歷完后,堆中的10000個數就是所需的最大的10000個。
這種方法的時間復雜度是O(n log m),其中n為數據總數(10億),m為需要找出的最大元素數量(10000)。
面試官: 那么,你能解釋一下復雜度分析嗎?為什么時間復雜度是O(n log m)?
求職者: 當然。
- 建立初始堆:從前10000個數建立一個最小堆,時間復雜度是O(m),其中m是10000。
- 遍歷剩余數據:對于每個剩余的數據,都要進行一次比較和可能的堆調整。比較操作是O(1),堆調整是O(log m)。
所以總的時間復雜度是O(n - m) * O(log m),簡化后就是O(n log m)。
面試官: 很好。那么,如果內存受限,你會怎么優化這個方法呢?
求職者: 如果內存受限,可以使用Hash方法將數據劃分成多個partition,每個partition交給一個線程處理。線程的處理邏輯仍然是使用最小堆。最后由一個線程將結果進行歸并。
具體步驟如下:
- 數據劃分:將數據按照Hash方法劃分成n個partition。
- 多線程處理:每個線程處理一個partition,使用最小堆找出每個partition中的最大10000個數。
- 結果歸并:最后一個線程將所有partition的結果進行歸并,得到最終的最大10000個數。
面試官: 那么,這種方法的瓶頸在哪里?你會怎么進一步優化?
求職者: 這種方法的瓶頸在于數據傾斜,即每個線程的處理速度可能不同,快的線程需要等待慢的線程,導致最終的處理速度取決于最慢的線程。
為了解決這個問題,可以將數據劃分成c × n個partition(c > 1),每個線程處理完當前partition后主動取下一個partition繼續處理,直到所有數據處理完畢,最后由一個線程進行歸并。
這樣可以均衡負載,提高整體處理速度。
面試官: 很好。最后一個問題,如果數據中含有較多重復值,你會怎么處理?
求職者: 如果數據中含有較多重復值,可以先進行去重操作,然后再進行后續處理。去重的方法可以使用Hash或者依圖法。這樣可以大大減少需要處理的數據量,提高整體的處理效率。
面試官: 很好,今天的面試就到這里了,感謝你的回答。我們會盡快通知你結果。祝你好運!
參考原文:https://offernow.cn