<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NLP 轉(zhuǎn)后端開發(fā),順利拿到字節(jié)實習 offer!!

          共 7358字,需瀏覽 15分鐘

           ·

          2022-11-08 17:03

          分享一位學弟的面經(jīng)分享,寫的很棒,希望能對你有參考價值!

          下面是正文(文中的我并非 Guide 本人)。

          簡單介紹一下我的基本情況,上海雙非本 + 985 碩,目前在讀研二。本科 + 研究生大部分時間都在搞算法, NLP 相關(guān),今年終于認識到了理想和現(xiàn)實的差距,遂在 5 月份下定決心轉(zhuǎn)后端開發(fā)。之后處理一些事情,暑假 7 月底的時候正式開始學習 Java,歷時三個月, 9 月底開始投日常實習,10 月 17 結(jié)束。面試過的公司包括:B 站,蔚來,百度以及字節(jié),B 站掛在二面,其他均拿到日常實習的 Offer,最終選擇了字節(jié)跳動。

          從以上我的基本情況大家能看出,我的戰(zhàn)線比較短。但是在這些時間里,我的作息基本上都是早 7 晚 11,很辛苦。

          這篇文章首先分享我的面試經(jīng)歷,后面的部分與大家分享我的學習經(jīng)驗。

          面經(jīng)部分

          下面的部分總結(jié)了面試過程中被問到的知識點(還記得的部分),以及我個人的一些心得體會,供大家參考。

          百度

          百度給我的面試體驗還是蠻好的,是我面試的所有公司中唯一一家對八股考察非常詳細的。一面是非常詳細的八股面試,涉及到 Java 基礎(chǔ)知識、數(shù)據(jù)庫、spring、jvm、多線程、場景設(shè)計等等,基本上準備的都被問過了,但是整體來說難度不高,知識面比較廣但是不會深挖。二面來說區(qū)別就非常大了,注重實踐能力的考查,而且會深入到底層原理。

          面試之前會有自我介紹的環(huán)節(jié),包括項目介紹。百度兩面對我的項目提問都不多,可能是我介紹項目的時候就比較詳細的原因。

          接下來的部分是知識點整理:

          百度一面(1h+):

          • 常用 GC 算法,常用的垃圾收集器, G1 了解嗎
          • 場景題:cpu 打滿且頻繁 full GC,怎么解決?
          • 有 jvm 調(diào)優(yōu)的經(jīng)驗嗎?實際工作中遇到過內(nèi)存相關(guān)的問題嗎?用過哪些堆棧工具調(diào)試?
          • Mysql 索引,數(shù)據(jù)結(jié)構(gòu)為什么使用 B+ 樹
          • 索引覆蓋了解嗎
          • 索引失效的場景
          • 簡單描述一下數(shù)據(jù)庫的四種隔離級別以及對應(yīng)的三種相關(guān)問題
          • MVCC + 鎖 保證隔離性
          • 造成幻讀的原因了解嗎,快照讀、當前讀。
          • 數(shù)據(jù)庫自增 ID 和 UUID 對比
          • HashMap 源碼,數(shù)據(jù)結(jié)構(gòu),如何避免哈希沖突,對比 HashTable
          • HashMap 源碼中,計算 hash 值為什么有一個 高 16 位 和 低 16 位異或的過程?
          • 為什么重寫 equals 還要重寫 hashCode,不重寫會有什么問題
          • ConcurrentHashMap 底層實現(xiàn),擴容問題。
          • 如果讓你自己實現(xiàn)哈希表,你會考慮什么問題?
          • 場景題:億級別黑名單、短鏈接,你考慮使用什么數(shù)據(jù)結(jié)構(gòu)?布隆過濾器、前綴樹。其中布隆過濾器問了基本的原理和實現(xiàn)方式
          • Java 引用類型,強軟弱虛
          • Java 是引用傳遞還是值傳遞
          • Object 類你了解哪些方法
          • 接口和抽象類的區(qū)別
          • 線程池核心參數(shù),以及工作原理
          • ReentrantLock 對比 sync 鎖
          • lockInterruptibly()、acquire()、tryAcquire() 方法
          • CAS 機制了解嗎,存在什么問題
          • 對象鎖和類鎖的區(qū)別
          • 如果讓你自己實現(xiàn)阻塞隊列,如何實現(xiàn)?阻塞喚醒這一部分,如何實現(xiàn)?
          • ThreadLocal ,Volatile
          • 看你項目中用到了 Netty,簡單介紹下吧。這里還有個 問題是問到 Netty 和 SpringBoot 整合的,但我一直都沒理解她想問什么
          • 粘包拆包問題,Netty 解決粘包拆包的 Decoder
          • Spring 事務(wù)了解嗎,Spring 事務(wù)的注解不生效,是什么原因
          • 算法題:手寫快速排序,時間復(fù)雜度,穩(wěn)定性

          整理感覺不錯,基本都答上來了,按照 Guide 哥星球里的內(nèi)容,認真準備就好。

          百度二面(45 min):

          • 看你項目中用了一致性哈希做負載均衡,簡單介紹一下
          • 項目中 CompletableFuture 如何使用的
          • 算法題:給定一個字符串,找到其中最長回文串
          • 計網(wǎng)和組成原理學過吧,你認為哪個掌握的好?我選了計網(wǎng)。這一部分問的很深入,我沒來得及記錄,以下部分只是一些零散片段,但是整體問的時候是有邏輯的。
          • OSI 七層模型
          • TCP 三次握手,四次揮手整個過程包括狀態(tài)的轉(zhuǎn)換。為什么是三次握手、四次揮手。發(fā)送 Fin ,實際的意義代表什么?(發(fā)送方?jīng)]有數(shù)據(jù)要發(fā)送了,可以斷開連接)
          • 四次揮手,為什么等待 2 MSL
          • 流量控制、擁塞控制
          • 后面關(guān)于網(wǎng)絡(luò)就更深入了,TCP 底層是怎么實現(xiàn)的,如果讓你用 Java 模擬 TCP 的過程,做一個仿真,你有什么想法。大學學習計網(wǎng)的時候,協(xié)議棧之類的了解過嗎(這部分我都不懂,認栽了)
          • 看你項目中用到了 Spring,自動裝配的過程了解嗎。
          • Spring 啟動類的注解,介紹一下
          • 因為我項目中用到了,所以被提問了 Spring 二次開發(fā)常用的擴展點,還涉及到了 Bean 的生命周期。BeanPostProcessor,在你項目中如何使用的
          • Spring 中你常用哪些注解?Autowired 實現(xiàn)原理

          計網(wǎng)仿真 TCP 以及后面深入的部分我不懂, Autowired 實現(xiàn)原理 沒說清除,其余的都答上來了。

          字節(jié)跳動

          在我整個的面試過程中,字節(jié)給我的體驗是最好的。一面二面的面試官都非常好,面試的問題、要求都說的很清楚,需要注意的點都提前告訴了我,甚至二面的面試官會提醒我,"在回答問題的時候這邊會有敲鍵盤的聲音,是我在記錄,不要影響你回答問題。"對于初次求職面試,體驗感拉滿。

          除此之外,字節(jié)的面試和百度思路不一樣。百度是從八股出發(fā),引出一些實際場景遇到的問題。字節(jié)幾乎沒有八股,是從項目出發(fā),結(jié)合工程經(jīng)驗,主要考察思考的過程,關(guān)鍵點答出來之后,結(jié)果對錯可能不是很重要(這里是我主觀臆斷的)。

          字節(jié)一面(1h):

          • 自我介紹,項目部分主要介紹了 rpc 項目,后續(xù)的問題都是基于這個項目
          • rpc 遠程調(diào)用的整個流程
          • 項目中的 SPI 機制,介紹一下原理以及你做了哪些改進
          • 項目中用到了負載均衡算法,詳細介紹一下
          • 一致性哈希的原理,虛擬結(jié)點
          • 項目中的序列化方案,為什么序列化,你都了解哪些常用的序列化方法。
          • 你項目中使用了 Kyro 序列化,優(yōu)點你提到了,缺點了解嗎
          • 通信協(xié)議是你自己設(shè)計的,假如后面需要變更,比如添加新的字段,你項目中如何處理的?
          • 服務(wù)的灰度發(fā)布介紹一下,如何實現(xiàn)的?
          • Zookeeper 作為注冊中心,假如崩潰了怎么辦?這里開始連環(huán)問了
          • 你提到了 Zookeeper 的一致性,它是如何保證的?
          • ZAB 協(xié)議,選舉的過程,這里問的很詳細
          • Zookeeper 是強一致性嗎?
          • 網(wǎng)絡(luò)分區(qū)了解嗎,CAP 理論
          • Zookeeper 如何應(yīng)對網(wǎng)絡(luò)分區(qū)的,腦裂問題了解嗎,如何解決?
          • 假如我同一時間有大量服務(wù)發(fā)布,你提到了 Zookeeper 只有主節(jié)點負責寫, 怎么解決?假如主節(jié)點崩潰了,新選舉出的主節(jié)點仍然沒辦法面對我的大流量,也崩潰了,如何解決?
          • MQ 的原理,你知道哪些 MQ,各自有什么特點,什么時候需要用 MQ
          • 你剛才提到了服務(wù)端保護機制,如何實現(xiàn)的?這里我答了限制連接數(shù)以及接口限流,基于責任鏈模式。之后問了用到的令牌桶以外的常用限流算法。
          • 算法題:鏈表反轉(zhuǎn),你知道的所有實現(xiàn)方式。這里我寫了遞歸和非遞歸兩種。

          整個面試的過程中大腦都是高速思考的,甚至從面試官的問題中得到了好多啟發(fā),是背八股掌握不到的,體驗非常好。面試的問題幾乎都答上來了,有一些不太熟悉的在面試官的提醒下也都回憶起來了(這點非常 nice,其他面試不會就直接過了,而字節(jié)會認真引導你,看你究竟掌握到什么程度)。事后 hr 小姐姐還告訴我面評非常好,鼓勵我認真準備二面。

          字節(jié)二面(1h):

          字節(jié)二面的經(jīng)歷比較魔幻了, 面試官在倫敦有時差,因此是晚上九點開始面試的,由于面試官比較忙,整個面試過程比較簡單,自我介紹 + 項目介紹之后簡單提問了幾個問題(沒有印象深刻的技術(shù)問題,這里就不重復(fù)整理了),溝通了一下實習時間,直接做算法題了。

          • 算法題:有一個 n * n 的棋盤,每個格子有 RB@ 三個狀態(tài),R 表示紅色,B 表示藍色,@ 表示此路不通。機器人從左上角走到右下角,每次只有上下左右四個方向選擇,相同顏色之間沒有代價,跨越不同顏色代價為 1,求解機器人從左上角走到右下角,最少的代價。
          • 這里我用回溯求解的,很快就寫出來了,思路也沒問題。但是復(fù)雜度計算卡住了,在面試官多次且反復(fù)的提示下,算出來了。最后提問環(huán)節(jié)面試官跟我說后續(xù)優(yōu)化可以加一些剪枝操作

          二面沒有遇到難度比較大的問題,大部分時間都被我卡在了算時間復(fù)雜度(很菜勿噴)....

          B 站

          綜合來說,B 站面試給我的體驗是非常差的,一面的時候我感覺還沒進行比較深入的交流,問了一些八股,很快就結(jié)束了。二面上來之后,問了你覺得自己項目有什么亮點嗎,然后就來了一道 Hard 算法,又結(jié)束了.......

          B 站一面(30 min)

          • Rpc 遠程調(diào)用的流程
          • 一致性哈希算法詳細介紹
          • 為什么選用 Zookeeper 作為注冊中心,注冊中心作用是什么
          • 動態(tài)代理
          • Redis 在你項目中如何使用的,穿透、雪崩、擊穿了解嗎
          • 你項目中用的是 RabbitMQ,為什么,和其他 MQ 對比如何?
          • RabbitMQ 的原理
          • 你項目中的 灰度發(fā)布、分組管理如何實現(xiàn)的
          • 無算法題

          之后在我以為他準備深入提問的時候,面試官告訴我面試結(jié)束了,整個過程不到 30 min,而且沒有算法題。

          B 站二面(30 min)

          • 簡單介紹下你的項目,是工程項目、學校項目還是自己學習的
          • 你認為項目中有什么亮點?
          • 算法題:K 個有序數(shù)組,輸出最終排序后的數(shù)組 (K merge)。

          B 站是我第一個走面試流程的公司,二面在字節(jié)一面的前一天。B 站二面是我第一次在面試過程中寫算法題,結(jié)果就遇到個這,當時心態(tài)是崩掉的。因為第一次確實有些緊張,思路不清晰。雖然是力扣 Hard 難度吧,但是事后覺得也沒有很難,做不出來還是大多歸因于自己。但是復(fù)盤的過程中,我發(fā)現(xiàn)在面試的過程中,雖然太緊張了沒實現(xiàn)出來,我把兩種解題思路都思考到了,并且面試官提問時間復(fù)雜度,在提示下也求解出來了(很菜勿噴),整體表現(xiàn)自我感覺也算可圈可點吧。

          給大家的經(jīng)驗就是,平時刷題的時候時間復(fù)雜度求解一定要重視!

          備戰(zhàn)部分

          下面是我從七月底寫出第一行 Java HelloWorld 直到現(xiàn)在的大致時間表:

          • 七月底,正式開始投入時間學 Java,在師兄、師姐的推薦下選擇了 JavaGuide 作為主線的學習資料,之后加入了知識星球,認真閱讀了關(guān)于學習路線的內(nèi)容。
          • 七月份用了一周多的時間熟悉 Java 語法。前期主要跟隨 小碼哥戀上數(shù)據(jù)結(jié)構(gòu)課程,一邊復(fù)習算法數(shù)據(jù)結(jié)構(gòu),一遍熟悉 Java 語法。
          • 八月份開始,選擇了 Guide 哥推薦的千峰商城項目作為入門,大概用了兩周時間,全程跟隨視頻敲完代碼,收獲非常大。這一過程中,戀上數(shù)據(jù)結(jié)構(gòu)這門課程是同步學習的,基本就是早晚做項目,下午學算法。
          • 多線程、Jvm 方面的知識,我選擇了馬士兵的課程。這兩部分是同時學習的,理解為主。選擇馬士兵課程的原因之一,是因為馬老師講課是以面試為導向的,一邊理解一邊掌握八股文了,效率比較高,總共耗時兩周左右。
          • 網(wǎng)絡(luò) IO 部分的知識 以及 Zookeeper、MQ 等中間件,這三部分是一起學習的,參考的資料包括馬士兵課程、稀土掘金的 Zookeeper 課程、慕課網(wǎng)的 MQ 課程以及尚硅谷的一些資料,耗時大概一周左右吧。
          • 以上打基礎(chǔ)大概花費了一個月的時間。
          • 九月份返校之后,開始著手準備簡歷上的項目,花了一些時間在 Guide 哥的知識星球里翻看優(yōu)秀開源項目介紹,選擇了 Guide 哥的手寫 Rpc 項目以及星球推薦的 IM 項目。
          • 有了基礎(chǔ)之后,項目做起來還是比較快的,加上有源碼可以參考,各自用了一周就基本實現(xiàn)完成了。這里總共耗時兩周。
          • 后面的時間里,我針對這兩個項目做了深入研究。在極客時間稀土掘金里,我分別找到了 rpc 和 IM 的相關(guān)課程。由于都是文字的形式,加上自己實現(xiàn)過基本功能,讀起來非常快,快速整理出了課程內(nèi)作者對于項目深入思考的部分,之后融合到自己的項目中。這里我認為是非常關(guān)鍵的一步,在面試的時候我能夠頂住面試官的連環(huán)問,和這些課程中的相關(guān)內(nèi)容以及思考題的深度是分不開的。在這一過程中,我還有幸加了幾個作者大大的微信,不停地和作者交流自己的思考,甚至發(fā)現(xiàn)了課程中的一些小瑕疵。非常幸運他們都很有耐心,給予了我很多指導,尤其是 crossoverJie 大佬,幾乎是有問必答,甚至在我面試之前,還給予了我很大鼓勵(相當感動)。
          • 大概到九月中旬,我就開始整理簡歷并且投遞了,之后一邊復(fù)習八股,一邊完善項目。
          • 九月底,我的項目已經(jīng)基本整理完成了。我花了一周的時間系統(tǒng)梳理八股文,制作了很長的腦圖幫助我回憶知識點。
          • 十月份,國慶節(jié)的假期里,我保持著每天 15+題的速度,快速找回了算法題的手感。由于時間真的太倉促了,時間復(fù)雜度這一塊我沒有重視,后面也付出了慘痛的代價。提醒各位讀者,算法復(fù)雜度的計算一定要重視起來。
          • 最終功夫不負有心人,我收獲了百度、蔚來以及字節(jié)的日常實習 offer。JavaGuide 以及知識星球內(nèi)部的 《Java 面試指北》在我整個備戰(zhàn)的過程中起了很大作用,是我的指路明燈。

          寫在最后

          由于從本科開始就一直做算法 NLP 相關(guān)的工作,對后端開發(fā)了解甚少,加上時間緊迫,我不得不采取一種囫圇吞棗的方式進行學習。對我而言,在不到三個月的時間里,從 Java 的入門階段到通過日常實習面試實在付出了太多,每天早 7 晚 11 的作息時間對身體也產(chǎn)生了一些傷害,如果時間允許,我更希望節(jié)奏慢下來,把每個知識點都學扎實、學透徹。

          本篇面經(jīng)實際上沒有太多東西可以分享給大家,因為筆者實際上也只是一個才學了不到三個月 Java 的新手小白。如果說文章里有什么是值得大家參考的話,我希望是面對目標絕對堅持的毅力以及面對困難永不退縮的決心,是它們支撐著我逐漸越過一個又一個的“不可能”。

          ··········? END? ··············

          ?? 如果本文對你有幫助的話,歡迎?點贊&在看&分享?,這對我繼續(xù)分享&創(chuàng)作優(yōu)質(zhì)文章非常重要。非常感謝!

          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲婷婷激情在线 | 黄网在线 | 内射无套内射国产精品视频 | xxxxpb日本亚洲 | 国产精品禁久久久精品 |