秋招提前批已來,萬字長文教你如何增加面試大廠的成功率?

大史不說話發表於2021-07-16

本文是筆者在春季在@前端早早聊(手動筆芯)的面試專場分享的文字稿,主要針對前端社招,校招和實習的同學僅供參考,感興趣的同學可以點選連結檢視PPT和錄屏——《前端如何提高面試大廠的通過率》

位元組跳動秋季招聘提前批已經啟動,歡迎投遞幸福裡業務線,內推碼:WPBP917,大量HC,幫忙跟進面試進度,詳細介紹可見文末。諮詢內推事宜可加微信389399428.

內推碼:WPBP917

位元組跳動幸福裡2022屆校招提前批簡歷投遞通道:

【前端校招(北京)】投遞連結: https://jobs.toutiao.com/s/eggqpqB
【前端校招(上海)】投遞連結: https://jobs.toutiao.com/s/eggvKXF
【後端研發(北京)】投遞連結: https://jobs.toutiao.com/s/egguv2k
【後端研發(上海)】投遞連結: https://jobs.toutiao.com/s/eggc5KV
【客戶端研發(北京)】投遞連結: https://jobs.toutiao.com/s/eggCRQy
【客戶端研發(上海)】投遞連結: https://jobs.toutiao.com/s/eggsaT2
【測試工程師(北京)】投遞連結: https://jobs.toutiao.com/s/egpTbcm
【測試工程師(上海)】投遞連結: https://jobs.toutiao.com/s/egsBFL3
【推薦演算法工程師(北京)】投遞連結:https://jobs.toutiao.com/s/egpKjpu
【風控演算法工程師(北京)】投遞連結:https://jobs.toutiao.com/s/egKMdoY
【架構工程師(北京)】投遞連結:https://jobs.toutiao.com/s/egwoeJg
【NLP工程師(北京)】投遞連結: https://jobs.toutiao.com/s/eggcPSg
【大資料工程師(北京)】投遞連結: https://jobs.toutiao.com/s/egp64sQ

實習崗位:

【後端實習(北京)】投遞連結: https://job.toutiao.com/s/eggoDGW
【前端實習(北京)】投遞連結: https://job.toutiao.com/s/egK96v7

社招崗位:

【前端社招(北京)】投遞連結:https://job.toutiao.com/s/egKU4x6
【前端社招(上海)】投遞連結:https://job.toutiao.com/s/egK98pD


一. 廢話暖個場

對於前端工程師來說,“跳槽”通常是提升收入水平的有效途徑,但它也同時意味著你需要花費額外的時間和精力去準備面試,尤其是對於那些只有中小公司從業經歷且首次備戰大廠的同學而言是非常困難的。你看到很多人因為進入一線網際網路公司而薪資大漲,卻沒有看到為了拿到這樣的結果,他們在3~6個月的備戰週期裡付出了多少心血。那麼我們應該如何看待技術面試,又如何來更好地備戰前端面試呢?本章筆者就和你一起來聊聊面試那些事兒。

二. 戰略主線:以戰養戰

如何提升大廠的面試的成功率?一個主要戰略就是“以戰養戰”。很多候選人都能夠耐心地花1到2個月時間來整理複習專業知識,但是面試的表現卻總是不盡人意,因為“知識儲備”和“面試技巧”本來就是兩碼事。所謂“以戰養戰”,就是不斷參加面試,以此來提升自己的面試技巧,直到自己內心毫無波瀾,這個時候再去衝刺大廠,成功的機率通常會大幅提高,本質上就是一個熟能生巧的過程。因為你怕面試,缺乏面試技巧,所以才更要去面試。大家肯定以前都上過學,其實備戰大廠和備考是非常類似的。我們每個學期都要參加期末考試,但卻很少為此而感到特別焦慮,即使考試前會覺得緊張,也很少會達到焦慮的程度,因為你平常的主要任務就是學習,幾乎每天都會寫作業做練習題,不僅要參加月考和期中考試,到最後可能還有老師從不知道什麼渠道找來的各種真題試卷。大量的日常練習和模擬考試後,那些知識點你早已瞭如指掌,自己有幾斤幾兩心裡基本是有判斷的,期末考試不過就是走個流程罷了。

其實面試的最佳狀態也是如此,只是候選人都會花大量的時間去複習知識點,而對實戰演練的關注度不夠,有的甚至壓根都沒怎麼複習,仗著學校學歷的優勢直接投遞大廠,自己還覺得只是想滿足一下好奇心,結果莫名其妙地在面試記錄裡永久地留下了差評記錄,導致未來的1~2年甚至更長的時間裡,HR都不願意再給你面試機會。複習的過程中,你的知識儲備一直在增加,但面試本身的技巧不會因此提高,以至於很多人在真正面試的時候語無倫次,甚至在壓力面或者邊界測試的環節直接情緒崩潰。所以你要練習,去實戰,實戰的心態和做練習是完全不同的,只有反反覆覆經歷這樣的刻意練習,你才能夠在真正的面試中穩定發揮。需要注意的是,千萬不要拿大廠去做面試練習,大廠的面評都是有記錄的,如果評價不好,對後續的影響是很難評估的。

參加實戰練習的方式有很多種,比如找已經身在大廠的朋友幫自己做模擬面試,很多技術論壇也提供這樣的服務,由大公司的資深面試官來幫你模擬面並提供指導,當然最簡單粗暴的方式就是在招聘軟體上按待遇水平劃分梯度來投簡歷,直接參加面試,這樣的好處是你會遇到各種不同風格的面試,心理承受能力會提高得很快,拿到的優質Offer也可以增加信心,並幫助你撬動更好的Offer。需要注意的是,每次面試回來你都需要整理面試中的知識點,查漏補缺,夯實基礎。當然這個階段通常也需要在掘金、牛客網等技術論壇多看看別人的面經,看面經並不是讓你評估自己能答上來多少題,而是針對那些不會的題去查漏補缺。在真正面對大廠的考核之前,所有的準備過程都是練習,你需要從這個過程中汲取更多東西,針對自己實戰中答的不夠好的點再去加強,去調整自己表達的提綱,或者去完善簡歷的細節等等,等到真正衝擊一線企業的時候,你可能早就因為重複練習次數太多而內心裡毫無波瀾了。

三. 解構面試

大公司的面試通常都是標準化的,這也就意味著只要你滿足了客觀要求,很大概率是能夠拿到Offer的。前端面試的要點大致可以分為簡歷、基礎知識、資料結構和演算法、框架&工程能力和綜合素質這幾個關鍵模組,比較合理的節奏是用3~6個月的時間將它們各個擊破,然後去接受市場的檢驗,下面我們就針對這些關鍵點進行逐一解讀。

1.簡歷

首先是簡歷環節,作為考核流程的第一道門檻,大多數候選人對於它的重視程度是遠遠不夠。簡歷其實是面試官對你做事情態度的第一次考察,而面試的過程,更多是對簡歷內容真實性的檢驗罷了。當面試官不認識你的時候,簡歷其實就是你建立第一印象的機會,如果你還以為簡歷就是“簡單講一下自己過去的工作經歷”,那就真的想的太簡單了,有的候選人甚至連簡歷上的排版都懶得對齊。在網上找一個簡潔的模板並不會花費太多時間,但至少在某種程度上表現出你對這個崗位的重視,關於如何組織簡歷的內容,我們來講講2個比較重要的部分。

首先是專案經歷,很多候選人在寫專案經歷時,都是大致陳述一下自己所用的技術棧,然後描述某個專案做了一件什麼事情、實現了哪些頁面或功能。其實這是一種非常典型的無效描述,因為它機會沒有傳遞給面試官任何能夠為你加分的資訊。那比較推薦的做法是什麼樣的呢?你可以遵循STAR原則,也就是通過Situation(背景)、Target(目標)、Action(行為)、Result(結果)來梳理自己的專案,簡短地描述專案的背景和目標,最好各一句話就可以了。首先因為業務細節很可能是涉密資訊並不方便詳細介紹,其次是面試官更感興趣的是你在專案中使用的技術、處理問題的思路、自己的收穫和成長、對團隊的貢獻等等,也就是關於Action和Result的部分,而且面試本身就是為了評估你是否符合公司崗位要求,而不是為了評估你之前參與的業務。這裡如果有設計文稿或者資料支撐是最好的,你可以先簡單介紹一下使用的技術棧,然後用一些具體的例子來體現自己的技術、業務或是管理能力,例如:

  • 承擔了某個問題的技術攻關任務
  • 負責某個系統的整體架構和技術選型
  • 沉澱了可複用的元件、模組
  • 效能優化使得某些效能指標提升
  • 支撐緊急或重要業務取得了良好的結果
  • 帶領團隊一起做事
  • 推動某種SOP流程,提高了團隊協作效率
    ……

必要的時候,你也可以準備一些脫敏後的設計圖或是作品面試時展示。你需要知道的是對於專案經歷的描述本質上是一道證明題,它需要你列舉專案經歷中的事實和資料,來說服面試官相信你擁有不錯的技術能力、業務熟悉度或者團隊管理能力,而不是真的讓你去講專案本身的業務細節。面試過程中做專案陳述的時候依然可以遵循STAR原則,條理清晰的表達是職業化的表現,當然希望你在面試前已經把這些內容練習過非常多次。

其次是關於技術能力的描述,大致可以分為程式語言、計網原理、設計模式及架構、資料結構演算法、框架原理、全家桶的使用、效能優化和其他加分項(比如某個細分領域的專項經驗),每個點寫1-2句話基本就很豐富了,如果還是覺得寫不出,有一個更簡便的辦法,就是找到目標部門的招聘資訊,圍繞著其中的招聘要求來寫就可以了,當然底線是寫上去的技術點你要真的能講清楚。這裡需要注意的是儘量使用“熟練掌握”、“瞭解”等字眼而避免使用“精通”,它極有可能增大你面試的難度,可能是某個面試官正好也對這方面有研究想切磋一下,也可能是某個素質並不高的面試官就是想惡意刁難,無論是哪一種,對於候選人來說都是不利的。

總的來說,簡歷是你提供給⾯試官的“開放題考綱”,你寫在裡面的東西,面試官必然預設你已經掌握了,而且是可以講得不錯的,千萬不要給自己挖坑,連自己寫在簡歷上的內容都講不清楚是非常減分的。簡歷並不是你過往工作的“流水賬”或是“功勞簿”,而是隻要面試官說一句“請開始你的表演”,你就至少能條理清晰地講10-15分鐘的內容,把用到的技術從底層原理、設計思想、最佳實踐等等都講的清清楚楚的,讓聽的人感受到你對技術有追求、對業務有思考、對團隊有貢獻,這並不是即興演講,而是多次刻意練習之後才能做到的。多花一些時間打磨簡歷和自己的表達能力,等到真正面試的時候,你一定不會後悔。

2.基礎知識

在常規面試流程裡,簡歷通過評估後,你需要面對的第一輪考驗就是前端基礎,除了考察領域基本知識的掌握情況外,這個環節其實也是對候選人態度和資訊過濾能力的考察。為什麼這麼說?因為大家知道基礎知識主要就是靠背誦,我們開玩笑稱之為“八股文”。這個環節其實不同的候選人都有自己需要面對的挑戰,在校生記憶力比較好,但很可能由於缺乏實踐經驗導致對一些知識點理解不深,很難頂住對細節的追問;而社招候選人離開學校太久,對知識的理解和最佳實踐會有更深的理解,這時記憶反而成了較大的挑戰,但如果你有練習前文中介紹的記憶法,那麼相信記憶對你來說也並不困難。

有經驗的面試官通常會在評估社招候選人時更關注他對知識理解的深度,而評估校招候選人時優先關注知識廣度,如果把評估標準對調一下,很容易產生“怎麼連這麼簡單的東西都不知道”的錯覺。這也是筆者希望大家認真準備簡歷的原因,面試有一定灰度和主觀性的,想給你機會的面試官會幫助你挖掘亮點,而不想給你機會的面試官會揪住你的弱點不放,簡歷的印象分這種時候可能就會為你爭取到額外的機會。筆者自己在面試中兩種狀況都遇見過,不得不說後一種真的會讓整個面試過程特別壓抑。有的人說這些東西平時又用不到,而且並不影響平時做業務開發,我為什麼要浪費大量的時間背這些東西呢?

之前有個創業的朋友跟我講,其實每一個小的創業公司,都希望自己做出的產品是可迭代的,今天做出一個產品,獲得了一批使用者,然後使用者有反饋,我來做功能迭代,接著吸引更多使用者,就去打磨這個產品,不斷地積累直到最後這個產品做成功。每個創業者都是這樣希望的,因為這樣的對公司來說成本是最小的,但實際上你會發現大部分中小企業都不太可能很幸運的有這樣的機會,都是摸爬滾打。今天做這個專案,明天做那個專案,最開始的兩三年,對一個小公司來說活下來就是最大的問題,誰都很難保證自己當下在做的事情對未來一定是有積累的,有的時候你不得不去做一些看起來沒什麼意義的事情。面試備戰中背基礎知識也是類似的道理,當你還沒有能力去改變規則的時候,抱怨其實是沒有用的。你知道什麼事情是必須做的,只要下決心去攻克它就可以了,而不是說去抱怨這個規則來喚起其他人的共鳴,因為抱怨太廉價。

關於基礎知識筆者想說的是,它並不是研究的越深越好。因為複習的時間總是不夠的,你需要做的是 “在有限的複習時間內儘可能拿到更高的分數”,而不是去追求所謂的“吊打面試官”。 比如說編譯原理,現代化的主流前端技術底層幾乎都會基於它,很多朋友問我是否需要買那本厚厚的《編譯原理》來系統學習,我通常都會開玩笑說“你要覺得螢幕高度不夠的話就買吧”。大部分前端工程師連工作中最常用的技術棧都還沒掌握好,更不用提那些工作中幾乎用不到的底層知識了,“掌握這些知識就會變得很厲害”可能只是你一廂情願的錯覺罷了。技術是個無底洞,我們不會的東西太多了,你不瞭解編譯原理,很可能只需要學習一下the-super-tiny-compiler這個開源專案就可以了。它是一個非常簡短專案,實現了一個簡易編譯器,程式碼中有非常詳細的註釋,你可以通過閱讀原始碼來了解編譯原理的各個階段所做的事情,程式碼的正規化,用到的設計模式等等,然後嘗試自己來實現,思路卡住的地方再返回去讀原始碼,等最終自己造出輪子後,你掌握的編譯原理知識基本就夠用了,然後在專案中遇到問題時可以考慮通過Babel、EsLint、PostCSS外掛來解決,試著去編輯一下抽象語法樹,如果能在團隊內部做一些技術分享那就更好了。再比如面試考察V8,實際上很大概率都會落到三個知識點。第一就是物件的快慢屬性,第二就是Orinoco垃圾回收,第三就是V8為什麼快,它涉及到V8如何解釋執行JS的一些過程,你只需要按照關鍵詞去搜尋一些資料進行專題學習就可以了。

之所以說基礎知識是對態度的考察,是因為社群裡的面經或面試專題已經可以涵蓋90%以上的題目了,基礎知識的考點根本就不算是什麼機密,只是你自己沒有給予足夠的重視罷了,比如常見的“陣列和連結串列的區別”這道題目,有的人就只瞭解基本資料結構和兩者在選型方面的傾向,但有的同學就會順藤摸瓜去複習單連結串列、雙向連結串列、迴圈連結串列以及全O(1)複雜度的資料結構和LRU演算法等等,看起來大家刷了一樣的面經,但最終結果可能就大相徑庭。你需要經常提醒自己,基礎知識的複習是一個限時遊戲,你需要在縱向探索和橫向發展之間找到平衡。

3.演算法題

資料結構和演算法的考核已經成為面試大廠必須要面對的挑戰了,它是對候選人聰明程度和抽象能力的考察,某種程度上也是對於態度的考察,因為不願意學習資料結構和演算法而直接打消了面試大廠的念頭的人並不是少數。由於大學裡並沒有專門的前端專業,很多開發者都是通過自學或培訓班轉行進入這個領域的,在這樣的背景下想要通過自學來掌握資料結構和演算法題這類相對抽象的知識,需要付出的努力可想而知的。

那我們該如何攻克這個模組呢?筆者認為誤導性最大的建議就是“刷題”,或者說還沒有學習基礎知識的情況下開始刷題,這就好像上學的時候不看課本直接做課後題一樣,很容易得到事倍功半的結果。資料結構和演算法基礎本來就是一門課程,有其自身的基本理論知識和技巧,解題的過程其實就是從實際問題中識別出抽象模型的過程,如果你連常見的抽象模型和它們的特點都不知道,面對題目的時候沒有任何邏輯線索,刷題時沒有意義的。你所做的事情,可能只不過是看著題目發呆20分鐘,腦子裡一片空白,然後去看答案背程式碼,刷了很多類似的題後,你可能會因為總結出一些解題套路而沾沾自喜,殊不知很多技巧可能早就作為資料結構的特性寫在書本里了,根本就不需要你自己再發明一次。這種備戰方式會讓你的面試表現更依賴記憶力和運氣,而不是邏輯思維,刷過的題就更容易做出來,沒刷過的題或者稍微變換一下就可能束手無策,更不用說關於資料結構的選型思路或演算法複雜度分析的話題了。所以希望你在刷題之前,先來建立基本的知識體系,搞清楚各個抽象結構的特點和常見操作的程式設計套路,認真做課後練習,然後再去刷題,這時你會發現自己更容易識別出題目的特點,是在考棧、佇列、連結串列還其他結構,適合用哪種演算法等等,這樣可能並不需要刷太多題就能夠達到大廠面試的要求,畢竟你面試的不是演算法崗位。當然這方面知識掌握得越牢固,給面試官的印象通常也會更好。

很多演算法題的解法並不唯一,在真正面試的時候,你可以先使用暴力解法寫出一個能執行的程式,然後再嘗試使用複雜度更低的方法,這樣即便沒能寫出更優的解法,至少也能保證這個環節是通過的。如果實在覺得沒有思路,可以請面試官給予提示,或者要求更換題目。畢竟如果面試通過的話,你就是面試官未來的同事,嘗試溝通一下又有什麼關係呢?

4.框架&工程能力

框架和技術能力的考核通常會出現在第二輪面試中,用於考察候選人的技術深度、技術廣度和工程化能力,最常見的問題就是專案經歷和框架原始碼原理的掌握,如果你也在寫簡歷時已經覺得自己“專案沒亮點”或者“技術沒深度”,可能更需要的是推遲面試的計劃,專門花一些時間去做相關的積累,可以針對自己工作中的專案來挖掘,也可以另起爐灶自己做一些技術性更強的專案,而不是因為看到別人拿到心儀的Offer就覺得迫不及待,滿腦子都是如何為了面試而“臨時抱佛腳”。

首先如果你在日常開發中沒有做專案覆盤的習慣,那麼一定要現在開始養成這個習慣,每個需求迭代做完後嘗試從專案、技術、管理三個方面去反思一下,最好能主動去找自己的直屬領導或導師去溝通。筆者自己在做一線開發時,工作中所有的經手的專案都會編寫開發紀要,內容包括這個專案有哪些協作方,每個人提供的資料分別是什麼,重要的會議記錄,過程實施中出現了什麼問題,自己的程式碼設計方案,每天的工作日誌,遇到了什麼問題,自己有什麼想法和建議。等到特性發布上線後,自己會專門拿出一天來,針對遇到的每個問題去查查業界的解決方案,或者提出自己的技術規劃,並在未來的1-2個月來落地。這樣的方式看起來很傻,但對於理清思路真的很有用,大家做的專案都是一樣的業務開發,但我相信用心的人會收穫更多。後來自己也把“開發紀要”沉澱成文件模板,分享給其他同事,要求自己指導的實習生每一輪迭代完後必須主動把開發紀要發給我,我會和他們一起來進行簡單的覆盤梳理。當你真正用心去做一些事的時候,進步就會更快,也正是這些看似無關緊要的小習慣,最終形成了你和別人之間的巨大差距。
其次,你可以去技術社群找一些整體設計方案類的文章,然後參考作者的思路來嘗試復現一套系統,最好是能夠和自己的工作實踐結合起來,也就是所謂的“造輪子”,這裡的關鍵點在於你一定要自己動手把這個系統做出來。在位元組的新人培訓會上,主管經常會問新人這樣一個問題:“位元組為什麼要花很大的成本自己來深耕垂類領域,而不是直接收購其他公司呢?”其實這其中的道理是一樣的,因為只有“躬身入局”才能獲得對市場的“一手資訊”,從而建立正確的認知,並以此作為商業決策的依據。你可以嘗試自己動手去落地一個專案,無論是關於埋點、告警監控、低程式碼搭建、資料視覺化等等任何一個領域都可以,在這個過程中你可能會產生很多關於細節的疑問或者新的想法,這時候再跟朋友討論或者直接找文章的作者去諮詢,通常都會有不小的收穫,很多時候你甚至會發現自己的思路和別人有非常多的契合點,這對自己而言是非常棒的精神鼓勵。

對於你工作中使用的主流開發框架,無論是ReactVue還是Angular,如果日常開發中確實沒有遇到過什麼技術問題,可以去官方程式碼倉的Issues裡面去找,可能會有意想不到的收穫,裡面的問題可真是應有盡有,尤其是框架版本迭代的時候有可能都會帶出非常多意料之外的影響,比如Vue2.x版本中對於nextTick方法的底層實現方法就發生過好多次更改,在應用層引發了很多莫名其妙的問題,這其實就是一個非常容易從問題下沉到實現原理,再下沉到設計思想的問題,很值得去研究探討,面試時也不至於面試官問“使用框架的時候有沒有遇到過什麼問題,是怎麼解決的呢?”,你只能風輕雲淡地回一句“沒有遇到過”,然後兩個人四目相對,場面尷尬至極。

5.綜合素質

面試的過程,通常前期比較側重從對基礎知識和技術能力的考察,而越到後期越注重對綜合素質的考察。想要在綜合素質的考察中表現出色,除了平時需要關注程式的設計思想、業界的技術會議、技術活動等等做好談資的積累,還需要去練習自己口頭表達的邏輯性和條理性,也就是掌握職場技能中非常重要的“結構化思維”。邏輯思維能力並不一定是與生俱來的,它是一項技能而不是一種天賦,這就意味著普通人通過學習和練習都是可以掌握的。關於“結構化思維”的話題,你在網上可以找到很多相關的資料,它們可能涉及到“金字塔原理”或者“麥肯錫方法”之類的關鍵詞,筆者接下來只做一些簡單的介紹。無論多好的方法,你都需要通過練習和實踐把它變為自己的技能後才會受益,“知道但做不到”的人滿大街都是,希望你不要成為其中的一員。

“結構化思維”通俗地講就是指你在描述一件事情前,對於如何描述這件事有一個“自頂向下”或是“分解結構”的思維框架的,相當於頭腦中有一個大綱,這樣在表達的時候更容易表現出思維的條理性,而不是讓人覺得你想到哪說到哪。比如這樣一道智力題,200毫升水怎麼放到100毫升的杯子裡?很多人可能會說喝掉一半水,或者說換個大杯子,或者其他什麼答案,越腦暴越開心,還覺得自己想象力特別豐富,問題在於這道題壓根就不是用來考察你的想象力的,想象力是右腦的能力,而工作中更多地需要左腦的邏輯思維能力。

那我們如何讓自己的表達更具有條理性呢?首先200毫升水為什麼無法直接放進100毫升杯子,因為水比較多杯子容積比較小,那麼解決這個問題的兩個主要方向就是:1.嘗試減少水的量,2.嘗試增加杯子的容積。然後再分別向著這兩個方向完善,這樣聽的人就更容易跟上你的思路,因為它心裡已經有一個提前宣告的認知結構(就是指分為兩個主要方向)。如果你仔細想想就會發現,上面的思路似乎並不完備,比如我們可以將水凍成特殊形狀的冰塊,變成固體後它也能放在杯子裡,這種情況下水的量也沒有減少,杯子的容積也沒有變大,但依然可以滿足題目的要求,你可能會突然意識到最初的思維框架並沒有考慮到水的形態造成的影響,那這道題是做錯了嗎?不重要。還記得嗎,面試考核的重點永遠都是你,面試是為了評估你,對面試官而言重要的是看到你面對一個問題是如何分析思考和規劃的,有條理地描述自己如何分析一個問題比問題的答案更重要。

我們再來看一個經典三分法結構“是什麼,為什麼,怎麼樣”的例項。有一次技術群裡大家在討論一道前端面試題“TCP連線為什麼要握手三次”,當時就有人給丟擲答案說,因為服務端的socket是有數量限制的,他說的可能是對的,但是我確實沒能明白這個答案跟問題有什麼直接關係,也有人給出了這樣的回答“因為三次握手更可靠,客戶端首先傳送XXX報文給服務端......”我當時看到這個題,腦子裡很快就擬定了“是什麼、為什麼、怎麼樣”的提綱,接著就在群裡分享了自己的思路:

  1. 先提及一下自己會按照“是什麼”“為什麼”“怎麼樣”這三個點來解答,給聽的人一個基本的認知框架和心理預期
  2. 是什麼?首先講什麼TCP,它是一個講究可靠的全雙工連線
  3. 為什麼?講為什麼三次握手就可靠,兩次的話可能發生什麼問題
  4. 怎麼樣?詳細聊聊TCP連線在三次握手時報文中的關鍵資訊

如果把“結構化”的陳述從答案中去掉,其實和你給出的答案基本是一致的,但有了“結構化”的輔助,整體的回答就容易讓聽的人覺得更清晰。如果你對HTTP3有一定了解,就知道它的底層是基於UDP協議來傳輸的,但依然需要做到可靠傳輸,在解答完整個題目後,你就可以很自然地主動引導話題“其實說到可靠傳輸,HTTP3中儘管使用UDP協議,但是......”,這樣面試中就很容易把話題延續下去,把一個話題聊開聊透是非常能夠提高面試官好感度的,當然這對於你的知識儲備也是一種考驗。

當然上面的示例並不是唯一的“三點結構”,當我們覆盤專案時可能會按照“事前、事中和事後”來拆分,再比如談及能力模型時通常會按照“技術、業務、管理”來拆分,再比如之前提及的STAR原則就需要4個維度,業務上做使用者留存分析時常用的AARRR漏斗模型,就是將使用者生命週期分為5個階段……更復雜的問題可能有更復雜的方法論,它們的價值就在於幫助你將高複雜問題的問題分解為多個或者多級低複雜度的問題,從而為解決問題尋找到突破口。結構化思維的練習其實就是幫助我們練習職場中分析思考問題的基本模式。至於如何更有效地培養結構化思維,你可以閱讀更多專業的書籍,本文不再展開。

除了表達技巧,平時對於行業動態的關注也很重要,你可以嘗試自己寫技術部落格,關於如何寫作,前面的文章已經介紹過了,你需要做的是主動思考,而不僅僅是摘抄知識點;另外也可以多關注國外的技術會議,你會發現面試中遇到的很多開放題,通常都可以找到一些業界大咖在技術演講中分享自己的觀點。為什麼提到國外的技術會議?國內大會的技術分享更關注技術的實現細節和業務實踐的應用上,如果沒有相關的背景知識或領域知識是很難聽懂的;而國外的大會在設計思想和問題本身上探討的非常多,很多都是在講自己遇到了一個什麼問題,是怎麼思考的,怎麼解決的,現場演示的程式碼看起來也比較簡單,因為很多複雜的技術方案都沉澱到底層了,這些知識實際上對於大家在面試時回答開放題是非常有幫助的。比如面試中可能經常會被問到ReactVue框架該如何選型,你可能已經有自己的答案了,但如果你看過尤雨溪在2019年JSConf上的主題演講《在框架設計中尋求平衡》,再結合自己的認知,也許就能得出更棒的答案。另一方面,國外的技術分享視訊中經常會帶有大量的動畫,這對於開發者理解一些抽象的概念或者過程是非常有幫助的,希望你不要錯過。

四. 尾聲

每一份令人羨慕的成功背後,都有著不為人知的努力和付出,你會發現其實備戰大廠面試的思路和我們以前上學時學習考試並沒有什麼本質區別,認真去做了,結果總不會太差,願你能堅定地做自己喜歡的事,願你能早日取得心儀的Offer。關於面試的話題,如果你還有什麼希望深入探討的,歡迎直接與我聯絡。

五. 位元組跳動幸福裡前端招聘

社招、校招、實習均在火熱招聘中~

幸福裡

幸福裡是位元組跳動旗下集內容、社群、工具於一體的房產資訊、服務、交易平臺。產品基於個性化推薦引擎向使用者推薦優質的房產內容和全面、真實的房源資訊,致力於為使用者提供全面、專業、可靠的購房決策支援。
幸福裡始於2018年8月,是國內發展最快的,集內容、社群、工具於一體的房產資訊與服務平臺,業務覆蓋一二線共23城,現累積註冊使用者千萬,目前進入高速增長期,等你一起野蠻進化~

幸福裡前端團隊

幸福裡FE團隊誕生於2018年9月,從最初的4人組成長到今天的50人,成員年齡跨度從90後到00後。技術棧覆蓋當下前端主流全方向(Vue/React/Typescript/nodejs/webgl/flutter/Taro),團隊內大牛多多,技術氛圍濃厚,有VR專家老吳、3D渲染一哥博哥、《Flutter實戰》作者wendux、深諳Web框架及工程化的董老師、以及技能樹滿點的傑哥等等,還有,團隊經常組織線下學習及娛樂活動,是一個開心且戰鬥力極強的team。只要你覺得自己夠出色,或想讓自己變得更出色,還等什麼,放肆地加入我們吧。

實習生福利

我們會為每一位實習生配備一名mentor進行日常決疑解惑和指導,同時我們針對不太熟悉前端的同學進行一個專門的築基培訓,幫助快速補齊前端基礎,以及明確後續學習和成長路線。

蹭一波熱度

感謝你堅持到最後,推薦我的個人技術部落格https://github.com/dashnowords/blogs ,如果看完對你有幫助,可以幫忙點個Star,非常感謝!

相關文章