2018年人生中最重要的事情之一就是找工作啦,從6月份初斷斷續續開始複習,7月內推開始,9月大批量的筆試、面試,9月初拿到了第一個offer,10月初拿到了自己比較滿意的offer,也是歷經了快4個月。
簡歷投的主要是杭州、上海的一些大廠們,分享一些面試的問題吧,考到爛的如輸入url發生了什麼、閉包是什麼,虛擬dom等,vue雙向繫結一類就不放出來了。
不過這些面試題雖然常見,但是還是要用心掌握,因為考到的頻率確實蠻高的。由於當時並沒怎麼接觸nodejs和react ,所以這方面的題目基本沒有。我是個懶人,所以僅有一些提供了一下思路~~
js相關
- ajax和axios的不同(多益)
- vue中在哪個階段進行非同步請求比較合適(阿里,百度)
- 微信小程式底層實現的機制(jsbridge)(阿里)
- vue中vuex的mapSetter是怎麼實現的(bilibili)
- 什麼是尾遞迴(bilibili)
- vue專案中使用到的優化手段(網易)
- commonjs和ES6中的模組化有什麼區別(網易)
回答見阮一峰的部落格 - webstoreage如果儲存滿了會怎麼樣(報錯)(網易)
- application cache是怎麼設定的(網易)
- 如何獲取一個div下所有的文字節點(網易)
- 相容瀏覽器的一些方法(網易)
- 為什麼不同瀏覽器渲染出來的東西會有差別,本質是什麼(網易)
- vue中寫一個元件要注意哪些(58)
- js如何實現多執行緒,webworker怎麼通訊(美團)
- vue的非同步更新考察:(美團)
vue中以下程式碼會出發幾次update生命週期(1次)
this.a=1
//程式碼
this.a=3;
複製程式碼
vue中以下程式碼會出發幾次update生命週期(2次)
setTimout(()=>{
this.a=1
},0)
//程式碼
this.a=3;
複製程式碼
那些紅寶書裡都有的知識點
紅寶書(javascript高階程式設計一定要好好看呀~~~ )
- BOM有哪些東西(網易)
- requestAnimationFrame和setTimeout寫動畫的區別 (網易)
- 如果得到今天是星期幾(getDay()(網易)
【我回答出來後,網易面試官說你怎麼記得那麼清楚 - -|||】
css相關
- 如何實現小於12px的字型效果(大疆)
- css匹配的演算法(從右向左)(大疆)
- animation和transition的區別(阿里)
- 一個div從一個地方挪到另一個地方的動畫如何實現,如果還要求滑鼠放上去時,該div還要旋轉怎麼寫(美團)
- 浮動和清除浮動考察(58): 如何5個div,其中第三個變成浮動的,會怎麼樣 怎麼讓他變回去——清除浮動
- 如何實現一個進度條(新浪)
手寫程式碼
- 陣列去重怎麼做,如果是陣列是這樣的[1,[2],[3]],該如何去重(bilibili)
- 寫一個函式 實現test(a)(b),如果b>0 返回a+b,如果b<0,返回a-b(柯里化考察)(bilibili)
function test(){
var a= [...arguments][0];
return function(){
var b = [...arguments][0];
if(b>0){
return a+b;
}else{
return a-b
}
}
}
複製程式碼
- 實現鏈式呼叫(百度)
coder.sleep().print1().print2()
class Coder{
sleep(){
console.log("sleep");
return this;//鏈式呼叫的關鍵
}
print1(){
console.log(1);
return this;//鏈式呼叫的關鍵
}
print2(){
console.log(2);
return this;//鏈式呼叫的關鍵
}
}
複製程式碼
- 如果sleep函式要等待3秒鐘再列印然後在執行之後的操作呢?
class Coder {
sleep(){
var date = new Date();
while((new Date() - date) < 3000) {
//通過這裡進行阻塞sleep
}
console.log("sleep");
return this;//鏈式呼叫的關鍵
}
print1(){
console.log(1);
return this;//鏈式呼叫的關鍵
}
print2(){
console.log(2);
return this;//鏈式呼叫的關鍵
}
}
var b = new Coder()
b.sleep().print1().print2()
複製程式碼
- 以下程式碼會輸出什麼(百度)
var date = new Date();
setTimeout(()=>{
console.log(new Date()-date)
},1000)
while((new Date()-date)<3000){
}
//輸出3000+的值
複製程式碼
-
事件代理考察:(百度) 如果有一個頁面,有許多a標籤,在上面寫點選事件的事件代理怎麼寫。 如果a標籤裡面也有很多子節點,點選了這些子節點也要實現上面效果?
思路:迴圈判斷e.target.parentNode.tagName==="a" -
跳臺階演算法(美團)
-
火車運煤演算法(美團)
-
[1,[2],[3,[4]]]這種無限巢狀陣列 變成[1,2,3,4]怎麼做(58)
資料庫
- 專案中為什麼使用mongodb,資料庫的三大正規化(百度)
- mongodb的aggregate介紹一下(阿里)
- mysql的優化手段(美團)
- mysql索引的原理(問的較多)
計算機網路
常見問題
- get和post的區別
- 狀態碼
- http和https的區別
其他
- dns請求過程
- dns是基於什麼協議(美團)
- TCP和UDP的使用場景和區別(美團)
- url除了http https之類的協議,可以有自己自定義麼。(58) 思路:可以,例如微信小程式底層Js Bridge原理就是利用url scheme攔截等
其他
-
作業系統的功能(百度)
-
頁面置換的演算法有哪些(bilibili)
-
前端安全(xss,csrf)(幾乎每個大廠都問到了)
-
AES和MD5的區別
-
git的stage,三個區是什麼(工作區,暫存區,版本庫)(阿里) 如果要寫實現一個搶紅包頁面,如何防止有人惡意一直玩搶紅包或者發包模擬搶紅包請求(網易)
個人思路:
1、判斷一段時間內同一個IP的請求數量
2、設定驗證碼
3、看頁面訪問順序,一般有一個入口頁面再是搶紅包頁面。惡意發包可能是直接的頁面請求
4、達到一定次數或者紅包額度,直接丟包 -
js和c語言編譯的差別
-
有一個使用者登入的表單,你會如何做使達到安全。(美團)
-
etag的原理(檔名時間hash)(美團)
-
一個微博api,提供top10的資料,但是每次去請求並不一定更新,所以每次這樣請求返回資料會浪費流量,希望有一個api可以返回是否更新,要怎麼操作。(美團) 思路:將資料進行hash,每次判斷一下和上一次的hash值。
-
jquery和vue的區別(美團)
一些面試心得
- 熟悉簡歷上寫的任何東西
- 回答問題時引到自己熟悉的東西上 比如問你ES6掌握情況,挑自己熟悉的講 比如前端優化回答時,挑自己理解原理的講,比如避免重排重繪,之後一般還會繼續問哪些會引起重繪重排
- 對方提不知道如何回答的問題時
1、引到自己會的:比如問php的繼承,講將js的繼承,問mysql的優化手段時,講mongodb的優化手段
2、講大概思路
3、請面試官給提示
4、不會就跳過,不要耽擱太多
複製程式碼
- 展示自己的部落格
- 熟悉的問題可以回答的深入一些
- 手寫程式碼時考慮封裝、資料型別判斷等
- 面試後總結 面試時有些問題覺得面試官問的很奇怪,要好好想想人家問問題背後的動機、想考察的知識點。
祝大家都能拿到心儀的offer,喲呼~~