前言
偷偷的發面經,然后驚艷老鐵們。
小插曲,周六發了一篇關于螞蟻和騰訊的面試題,出于一些原因,覺得內容不妥,存在著泄題嫌疑(高壓線警告??),嚇得我趕緊
考慮到閱讀效果不錯,還是想分享出來,于是對部分內容做了修改,把原題內容刪除。
歷經一個月戰線,投了阿里和騰訊,具體部門這里不展開了,都是核心部門,提供的舞臺很大,至于最后選擇去哪一家公司,可以關注文末。
接下來復盤一下這一個月來的面試感受吧。
本文沒有具體的題目,根據我的簡歷,來展開談一談,可能會被問到的題目。
最后以下都是個人觀點,個人能力有限,如果有錯誤,希望能糾正我。
簡單介紹
2021屆畢業生,掘金里面的TianTianUp,雙非本科院校(江西師大),沒有聽錯,那個彩禮“天價”的省份。
21屆里面,應該算起步比較晚的了。2020年暑假7月份,才開始認認真真“復習”前端,當時連js作用域,閉包,瀏覽器緩存都不清楚。因為起步晚,所以后續錯過了秋招。
現在我才深刻意識到,視野的重要性。
當時大三學了點vue,做了點看起來牛逼的東西,就覺得很牛了,于是春招投了阿里,結果慘不忍睹。
重點當時沒有放心上,還是繼續玩,繼續打游戲。
還好之后覺悟過來,才有了后面網易的故事。
嗯,也導致后續很多環節跟不上其他同屆大佬。
秋招的時候,jack,三元同學,林不渡,單哥,承和等大佬都是offer收割機,各種騰訊,快手,字節ssp,無不沖擊著我這個萌新。
暗自下決心: 我也要去大廠核心部門,去做有意思的事情。
有了規劃,接下來就是看技術博客,動手實踐,總結梳理,寫博客。
熬了無數的夜,無數個周末在社區徘徊,這個知識點不懂,查文檔,看不明白就換一篇文章,爭取做到一遍過。
這么堅持了半年,2021年的春招,結果讓我滿意,但結果還是有些遺憾的。
滿意的地方: 借面試機會,跟著大佬交流學習了一波。
遺憾的地方: 其他大廠沒有去嘗試,沒有趁著面試機會去接觸其他領域的大佬。我覺得原因可以歸咎于:
找不到大廠核心部門的內推,希望去核心部門。
需要筆試,覺得流程很慢,沒有人跟進。
所以后面提到了面試機會。
整個春招的過程中,聊一聊心態發生的改變吧,迷茫--緊張--坦然--自信,最后到意向書,到拿到offer。
面試機會
基本上我是靠內推的,是一位校招大佬幫忙推的,覺得履歷還行,給了個面試機會,才勉強給我通過的。真的是勉強給的機會,因為學校確實跟985比起來,差距很大,還好有網易實習經歷buff,加上寫了點博客筆記等筆記輸出,才有這個面試機會。
內推,內推,內推,這是最快,最有效的方式,可以第一時間知道面試結果,面評,以及后續的面試流程。
至于其他的,美團,百度,shopee走的都是官網流程,需要筆試。騰訊這邊到四面總監面的時候,我基本上都放棄了。
最好的方式就是找靠譜的內推吧,比如秋風大佬,字節找ssh(昊神),很靠譜的。
好的履歷也很重要:
學校985,211。
大廠實習經歷,眾多offer。
扎實的基礎,讀過源碼,理解框架設計思想。
社區有一定影響力,堅持做博客產出。
開源貢獻,開源項目維護者,熱愛前端。
基本上,我會把握其中的一兩個點,爭取做好,才會有后續的面試機會。
有了面試機會后,剩下的就是如何去做好一場面試的準備工作了。
如何準備
這個鏈接里面總結的特別好,我基本上看它復習的。
https://bitable.feishu.cn/app8Ok6k9qafpMkgyRbfgxeEnet?from=logout&table=tblEnSV2PNAajtWE&view=vewJHSwJVd
不過面完,給我感覺,重在平時的積累,基本上都是圍繞項目展開的,之前做的項目得好好準備一下,比如項目難點,項目如何做優化的,項目的亮點。
這里推薦一個鏈接:
面試被問項目經驗不用慌,按這個步驟回答絕對驚艷
https://juejin.cn/post/6844904102795706375
至于其他的部分,更多的是向面試官展示自己的優點,閃光點。
面經心得
基本上都是圍繞我的簡歷來梳理內容,有興趣的話,可以聯系我要pdf,可以給你參考下。

簡歷上技能寫的不多,基本上保證的是我寫的都能聊上兩句。
從我簡歷部分來看,主要涉及幾個點:
React部分,這里面可以問的內容也很多。
瀏覽器相關的。
計算機網絡部分。
算法與數據結構,基本上這算是我的一個殺手锏吧。
webpack相關的,同時會涉及到babel。
我現在回顧我的面試部分,都是圍繞這些點張開的。可能我是應屆生校招的原因,很多時候,考察的是我學習能力,理解能力,對前端熱愛的程度這些方面。
基于這幾點,展開聊聊我面試過程中會注意的點,以及圍繞我寫的專業技能,會聊到的一些話題。
自我介紹
很重要的一個環節,說不定可以奠定本次面試的節奏,會根據你說的內容,來張開問你,同時也會給給面試官一個緩沖的時間來重新熟悉你的簡歷。
面試自我介紹,要:
遵守極簡原則,突出重點,忽略細節。
小參考:
我是誰。
我的亮點,可以描述一下幾個點,最近的經歷。
我為什么需要這份工作(其實這個我自我介紹都是忽略的)。
圍繞上面的點,我會著重突出,我在大學的經歷,主要是算法相關的經歷,接著就是我在網易實習期間的收獲,以及中間會持續更新博客,寫總結。
基本上,面試官對我的掘金博客,以及大學搞算法的經歷感興趣,進入了自己擅長的領域,就會輕松很多。
記住一個點,面試是跟人打交道,學會去展示自己,以及及時跟面試官做合理的溝通很重要。
以上是我會注意的一些點,我也是這么去做的,盡量圍繞自己的亮點去展開,當然了,有些面試官有自己的風格,可能一上來就是問你項目或者做題,那么我們應該如何把握呢。
項目相關
我覺得項目相關的話題,是個挺難的話題,圍繞它展開的話,可以延伸出很多話題,我列舉了些有意思的:
項目難點。(如何發現問題,解決思路,最后結果)
項目考慮過優化嗎,你是如何優化的,思路是什么。
項目的組織架構,你對它的現有架構的理解,哪些優點值得借鑒,哪些缺點需要改進。
如果讓你從0到1建一個項目,你考慮的點是什么,有哪些流程需要注意的。
項目中代碼規范,你們項目有方案嗎,你了解的代碼規范有哪些方案。
說一說項目中你們是如何測試的,有哪些單元測試方案,能不能說一說。
項目中引入TS的原因,為什么這么做。
不過對于應屆生來說,問項目都是圍繞你簡歷來問的,比如我當時的項目,我覺得沒有好的難點,我就著重說明了下,我對項目是如何優化的,優化了哪些點。
整個面試下來,都會問,你項目寫到的優化的地方,能不能具體聊一聊。
這個時候,真的要把握機會了,問到你會的點,你得有清晰的思路,可以參考STAR法則。
重新回顧一下 STAR 法則四要素:
Situation:事情是在什么情況下發生,基于一個怎樣的背景;
Task:你是如何明確你的任務的;
Action:針對這樣的情況分析,你采用了什么行動方式,具體做了哪些工作內容;
Result:結果怎樣,帶來了什么價值,在整個過程中你學到了什么,有什么新的體會。
這里有段話,我覺得說的很不錯:
往往大部分同學一上來就直接介紹做了什么以及實現的過程,條理也比較清晰,內容也頗具技術含量。但很多同學很容易忽略了 Situation 和 Result 的部分也就是背景和結果。或者是在面試官進一步了解追問細節的時候容易驚慌失措。這些原因往往都是由于面試前對自己的經歷沒有將來龍去脈講清楚以及總結不夠全面和深入。
基本上,我對項目這塊目前能聊的就是這么多,對了,如果你面大廠核心部門,可能還需要關注的點是,項目的組織架構理解,讓你實現一個項目,整個流程需要注意考慮哪些點。
這塊真的可以著重準備一下,以我這次春招經驗來談,是重點。
聊完項目,接下來就圍繞我簡歷寫到的專業技能,依此來梳理一下。
JS基礎
考察的是一些基礎問題,這里最好過一遍,切記不要丟大分。
比如我寫了對異步編程有理解,所以得看一下,異步編程的解決方案,它的發展過程,每種解決方案的優缺點,得了得,最后我會拓展一下async方案存在的缺陷,對錯誤的捕獲,聊到babel相關的,現有的babel社區是否實現了對async語法做錯誤捕獲處理,以及談了下,社區里面的這個插件存在的缺陷。
總結的話,我會圍繞面試官問的基礎點展開,把相關連的部分描述一下, 面試官有興趣的話,會順著你的思路往下問。
至于面試過程中問到JS基礎相關的題,這里就不列舉了。
React相關
第二部分,簡歷上寫了React相關的,那我總結了些可以會問到內容:
React框架的原理,聊一聊它是如何執行的。
React更新流程,主要經歷了哪些步驟。
React的setState的理解,需要注意哪些。
vue和React區別,如何從項目的選型上區分它們。
React框架的理解,vdom,patch,批量更新,渲染的過程,經歷了啥。
你對React源碼很感興趣,可以關注一下卡頌大佬,他的自頂向下學 React 源碼值得推薦學習一下。
當然了,React真的要問,太多可以問你的啦:
比如讓你手寫一個Hoc組件,實現類似怎么樣的功能,思路是怎么樣的。
比如Hook你對它的理解,當時面試問到了Hook實現原理,還好看平時喜歡折騰,看了下大致流程。
React-fiber機制引入,解決了什么問題,具體的流程是怎么樣的,數據結構上發生了哪些變化。
React的時間切片了解嘛,如何實現的,流程能不能說一說。
這次問到好幾個React相關的問題,更關注的點是你對原理的過程,有關注嘛,大致是一個怎么樣的過程,最后又從中學到了哪些點。簡歷上寫看過React原理相關的,得慎重啊!!!
快進到瀏覽器部分。
瀏覽器相關
這也是我簡歷上專業技能寫到的一個點,這里也寫了幾個點。
輸入URL到頁面渲染。
DNS解析的端口號是多少,為什么采用UDP協議。
你渲染流程知道的這么詳細,圖層,分層,繪制,柵格化線程池,GPU加速,能不能說一下,對你開發有啥影響呢。(其實這個時候,被無情打臉了,知道這個有什么用,當時反問我)
瀏覽器緩存。(可以拓展一下,結合webpack如何命中緩存,然后就到你熟悉的webpack領域了)
瀏覽器進程架構歷史。
瀏覽器內核。(這個可以了解)
瀏覽器的垃圾回收機制 。
經典八股文了,不過其實我感覺也是可以拓展的,問到瀏覽器緩存的時候,結合webpack談一談如何命中緩存的。比如講到瀏覽器的渲染流程時,我們都知道里面的一些具體流程,比如分層,繪制,柵格化操作,然后其實可以結合實際去思考一下,有哪些具體的用途呢,這里我們需要借助瀏覽器中的performance來看看。

里面有很多關鍵性指標,比如 Long ?Task執行的細節,跟面試官交流了下,排查性能問題,我是如何通過這個Performance相關的細節去把握的,當然了,里面的內存使用情況,是否出現內存泄露問題,都可以借助它。
遇到八股文不要怕,盡可能的向外拓展,往自己熟悉的地方聊。
最近也在學習性能優化相關的部分,發現Performance相關的部分,還是有很多地方可以學習的,可以持續關注我噢~
webpack相關
基本上,看我簡歷上寫了這部分的,會問到,部分問題:
webpack打包原理。
import最終被webpack編譯打包成什么。
路由懶加載的原理是啥,能不能結合webpack說一說。
寫過webpack loader 或者插件嗎。
webpack 如何做性能優化。
babel的原理了解嗎,babel是用來干嘛的。
說一說常見的babel庫,你有使用過哪些。
寫過 babel 插件嗎?用來干啥的?怎么寫的 babel 插件
知道怎么轉化成 AST 的嗎?
基本上考察,你是否實踐過,因為自己簡歷上寫了這方面的,可能問的比較多。
比如問到babel原理可以這么答:
babel的轉譯過程分為三個階段:parsing、transforming、generating,以ES6代碼轉譯為ES5代碼為例,babel轉譯的具體過程如下:
ES6代碼輸入
babylon 進行解析得到 AST
plugin 用 babel-traverse 對 AST 樹進行遍歷轉譯,得到新的AST樹
用 babel-generator 通過 AST 樹生成 ES5 代碼
基本上至少得知道它大致的原理,平時如果有積累的話,其實問題不大。
比如babel的話,推薦可以看看babel是如何處理async錯誤捕獲轉換的,這個有點意思,正好借這個機會跟面試官交流一下這塊的知識點,個人覺得還是很有意思。
學的時候,多折騰一下,應該就問題不大了。
算法與數據結構相關
其實這塊,我希望面試官問我多一些,因為大學期間,更多的精力放在算法。有幸碰到過面試官也是打過ICPC,CCPC等比賽的,曾經都是熱血青年,最后因為某些原因,選擇了前端。
聊得過程還是很愉快的~ 也是第一次,跟面試官聊到了,線段樹,主席樹,最小費用流,二分圖匹配(匈牙利)算法,AC自動機。
似乎找回了大二那一份對算法的熱情。
記得退役的時候,在QQ個簽上,寫過這么一句話:我永遠熱愛算法,無論它虐我千百遍。
可能是真的熬了無數的夜,才會有這樣子的感慨吧。有點跑題了,感興趣的話,后續會更新,我是如何走上算法這條路的,最后給我的成長收獲又是哪些。
回到正題,至于這部分的話,我覺得沒有一個很明確的范圍吧,畢竟算法太廣了,過一遍吧。
有向圖判斷是否有環。
給定一個數組,如何拆分,保證兩個數組的和接近。(想到的是貪心,正解應該是dp)
Json.parse()實現。
常見的數據結構。
數組和鏈表區別。
時間復雜度和空間復雜度計算。
排序算法。
你是如何看待算法的,給你的收獲是什么。
算法很重要的,對你未來的發展,我覺得還是很有必要去學習的。至于怎么學,我沒有能力回答這個問題,要我給建議的話,看書是一個選擇,如果要臨時應對面試,刷一刷leetcode來說,只能說短期有效果。
個人建議:
可以結合書的內容,分專題去刷,比如動態規劃dp專題很難,我記得我當時看完書后,對它的理解就很清晰了,當然做題是另外一回事,通過題目不斷鞏固你對一個算法知識點的理解,我覺得是沒有問題的,但是至于完完全全刷leetcode,應付面試,不從最基礎的開始,這樣子“超車”,覺得意義不大。
以上是我個人理解,能力有限,說的不對,您就當看個笑話。
下面是自己發布在公眾號上面的算法系列文章??
算法總結
個人經歷
問到這部分的話,可能是總監面你的時候會問,也可能是hr會問,到hr環節的話,基本十拿九穩了。不過也不能大意,說不定一不留神,一個月的面試付諸東流,還是要認真對待的,羅列了幾個點:
整個經歷自我介紹,越詳細越好,什么時候接觸計算機,什么時候接觸前端。
整個經歷中,你認為最值得驕傲的事情,最難的事情是什么。
什么事情讓你自豪,什么事情讓你有挫敗感。
未來的發展,自己的規劃。
為什么現在才來秋招,不選擇秋招。
拿我來說,我雙非本科,最擔心的就是學歷這塊,內推的人也告訴我說,學歷有點小問題。當時hr明確問了我,你對現在的學校滿意嘛,師范類的院校,怎么選擇走軟件工程呀,諸如此類的問題很多,無不困擾著我。
不過確實沒有辦法,實話實話,為什么高中成績差,又為什么選擇軟件工程,爭取做到坦誠相待的態度,表達出自己最真實的想法吧。
小結
看到這里的話,可能對你來說,沒有具體說明白,哪些知識點會考,哪些不會考。
我面騰訊和阿里的時候,也沒有看到我這個部門具體的面試題。
我覺得更重要的是,把握好專業技能和項目經歷的表達,引導面試官去往你所知道的領域交流問題,最后在這個領域拿出自己的殺手锏,這樣子面試官會更有好感,接下來的交流會更加愉快。
對簡歷感興趣的話,可以參考下:

需要獲取簡歷模板pdf的話,私信我(文末有聯系方式),或者公眾號回復,個人簡歷,即可獲取。
最后
作為一個即將畢業的我來說,第一份工作很重要。經過慎重考慮以及找前輩交流過后,最后選擇了騰訊。
在即將畢業的最后階段,我應該算交上了一份滿意的答卷,未來的路還很長,讓我們拭目以待吧!
最近組建了一個江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你進群。
·················?若川出品?·················
今日話題
逛github看源碼時,有時只是想看某個文件,或不想克隆倉庫時。推薦使用github1s這個項目,在線VSCODE打開github項目,非常方便。
比如訪問我的博客則是:https://github1s.com/lxchuan12/blog
一個愿景是幫助5年內前端人走向前列的公眾號
可加我個人微信 ruochuan12,長期交流學習
推薦閱讀
我在阿里招前端,我該怎么幫你?(現在還能加我進模擬面試群)
如何拿下阿里巴巴 P6 的前端 Offer