hr: 你好,我是阿里的,說說你現在工作內容吧。
我: 我現在在做公司後臺系統,用vue重構,同時做小程式。
hr: 你在做的過程中,遇到的難題,克服的困難。
我: 小程式商品詳情頁面有個彈框,我負責實現他的功能,讓他在同時滿足3個條件的情況下彈出,(這不是我的店鋪,我第一次進到商品詳情頁面,我有店鋪可以回去)才彈出該彈框。
hr: 嗯嗯,還有呢?
我: 公司業務做得少。(本來想說上家公司的那個webpack分批打包業務的。有點捉急mmp)說個自己的專案吧,最近有做一個圍住神經貓的小遊戲,遇到的困難自然是A*演算法,路徑問題,……%¥&……
hr: 這個用庫就可以了,網路上一堆,我想問的是,你做的東西對公司有什麼幫助,你能不能說一些和公司業務相關的東西。這個問題就算了,你說一下,現在有一個陣列,用一個函式就可以得到他的所有名字
我: arr.filter(e=>e.name===`peng`).map(e=>e.name); O(1)複雜度吧。
hr: 用一個函式就做到它。
我: 不會,只能用兩個。答案如下。。。
var arr = [
{name:`xiaoming`,id:"123"},
{name:`xiaoming`,id:"456"},
{name:`xiaoming`,id:"789"},
{name:`xiaohua`,id:"101112"},
{name:`xiaowang`,id:"131415"},
{name:`xiaohong`,id:"161718"}
];
res = arr.filter(e=>e.name===`xiaoming`).reduce((all,e)=>{
return {name: `xiaoming`,id:[...all.id , e.id]}
},{name:`xiaoming`,id:[]})
console.log(res);複製程式碼
hr: 看過你寫的 #8 這個issue,35條網路優化建議,你有哪些在公司這裡用過。
我: 三級域名 api.vmei.com, static.vmei.com這種,靜態資源設定快取,同時靜態資源不攜帶cookie,可以加速訪問靜態資源。開啟http2,加速網路資源。
hr: 說一下http2與http1的區別.
我: http2採用二進位制資料輸送,比http1快很多,可以實現資源傳輸的優先順序順序,實現先載入css,再載入js,http2可以開啟google那個加速模組。
1.http2開啟了線路複用, 即可以共享連線,他是之前Google加速模組SPDY的升級版,2.採用二進位制傳輸,有更強健壯性。3.header的壓縮,4.服務端推送。5.有請求優先順序別選擇。
hr: 還有呢?你為什麼開http2?
我: 因為看到京東也開了http2,所以我也開。
hr:那你說一下http2如何開啟吧,
我:先開https,要有一個證書,用的let encrypt.
hr: https和http區別,以及你為什麼要用https
我: 中間套一層tcl或者ssl加密層,對資料加密,https更加安全。其實翻牆也是同樣的原理,中間套一層ssl加密,讓防火牆無法識別資料,從而達到防火牆無法過濾資訊的目的。
這個真說錯了,shadowsock是基於socket5協議來做的,只不過搬瓦工剛好佔用了443埠而讓你誤以為是https.
hr: 大概說說react的生命週期。以及ajax函式放在生命週期那個階段最好。
我: 大概分為三部分 生成元件,掛在元件,銷燬元件,以及一些componentwillReciveProp,shouldcomponentupdate之類的吧。ajax請求自然是放在created裡面最好,放在元件生成的階段。
hr: 你說的是vue吧,算了setState也懶得問你了。
?尷尬的一b,其實是應該放在componentDidMount,因為真實Dom還沒掛載,無法實現ajax請求,太久沒做,忘光了。
hr: 如何防止this作用域紊亂。
我: 箭頭函式內部沒有this,所以多用箭頭函式,bind也可以改變this指向。
hr: 說說webpack如何進行效能優化吧,在原有腳手架基礎上。
我: 我覺得vue-cli已經做的非常好了,沒有優化必要。我用的webpack3-4,從我接觸到webpack的時候就已經 是webpack3了,
hr: 這個肯定是有的,最優配置都是自己做出來的。像我們公司從前的webpack打包要6分鐘,現在我們優化到只要 1分鐘,我們從1-4一直在做優化,推薦happypack的wepback打包外掛,極限提速(10秒jsp編譯過程我都嫌久了,真的沒做過複雜專案呢。)
hr: 你說說vue-cli腳手架內部實現原理吧,
我: 首先自然是 merge(webpack.base + prod + dev)(居然不問我webpack/babel/vscode外掛怎麼寫。外包還沒到這個級別吧。又也許是知道我不會,懶得問直接跳過)
hr: 專案測試用的什麼
我: eslint+vscode
hr: 如何禁止不符合eslint規範的程式碼被提交,
我: 當然是用自定義的命令咯,內部呼叫node,然後呼叫eslint對程式碼進行檢查,錯誤數量>0則不執行git add .的程式碼咯,
hr: 你還有什麼想知道的嗎?
我: 當然是關於面試評價咯。
嗯嗯好的。有時候,身邊的負責帶我的leader不會教我太多東西,而從沒見過的面試官卻能教我很東西,非常感謝。
最後
歡迎評論