天天看點

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

本文是筆者在春季在@前端早早聊(手動筆芯)的面試專場分享的文字稿,主要針對前端社招,校招和實習的同學僅供參考,感興趣的同學可以點選連結檢視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個月來落地。這樣的方式看起來很傻,但對于理清思路真的很有用,大家做的項目都是一樣的業務開發,但我相信用心的人會收獲更多。後來自己也把“開發紀要”沉澱成文檔模闆,分享給其他同僚,要求自己指導的實習生每一輪疊代完後必須主動把開發紀要發給我,我會和他們一起來進行簡單的複盤梳理。當你真正用心去做一些事的時候,進步就會更快,也正是這些看似無關緊要的小習慣,最終形成了你和别人之間的巨大差距。

其次,你可以去技術社群找一些整體設計方案類的文章,然後參考作者的思路來嘗試複現一套系統,最好是能夠和自己的工作實踐結合起來,也就是所謂的“造***”,這裡的關鍵點在于你一定要自己動手把這個系統做出來。在位元組的新人教育訓練會上,主管經常會問新人這樣一個問題:“位元組為什麼要花很大的成本自己來深耕垂類領域,而不是直接收購其他公司呢?”其實這其中的道理是一樣的,因為隻有“躬身入局”才能獲得對市場的“一手資訊”,進而建立正确的認知,并以此作為商業決策的依據。你可以嘗試自己動手去落地一個項目,無論是關于埋點、告警監控、低代碼搭建、資料可視化等等任何一個領域都可以,在這個過程中你可能會産生很多關于細節的疑問或者新的想法,這時候再跟朋友讨論或者直接找文章的作者去咨詢,通常都會有不小的收獲,很多時候你甚至會發現自己的思路和别人有非常多的契合點,這對自己而言是非常棒的精神鼓勵。

對于你工作中使用的主流開發架構,無論是

React

Vue

還是

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個階段……更複雜的問題可能有更複雜的方法論,它們的價值就在于幫助你将高複雜問題的問題分解為多個或者多級低複雜度的問題,進而為解決問題尋找到突破口。結構化思維的練習其實就是幫助我們練習職場中分析思考問題的基本模式。至于如何更有效地培養結構化思維,你可以閱讀更多專業的書籍,本文不再展開。

除了表達技巧,平時對于行業動态的關注也很重要,你可以嘗試自己寫技術部落格,關于如何寫作,前面的文章已經介紹過了,你需要做的是主動思考,而不僅僅是摘抄知識點;另外也可以多關注國外的技術會議,你會發現面試中遇到的很多開放題,通常都可以找到一些業界大咖在技術演講中分享自己的觀點。為什麼提到國外的技術會議?國内大會的技術分享更關注技術的實作細節和業務實踐的應用上,如果沒有相關的背景知識或領域知識是很難聽懂的;而國外的大會在設計思想和問題本身上探讨的非常多,很多都是在講自己遇到了一個什麼問題,是怎麼思考的,怎麼解決的,現場示範的代碼看起來也比較簡單,因為很多複雜的技術方案都沉澱到底層了,這些知識實際上對于大家在面試時回答開放題是非常有幫助的。比如面試中可能經常會被問到

React

Vue

架構該如何選型,你可能已經有自己的答案了,但如果你看過尤雨溪在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,非常感謝!