2020 校招,我是如何拿到小米、京東、字節大廠前端offer

https://juejin.im/post/5e66ecdee51d45270c27916d

前言

Hi~,我是 2020 屆物聯網專業畢業生,現就讀於杭州。謹以此文來記錄我的秋招以及入門前端以來的學習歷程,如有錯誤,希望大家能及時提出!

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

面試情況

從19年8月初到11月底,前前後後一共面試了 14 家公司的前端崗,按城市劃分為:

1、北京:小米,京東,美團,百度,去哪兒

2、杭州:阿里,網易,微店,字節跳動

3、上海:七牛雲,哈囉出行

4、深圳:騰訊,富途,樂信

歷時4個月,最終收穫了 小米、京東、微店、字節跳動 的offer

過程太過曲折,這其中也發生了很多讓我印象深刻的事……

8月初,提前批面試aliyun,撲通倒在了三面;正式批面試淘系技術部,HR面後,過了大概兩個星期,變成 面試已回絕

(發佈文章時,系統一直提示有違禁詞彙,檢查了半天,原來是 aliyun 的鍋,只可以打拼音)

9月中旬,短信收到了百度面試的喜訊,興高采烈買了去上海的動車票,起了個大早,卻連 現場一面也沒通過

10月初,郵箱收到網易的現場面試通知,那一天從 10:00 面到 19:00,等候區就剩我一人了,HR面結束後,工作人員還送了張食堂券(不愧是豬廠,伙食還不錯),結尾依舊收到了 拒信

11月中旬,已經收穫了雷布斯的offer,但不想獨自去北京奮鬥,抱著不死心的態度,我再次面試了 字節跳動(之前提前批簡歷直接被刷),經過 四輪技術+一輪HR 之後,成功留在了杭州研發中心(我可是抖音的忠實用戶!)

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

整個秋招,我的心情從一開始的信心滿滿,到感覺自己進大廠的機會渺茫,最後觸底反彈,想想真是一波三折

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

成長之路

大一

回想起來,當初掉入前端這個坑,是因為參加了大一開設的選修課:《小型網站的建設與維護》。

第一節課,講課老師新建了一個 txt 文本,寫入幾行代碼,然後修改後綴名為 html,一個網頁就被這樣被創建了,還可以自定義樣式,作為小白的我,第一次感覺代碼這麼有吸引力,才知道這個叫做 前端開發(碼農)。

在老師的鼓勵(慫恿)下,我報名參加了省裡的網站競賽,在學校機房度過了17 年的暑假。

最開始,我還是用 Adobe Dreamweaver 寫代碼,jQuery 一把梭,管它什麼性能、代碼規範、維護性,都不存在的。看著菜鳥教程,邊做邊學,能硬編碼就硬編碼,找現成的 JQ 插件東拼西湊,我的網站才正式完工,想來都是一把辛酸淚……(當時只會寫 JQ 代碼,原生 JS 根本不會寫)

大二

第二年,我意外發現了掘金這個網站,我的前端視野一下子廣闊了許多,發現很多前所未聞的名詞:閉包,ES6,原型,繼承, 作用域……

慢慢地,我自學了 React、Vue、原生 JavaScript、NodeJS

為了學習 Git,我建了 GitHub 賬號。

為了搭建 個人博客,購買了 aliyun 的學生服務器和個人域名。一個星期的時間裡,我又是配環境,又是學 Linux 命令,第一次用 vim 簡直不要太爽,當我的博客在公網成功打開的那一刻,我感覺人生達到了巔峰!

期間,我報名參加了阿里的 D2 會議(雖然當時根本聽不懂,湊個熱鬧),那天特別激動來到西溪園區,看到了好多大牛

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

大三

一月初,我報名參加了螞蟻金服體檢科技大會,會議更多的是從設計和用戶體驗角度出發,如何改善產品

見到了 AntD 的創造者:玉伯,御術等前端大佬

玉伯在開場就發表致歉,因為當年的聖誕節彩蛋事件,轟動不小!大三

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

時間來到大三下學期,我想在當地找個實習,於是投遞了人生第一份前端實習簡歷。面試當天,因為緊張,面試官給我遞來的紙水杯,在桌子上被我打翻了……幸好,當天晚上就接到了HR的電話,通過了。

在這幾個月的實習期內(期間逃了不少課),公司給予了我足夠的發展空間,給我配了 MacBook 和 24 寸的顯示器。我嘗試 搭建腳手架,構建 React 企業應用, 寫 H5 頁面,從零開發微信小程序 等等。學習如何做到版本控制,規範 Git 提交,一步步實現項目落地,和 UI、產品、測試、後端一同協作開發。在協助我的 mentor 進行面試的時候,偶然看到了我當初的面試評級是 A,高興了好一陣子。

不過,天下無不散之宴席,意識到要秋招的我,辭去了實習崗位,投入到複習階段。然後我就被校招好好上了一課,由於我是非科班,根本不懂什麼算法,只會簡單的數據結構,於是乎在各公司的秋招筆試、面試中,吃盡了苦頭。

ps:這裡推薦幾本書籍和我常用的學習網站(需要翻牆):

1、《圖解 HTTP》

2、《JavaScript ES6函數式編程入門經典》

3、《學習JavaScript數據結構與算法》

4、《你不知道的JavaScript》系列

5、MDN,淘系前端團隊,凹凸實驗室

6、medium.com/

7、codepen.io/

8、dev.to/

9、developers.google.cn/web/

面經分享

第一部分是我前端面試的經驗總結,第二部分是我認為比較有思考空間的題目

經驗總結

1、一份漂亮的簡歷,需要包括以下部分(排版由上而下)

2、個人亮點(專精領域,個人博客,開源項目)

3、教育經歷(畢業院校,在校經歷、榮譽)

4、工作經歷(實習)

5、項目經歷

6、專業技能

紮實的前端基礎,比如

作用是什麼?

flex:1 的 1 代表什麼?

Generator 如何拋出錯誤?

1、熟悉一門前端框架(React 優先)

2、勤刷 LeetCode 的算法題,熟悉掌握相應的數據結構如常見的鏈表、棧、隊列、哈希表、樹

3、熟悉網絡基礎、Git 命令、Linux 命令

4、多去了解前端的新趨勢(Flutter,PWA,Serveless,GraphQL)

5、要有自信,讓面試官感受到你對前端的熱愛

面試題

由於面試的公司和次數略多,老生常談的面試題就不放出來了,也不按公司劃分面試題了

算法題

大多出自 LeetCode ,LeetCode HOT 100,最好自己過一遍,理解最優解

編程題

1、用 Class 實現 EventEmitter,要求擁有 on,once,emit,off 方法

2、實現 deepClone,要求能成功克隆帶有循環引用的對象

3、CSS 實現一個寬度為瀏覽器1/2,寬高比為 2:1 的盒子

4、實現 sum 函數

1 sum(1)(2)(3) == 6; // true

2 sum(1, 2, 3) == 6; // true

1、實現 sum2 函數

1 console.log(sum2(1)(2)(3)()) // 6

2 console.log(sum2(1, 2, 3)()); // 6

1、用尾遞歸實現 fibonacci 數列

2、實現 co 函數

3、實現以下功能,當對一個 arr 做 push 操作時,會自動打印一行提示消息

1 const arr = [1,2,3];

2 arr.push(4);

3 // arr pushed a new element: 4

1、代碼實現中斷 Promise 的運行

2、有一組圖片,實現後一張圖片必須等到上一張圖片加載完畢,才能開始加載

3、為 Test 類添加方法,打印指定內容

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

1、實現 handler 函數,遇到 b 和 ac 都要去除

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

1、實現 decode 函數

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

1、實現 _bind 函數,使打印 success

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

1、CSS 實現圓環進度條效果

2、說出以下打印內容

2020 校招,我是如何拿到小米、京東、字節大廠前端offer

簡答題

1、實現 F12 開發者工具的檢查(inspect)功能

2、實現 把一個盒子從一個區域拖放到另一個指定區域中

3、盒子一部分在區域內,一部分在區域外,該如何處理

4、簡述幾個封裝好的關鍵方法

5、開發完的項目,在微信瀏覽器上白屏,該如何排查

6、如何統計一個頁面上哪些區域用戶點擊次數最多

7、如何根據按鈕級別的粒度,設計用戶權限,例如:A 可以訪問按鈕,B 不可以

8、如何對一個網頁內容進行自動化截屏,如何解決登錄限制

9、A組件包裹B組件,B組件包裹C組件,它們的 componentDidMount 觸發順序如何

10、React setState 到底是異步還是同步的,其原理是什麼

11、React Hooks 的使用有哪些注意事項

12、React 的合成事件機制

13、簡述 React 類組件的新老生命週期,談談 React Fiber 架構的引入

14、詳細介紹一下 Redux 狀態管理,如何和 React 組件連接

15、React HOC 的用途,什麼是裝飾器模式

16、Mobx 的實現原理

17、Koa 的中間件原理,介紹一下 compose 函數

18、介紹 NodeJS 的 EventLoop 機制,process.nextTick() 的作用

19、NodeJS 是單線程還是多線程,都有哪些線程,JS 為什麼是單線程的

20、CommonJS 的實現原理

21、NodeJS 中存在哪些流,怎麼理解 pipe() 及其優點

22、require 的解析規則

23、介紹一下負載均衡,NodeJS 的 cluster 和 child_process 是什麼

24、webpack 是如何進行打包的

25、webpack 動態 import 是如何實現的

26、如何編寫自己的 loader 和 plugin

27、簡述 webpack 配置文件中的 externals,UMD 瞭解嗎

28、介紹一下 DNS,什麼是迭代查詢和遞歸查詢,什麼是一級域名、二級域名

29、HTTP 首部(Header)和實體(Body)的分隔符是什麼,用正則如何匹配

30、HTTPS 的詳細過程,什麼是數字證書,消息摘要,非對稱加密,Hash 算法

31、如何實現 Tab(標籤)頁之間,客戶端與服務器的實時通訊

32、HTTP 狀態碼:301、302、307 的區別

33、簡述瀏覽器的垃圾回收機制,什麼是強引用、弱引用、循環引用

34、簡述 requestAnimationFrame 和 requestIdleCallback 的作用

35、CSS 選擇器的解析順序是從右到左,還是從左到右,為什麼

36、click 事件在移動端有什麼問題,如何解決,你在移動端還遇到那些坑

37、簡述 JWT 的生成過程和優缺點,怎麼主動註銷 JWT 和續簽 JWT

38、通過什麼檢測網站的性能,有哪些指標

39、如何查看網站的 Ajax 請求是由哪行代碼發出的,一個元素都綁定了哪些事件,Chrome 調試面板 F8,F10,F11 各代表什麼

40、說說你對 jpg、gif、jpeg、png、webp、base64 URL 的瞭解

小編是一個有著5年工作經驗的架構師,關於web前端,自己有做材料的整合,一個完整學習web前端的學習路線,學習材料和工具。

需要的夥伴可以私信我,發送“前端”等3秒後就可以獲取領取地址,免費送給大家。

對於學習web前端有任何問題(學習方法,學習效率,如何就業)都可以問我。希望你也能憑自己的努力,成為下一個優秀的程序員!

結尾

天道酬勤,只要你想,大廠offer並不是遙不可及!

希望我的經歷能為你帶來幫助,如果有問題,請在評論區留言


分享到:


相關文章: