最近小組被安排了新的開發(fā)項目,需要急招一個中級前端,所以在5天時間面試了17個人,我負責(zé)其中的一面環(huán)節(jié),最后給了4個人合格,特以本文記錄我這5天的面試經(jīng)驗。
1.簡歷的注意點
對于面試官來說,了解候選人的最開始的途徑就是簡歷,一份好的簡歷可以快速建立起來自己的專業(yè)形象,而對于大多數(shù)人來說,寫出亮點很難,但最起碼要減少一些不必要的失誤。
1.1.教育背景
如果畢業(yè)的院校不是很好,或者說不是計算機類的專業(yè),可以把教育背景寫在簡歷的下方不顯眼的地方,但不要不寫教育背景。
1.2.基本信息
1.政治面貌群眾甚至是團員這種信息實在沒必要寫在簡歷上。
2.github,博客,如果star很多,粉絲很多的話,寫在簡歷上是個加分項,但是如果里面沒有什么有價值的內(nèi)容,還寫在簡歷上,我覺得會很減分。
1.3.專業(yè)技能
在面試中問問題的時候我很喜歡看著專業(yè)技能上出現(xiàn)的技術(shù)去進行提問,特別是寫的是“熟悉”,“熟練掌握”的,如果寫的是“精通”某種技術(shù),則會更直接的去提問該技術(shù)更深層次原理性的問題。
但是這并不代表在專業(yè)技能一欄中不要出現(xiàn)“熟悉”和“精通”,恰恰相反,“熟悉”和“精通”更令人感覺技術(shù)靠譜,但前提是你對該技術(shù)一定要有相應(yīng)程度的掌握,如果自己寫在專業(yè)技能里的技術(shù)都一問三不知,則會很減分 。
很多同學(xué)在簡歷中會寫“了解”某某某技術(shù),這些技術(shù)通常都是自己簡單了解,但是并不深入,也沒法去熟練使用的,對于這種寫法,我覺得不應(yīng)出現(xiàn)過多 ,有1-2個“了解”的技術(shù)就可以了,而且如果被面試官問到了這個“技術(shù)”,最起碼要說出這種技術(shù)是做什么的,能解決什么問題。
1.4.工作經(jīng)歷
頻繁的跳槽肯定會非常減分,3年2跳,甚至2年3跳的,就算通過了一面,也有很大的幾率會被二面或者HR面刷掉,對于跳槽頻繁的同學(xué)來說,除了在選擇工作的時候更加謹慎一點 ,減少自己的跳槽頻率,另外可以參考一點我的見解:
對于面試通過后的背景調(diào)查,一般的公司也最多只會調(diào)查你的前1-2家公司,并不會調(diào)查你的全部工作經(jīng)歷,所以有時候可以對自己的過去進行一些簡單的修飾。
1.5.項目經(jīng)歷
對于前端的簡歷來說,項目經(jīng)歷是最重要的部分,項目數(shù)量肯定不能太少,但也不要大大小小的,包括個人demo,一股腦十幾二十個全懟在簡歷上,讓人看著眼花,大致數(shù)量我覺得1年經(jīng)驗對應(yīng)2個項目為最佳。
一般每個項目的描述分為下面幾個部分:
- 1.項目名稱
- 2.項目時間
- 3.項目描述
- 4.項目所用技術(shù)
- 5.我的職責(zé)
“我的職責(zé)”是最重要的,對于這個部分我的建議:
1.請不要機械性的描述項目所有的技術(shù),這個技術(shù)描述直接寫在第四部分“項目所用技術(shù)”就行了,比如:
1.使用vue-cli構(gòu)建項目
2.使用element開發(fā)頁面
3.使用axios發(fā)請求
4.使用 sessionstorage 儲存用戶登錄狀態(tài)
5.使用swiper實現(xiàn)圖片輪播效果
...
上面的這些都是一些任何前端都會做的事情,寫在“我的職責(zé)”中真的都是廢話,完全沒有看點。我覺得在這個“職責(zé)”中更應(yīng)該說你所承擔(dān)的一些更深入性的責(zé)任。
2.請記住你寫的每一個點都有可能會被面試官問到,所以不要為了讓自己在項目中承擔(dān)職責(zé)更高大上,而去隨意寫一些自己完全沒有參與和了解的內(nèi)容,如果寫,也一定要事先做一些準(zhǔn)備,如果被面試官發(fā)現(xiàn)你是一個不誠實的人,那么此次面試基本也就掛了。
2.面試中的注意點
2.1.基礎(chǔ)問題
作為一名前端,如果連閉包,原型鏈,同步異步,es6這些都講不清的話,我實在是很難相信他在工作中不挖坑,所以對于這類基礎(chǔ)問題,請一定要準(zhǔn)備好,肯定沒法做到面試官問的你全都會,但最起碼不能在這方面表現(xiàn)的太差。
2.2.高頻出現(xiàn)的開放性問題
比如
1.自我介紹
2.介紹一下你最近參與的這個項目
3.介紹一下你最近在了解的最新的前端技術(shù)
4.說說你關(guān)于前端項目性能優(yōu)化的理解
5.印象中你在項目中遇到最困難的問題,最棘手的問題
...
這類問題的出現(xiàn)頻率極高 ,尤其是 “自我介紹”,幾乎是必問題,我遇到有的面試者連自我介紹都磕磕絆絆,且只有1-2句話,連個結(jié)束語都沒有,對于這種人,要么能力有問題 ,要么態(tài)度有問題,而這種情況,我覺得都可以直接pass掉了。
3.問題總結(jié)
對于我來說,在面試之前我都會用10分鐘左右去仔細閱讀面試者的簡歷,去確定自己考察的重點方向,在面試過程中,我一方面會根據(jù)面試者簡歷上出現(xiàn)的東西去提問,然后根據(jù)面試者的回答再進行深挖,另外一方面,我有自己準(zhǔn)備了一個面試題小題庫,如果感覺面試者的簡歷上沒有我很感興趣的,我就會隨機從題庫中問一些問題,然后再根據(jù)面試者的回答去靈活應(yīng)對。下面貼出我此次面試過程準(zhǔn)備的題目:
3.1.html
1.說下前端頁面進行本地儲存的方法,它們的區(qū)別是什么
2.HTML5如果不寫<! DOCTYPE html> ,頁面還會正常工作么
3.說說對<meta>標(biāo)簽的了解
3.2.css
1.介紹一下flex布局吧(用法,常用屬性),追問:用flex實現(xiàn)左邊定寬,右邊自適應(yīng)布局(左邊的子元素給個固定的寬度width:100px,右邊的子元素 flex:1 )
2.px、em、rem三者的聯(lián)系和區(qū)別
3.談?wù)勀銓SS盒模型的認知
4.需求實現(xiàn):鼠標(biāo)移動到某個元素上,該元素放大到原來的1.2倍,過渡時間0.5s
3.3.js
1.說一說在js的函數(shù)中,怎么實現(xiàn)函數(shù)的私有方法、公共方法以及靜態(tài)方法
2.說說對原型和原型鏈的了解
3.說說setTimeout 的執(zhí)行過程(setTimeout(fn, 0)多久才執(zhí)行)
4.說說對淺拷貝與深拷貝理解
5.數(shù)組去重怎么實現(xiàn)(set)
6.你了解js的回調(diào)地獄嗎?回調(diào)地獄是怎么形成的?回調(diào)地獄的解決方案有哪些?
7.數(shù)組的遍歷方法,對象的遍歷方法
8.請求三個接口,需要等到三個接口都拿到數(shù)據(jù)后再對數(shù)據(jù)進行進一步的處理,接口響應(yīng)時間比較長,通過promise實現(xiàn)最多等待2s,如果接口沒響應(yīng)就告訴用戶當(dāng)前網(wǎng)絡(luò)較差,請稍后再試
9.什么是閉包,閉包的副作用
10.說一下js中一些常見的this指向吧,比如函數(shù)中, 對象中,事件中,構(gòu)造函數(shù)中,箭頭函數(shù),怎么改變this的指向
11.兩等和三等的區(qū)別,0和false相等嗎,0和undefined相等嗎
12.如何判斷一個對象是不是空對象
13.箭頭函數(shù)和普通函數(shù)的區(qū)別,什么情況不應(yīng)該用箭頭函數(shù)
14.類數(shù)組轉(zhuǎn)為真正數(shù)組的必備條件
3.4.vue
1.Vue 的核心是什么(數(shù)據(jù)驅(qū)動、組件系統(tǒng))
2.vue和jquery的區(qū)別是什么
3.v-if 和 v-show 有什么區(qū)別?
4.v-if和v-for哪個先執(zhí)行,v-if 和 v-for 為什么不建議一起使用
5.computed 和 watch 的區(qū)別和運用的場景
6.vue如何實現(xiàn)數(shù)據(jù)雙向綁定
7.vue3了解嗎?vue3又是如何實現(xiàn)的呢
8.說下vue組件的生命周期,created和mounted的生命周期的區(qū)別
9.說下組件的通信方法
10.什么是虛擬DOM,虛擬DOM的優(yōu)缺點
11.為什么Vue的視圖采用異步渲染呢?了解nextTick嗎?(什么情況下會用,異步渲染的最后異步)
12.v-html的使用需要注意什么
13.舉幾個vue性能優(yōu)化的例子吧
14.寫 React/Vue 項目時為什么要在組件中寫 key,其作用是什么?
3.5.webpack
1.說說webpack的幾個核心概念
2.說說webpack運行的基本流程
3.有做過webpack性能優(yōu)化嗎?說說你對webpack進行性能優(yōu)化的一些經(jīng)驗(從哪些角度去進行優(yōu)化)
3.6.模塊化
1.平時有接觸過node嗎?能說下對CommonJS與ES6 Modules規(guī)范的了解以及它們的區(qū)別嗎
3.7.性能優(yōu)化
1.說說對前端項目性能優(yōu)化的整體思路(代碼層面,框架層面,靜態(tài)資源加載(cdn,懶加載,http緩存)
3.8.小程序
1.信小程序:app.json這個文件是做什么的,講講里面的配置項
2.講講微信小程序和h5的區(qū)別
3.9.前后端通訊
1.說說get請求和post請求的區(qū)別
2.說說HTTP協(xié)議常見的狀態(tài)碼,304?
3.說說post請求的content-type的幾種類型
4.為什么第二次打開某個網(wǎng)頁要比第一次快很多?說說你了解的HTTP 的緩存策略(緩存的分類,實現(xiàn)方式)
5.對前端安全有了解嗎?什么是xss攻擊?
6.什么是跨域,跨域的解決方案
7.前端常用的請求方法,前端請求常用的觸發(fā)方式
3.10.node
1.node中加載相同模塊,會重復(fù)執(zhí)行模塊中的代碼嗎(不會,因為commonjs當(dāng)加載到相同模塊的時候,會首先檢查是否有緩存,有緩存的則不會再去加載代碼。)
2.node單線程容易崩潰,怎么維護服務(wù)的
3.有沒有考慮過高并發(fā)場景,如何解決
4.node內(nèi)存泄漏的檢查方法,大型項目在運行時發(fā)現(xiàn)內(nèi)存占用率越來越高,怎么去檢查
3.11.UI框架
你有二次封裝過ElementUI組件嗎?
3.12.學(xué)習(xí)
1.了解過vite嗎,它和webpack的區(qū)別是什么
2.了解過ssr嗎
3.前端的技術(shù)迭代非常的快,你工作之余都通過什么途徑去了解和學(xué)習(xí)新的前端技術(shù)?跟我介紹一下你最近感興趣或者在學(xué)習(xí)中的前端技術(shù)吧