分享一位同學的阿里、百度前端面試經驗
【第一部分 面試前的準備】
從決定找工作開始,我其實經歷過一系列思想鬥爭,最開始想的是,等自己完全準備充分之後,再開始投簡歷面試。然而,由於惰性,我發現自己很難判斷什麼時候是完全準備好的時候。
這次換工作的第一次面試,當時的心態就是抱著學習的態度,總要邁出第一步,也許當你放低了自己的預期,實際面試過程中可能也就不會那麼緊張和不自然了,我當時報的期望就是通過面試查詢自己有哪些不足,以及瞭解一下市場上的真實需求。我的目標很明確,就是要通過大廠面試。這次現場面試,讓我一下就找到了狀態,決定全力準備面試。
依稀記得當時自己一共投了7家公司,當時有四家公司(此時沒有阿里和美團)覺得有意向,還想進一步瞭解我一下,商量之後再和我約時間。後續接到面試邀約電話時,我意識到,自己還需要再準備一下。這裡有個心得是,當你覺得自己還需要再準備一下的時候,可以誠懇地和HR或者面試官約定時間,通常時間為1周左右,一般面試官也會理解。你可以說自己很珍惜這次面試機會,需要再好好準備一下。
然後,我為接下來的面試做了如下準備:
1)閱讀了《瀏覽器原理與工作實踐》專欄中關於瀏覽器渲染原理等內容
2)當時和一些同學組織了leetcode刷題小組,大概每週至少3-5題的刷題速度。每週參與線上刷題分享的活動,刷題活動共持續大概1-3個月左右,這期間穿插著面試、總結和查缺補漏。
基本上以上準備,讓我面試前增加了不少信心。
【第二部分 面試題目】
美團、阿里的具體面試題目,我按照「前端基礎知識、前端框架的底層原理、效能優化、計算機網路、演算法、前端工程化、專案經驗」這七大部分來給大家總結:
前端基礎知識,主要從前端四大模組 HTMLCSSJavaScriptDOM, BOM 方面以及前端框架如ReactVue 等準備。
CSS:
大概會有1-2個問題,主要考察各個常見佈局的實現,比如垂直水平居中、雙欄佈局、隨視窗變化的正方形、網格佈局等等,一般需要手寫程式碼,這裡推薦張鑫旭老師的 CSS 世界,多看幾遍足夠應對面試。
HTML:
在我面試的過程中這個問的不多,之前 winter 老師有一道面試題,說說你常用的 HTML 標籤,然後由這道問題可以延伸出很多細節,進而考察你對 HTML 知識的掌握。
JavaScript:
考察 JavaScript 的細節問題是最多的,通常包括但不限於:
1)JavaScript的基本型別
2)setTimeout、Promise、async/await 三者之間非同步解決方案的區別?
3)巨集任務和微任務,通常會給出一段程式碼,讓你給出輸出結果,並解釋?
4)解釋 JavaScript 的單執行緒模型,以及為什麼這樣設計?setTimeout 的延時為何做不到精確?
5)手寫實現 Promise?
6)原型鏈知識的考察,形式也是給出一段程式碼,讓你給出輸出結果,並解釋?
7)說說你用過的 ES6 語法的功能點,對 ES2017-9 的新增功能點是否有關注?
8)解釋 JavaScript 的閉包?解釋 this 指標指向的問題以及常用改變 this 指標指向的函式? apply, bind, call 三者之間的區別?
9)JavaScript 繼承的幾種方式及優缺點?
10)實現節流或者防抖程式碼?
11)fetch 是否可以共享 Cookie?兩個 then 分別對應著什麼?
12)手寫程式碼實現紅綠燈效果,紅燈3秒,綠燈1秒,黃燈2秒,迴圈重複?
13)JavaScript 是如何操作 Cookie 的?
DOM API:
這方面也很少被問到,印象中有這幾道:
1)如何翻轉 DOM?冒泡和捕獲機制,實際應用有哪些?
2)冒泡和捕獲機制,以及實際應用?
前端框架的底層原理
我們以 React 為例,經常會考察內容包括:
1)setState 的內部實現?
2)什麼是虛擬 DOM,引入虛擬 DOM 的目的,虛擬 DOM 一定能解決效能問題麼?
3)React Hooks 有哪些瞭解?
4)react redux 的底層原理?如何完成非同步請求?介紹自己常用哪些 redux 中介軟體?以組合函式的方式手寫程式碼實現中介軟體的級聯功能?
5)react 的 diff 演算法瞭解麼?
6)react 的 fiber 演算法瞭解麼?
7)react pureComponent 和 Component 有何區別?
8)react 的生命週期,新版和舊版都需要了解
9)react 的單向資料流如何理解?
10)如何設計元件?
11)react memo?
12)react 無盡列表是如何實現的?
效能優化
1)瀏覽器的渲染原理是一定會被問到的?
2)瀏覽器輸入一個 url 之後的過程,以及過程中應用了哪些快取,如何優化?
3)script 標籤和 link 標籤的先後順序對頁面載入的影響?
4)async 和 defer 的區別?
5)react native(因為我的簡歷中有寫到使用過 RN)有哪些坑?
計算機網路
1)解釋 TCP/IP 的三次握手和四次揮手?
2)解釋跨域問題以及前端常用的解決方案?
3)CORS 的細節,哪些是簡單請求?哪些是非簡單請求?
4)解釋 HTTPS? 解釋 HTTP/2?
5)HTTP 報文的格式?
演算法
1)手寫氣泡排序?
2)給定兩組數,分別以連結串列方式儲存,求和?注意進位
3)陣列去重?
4)微信紅包是如何實現的?
5)給定一組數,求和函式是帶延時的網路請求,如何在最快的時間內計算出這組資料的和?
前端工程化
1)webpack 如何拆分大檔案?
2)webpack 打包的過程?
3)webpack 的基本配置?
專案經驗
這部分大概很多同學都很關心,到底應該怎麼寫自己的專案經驗。出場率最高的問題也是介紹一下你做得最出色的專案?
首先最重要的是,實事求是。
這方面我認為主要考察候選人在工作中所承擔的角色,以及平時工作中是否注意積累和總結,其實大多數人平時是不善於總結的,我自己也是,所以平時注意寫“詳歷”是對自己很有幫助的。
關於簡歷如何寫,極客時間《面試現場》專欄中有提到,我覺得非常好,分享給大家
詳歷的結構如下:
開頭,“有段經歷,正好遇到了這個問題……”。(講清問題背景)
發展,“一般的做法是做不到的,因為……”。(講問題的複雜性和挑戰)
高潮,“我一開始用到……後來……”。(講解決方案的形成過程)
結局,“成果是……”。(講結果、影響、意義)
所謂“詳歷”,是相對於“簡歷”更詳細的工作經歷和能力的總結,用故事的方式,記錄工作的成果、職位、經驗和能力發展,相當於你的工作檔案,用於回顧個人工作經歷,撰寫簡歷,也是回答面試問題的經歷素材庫。這些素材體現你的個人經驗、技能、潛力、動機。詳歷是你個人工作經歷的故事彙編,是你能力的索引,是給你自己參考用的,隨著經歷的增加而越來越充實;而簡歷是給面試官看的,最好因職位而異。
詳歷主要有三個作用:有助於職業規劃,視覺化技能體系、經驗分佈和成長路徑。是定製簡歷的母版。提供面試素材。當被問到“這個專案最大的提高是什麼”,或者“你失敗的一次溝通是怎樣的”,你可以從準備好的詳歷中,快速選取恰當的故事,講給面試官。
【第三部分 面試流程,以及美團、阿里面試有什麼不同的體會】
(待大量補充,比如:)
可能很多同學都想知道大廠的面試流程,這裡我也簡要分享一下:
總的來說大廠對於候選人的基礎知識要求還是非常嚴格的,當然也更看重候選人的潛力和心智,因為在大廠看來知識是死的,只要時間足夠,通常都可以掌握,但是潛力和心智狀態,卻和每個人的成長軌跡和閱歷有關。
如果你想要學好WEB前端,在學習過程中,身邊沒有一個能夠指導你學習的人,可以到這個WEB前端裙:484,757,760,裡面有根據目前市場需求,錄製的最新的系統教程,不管是計算機專業想要往WEB前端方向發展,還是零基礎想轉行,都可以跟著教程學,有什麼不懂的可以在裡面問。
一面面試官通常是你未來的同事。面試主要考察候選人的基礎知識,我遇到的面試官都非常nice,會寒暄幾句,幫助你脫離緊張的情緒,然後進入正式面試環節。我記得看過一個TED的演講,內容是關於緊張,裡面講就算你真的緊張的不行,也不必擔心,因為人總是比較在意自己的,所以就算你覺得自己非常緊張了,在面試官眼中你表現得也沒有你想象的那麼緊張。
二面面試官通常是你未來的直級leader。這裡阿里和美團不一樣的點在於,當時阿里主要考察了我對於過往專案的掌握程度,以及我在專案中的角色,然後和我聊了很多個人成長方面的心得和看法;美團則側重考察了我一面面試官沒有問到的基礎知識點,這裡其實每個公司可能都不太一樣。
三面面試官通常是你整個部門的leader,主要從職業發展和候選人背景方面進行考察,過程中也會穿插著考些演算法題,不過都不難,主要考察候選率的程式設計能力的。美團到這裡就結束了,之後就是HR和你聊聊薪水,個人背景,跳槽原因等等。
阿里比較特殊,會多一輪交叉面試,四面是HRG和集團技術大佬混合面試,我個人覺得主要考察候選人的溝通、應變及潛力等等,沒太問技術相關的問題,可能我比較幸運吧
想說的是如果想求職阿里,就要做好打持久戰的準備,阿里的面試週期比較長,1-2個月也是很正常的,所以要做好心理準備,如果面試完沒有收到阿里的郵件,應該就通過面試了,沒有訊息就是最好的訊息。美團就很快,當然也看部門是否急需招人,我面試的部門當天就走完了全部流程。
【第四部分 其他 Tips】
下面這些 Tips,都是我平常自己準備面試會遵循的,希望也可以幫助到你。
簡歷編寫,如何過初步篩選
網上優化簡歷的方法論很多,我就不多展開了,我列舉一下我的簡歷框架,希望能給你一些啟發
1)儘量一頁紙展示自己的內容。
2)總體分為7個模組:個人資訊、教育及工作背景、技能清單、專案經驗、開源專案、個人部落格、自我評價,其中開源專案和個人部落格部分可有可無,如果有,自然是加分項。
3)技能清單裡面,寫清楚自己熟悉的語言、框架,甚至能證明你有某方面能力的證照。這裡需要注意的是,千萬別寫“精通”,除非你這門語言或者框架的締造者,一般來說精通一門語言或者框架確實很難。
4)專案部分,我的書寫方式是 工作+結果。挑選專案中我參與的比較重要的部分,然後描述清楚工作內容和我的產出結果,儘量數字化自己的成果,比如專案時間、程式碼量、提高百分比等。再者,專案部分一定要真實,你需要對你寫的內容瞭如指掌並且負責,否則面試官可能會認為你人品有問題。
5)自我評價部分,通常來說,適當包裝自己的優點即可。如果某個企業你十分心儀,也可以參考對方的企業文化,重點匹配自己的內容即可。另外,你寫的優點最好能用1-2個例子來佐證,比如我寫了自己自驅力強,阿里面試官問到我的時候,我就介紹了自己主動學習,參與前端訓練營的培訓、買了很多專欄並學習、關注了很多技術部落格,並寫文章總結等等。
怎麼談薪資
如果到了談錢的時候,首先恭喜你前期的努力終於快見到回報了。我們程式設計師通常都比較內向,不善於談這些,我也一樣,但談錢其實沒有什麼不好意思的。你可能跟我一樣,有著錯誤的心理認知:自己少要點,公司看到我們要的不多,可能會考慮給 Offer。實際上,當你幾輪面試過後,你應該可以判斷出自己是否有可能拿到 Offer的。這時候,你可以先調研一下行業薪資水平,然後再結合自己的水平給出自己的預期,這種情況下,你拿到的 Offer才可能不至於讓自己委屈。有時候,不敢多要也是正常的,多面試幾次,多拿到幾個 Offer,底氣自然也就足了。
養精蓄銳
面試前吃飽飯也是很重要的,記得有次面試一個大廠,沒吃早飯,然後坐地鐵1個小時,3輪面試3.5個小時,三面的時候自己的專注力和精力能明顯感覺到是跟不上的,這樣也是會影響自己臨場發揮的
【最後的心得】
以上就是我的面試經歷分享了,最後,還有幾點心得來跟大家分享:
臨時抱佛腳搜面經、背題,通常來說是沒用的,但是我們通過面試查詢不足,然後努力補足短板,及時總結是很有必要的。在找工作的過程中我每面試一家公司,都會寫面試總結,記錄面試遇到的題目,回憶自己回答好和不好的地方。
面試過程中,對於完全不知道的答案的題目,回答不知道也沒有什麼。面試是一個綜合考察的過程,不會因為你一兩個題目回答不夠好就將你淘汰,而且面試過程中如果遇到不太明白細節的問題,可以和麵試官老師做進一步溝通,這也是你展示自己溝通能力的好機會,千萬別自己悶頭苦想。試想想如果專案中遇到不會的,也會是需要虛心請教的,不然悶頭苦幹只會 delay 專案進度。
在我看來,每一次面試都是一次絕佳的學習機會,尤其是大廠的面試官老師無論是經驗、閱歷以及專業知識,都能很好的給我正向反饋。在面試百度時,二面面試官就和我聊了很多人生選擇以及個人成長方面的思考,面試阿里時也是二面面試官和我聊了很多工作方法論方面的思考,這些對我來說,比熟記幾個知識點更有價值和意義。
相關文章
- 前端面試分享: 兩年經驗社招-阿里巴巴前端面試阿里
- 2024 年,一位 3 年經驗測試同學的求職經歷求職
- 中專畢業生的前端面試經驗分享前端面試
- 一年半經驗,百度、有贊、阿里前端面試總結阿里前端面試
- 一位前BAT面試官,詳聊進入BAT的面試經驗BAT面試
- 直播分享_前Google工程師的演算法學習與面試經驗分享Go工程師演算法面試
- 2020阿里巴巴web前端面試分享阿里Web前端面試
- Java面經 面試經驗 網際網路公司面試經驗 後端面試經驗Java面試後端
- 工作5年,一位來自廣西測試妹子學習《自動化測試》經驗分享
- 論前端面試:專案經驗前端面試
- 最全的阿里面試經驗(一)阿里面試
- 2020三元同學春招阿里淘系、阿里雲、位元組跳動面經 & 個人成長經驗分享 | 掘金技術徵文阿里
- 想入職阿里的Java開發者必看,阿里巴巴面試官實戰經驗分享!阿里Java面試
- 讀者上岸百度經驗分享(上)
- 面試分享:2018阿里巴巴前端面試總結(題目+答案)面試阿里前端
- 一位Android大牛的BAT面試心得與經驗總結AndroidBAT面試
- 10年Java開發經驗,超過500人面試阿里的同學,總結出這108道面試題!Java阿里面試題
- 前端面經分享 | 騰訊前端
- 一年半經驗,百度、有贊、阿里面試總結阿里面試
- 【前端面試】同學,你會手寫程式碼嗎?前端面試
- 面試分享:2018阿里巴巴前端面試總結 | 掘金技術徵文面試阿里前端
- 分享net面試題和經驗面試題
- Android大廠面試經驗分享Android面試
- 【乾貨】BAT面試經驗分享BAT面試
- C# 學習經驗分享C#
- 【面試專題】3年經驗進百度是一種什麼樣的體驗?附上百度大佬的面試經驗!面試
- UWP學習——來自前輩們的經驗
- 一份經過時間檢驗的 Laravel PHPUnit 測試經驗分享LaravelPHP
- 阿里春招前端面試(1)阿里前端面試
- 一年半經驗如何準備前端面試前端面試
- 過來人的自學python經驗分享Python
- 經驗分享
- 一位轉行成功並從事5年的大資料開發的經驗分享大資料
- 學習Linux必須掌握的命令!經驗分享Linux
- 2020百度前端面試題整理前端面試題
- 深度學習模型設計經驗分享深度學習模型
- 面試完總結的28道Nodejs面試題,希望對下一位筆試同學有所幫助!NodeJS面試題筆試
- 分享:一線網際網路公司的面試經驗面試