面試題目回憶
- 簡單介紹自己(自我介紹)
- 你為什么選擇前端作為你的職業生涯/發展方向?什么時候開始學前端的?項目經歷?
- TCP/IP的四層協議(名字)
- HTTP協議工作的協議層?TCP、UDP工作在哪一層,且它們之間的區別(展開問)
- TCP的擁塞控制
- HTTP的狀態碼分類(5類,功能)301、302、401
- css中盒模型box-sizing中content-box和border-box的區別(這個是忘記了這個點,考的是普通盒模型和怪異盒模型)
- flex布局的理解
- flex各種屬性(flex-basic控制什么,作用)需要加強
- 寫結果題,考的是this指向,未答好
window.name = 'ByteDance';
function A () {
this.name = 123;
}
A.prototype.getA = function(){
console.log(this);
return this.name + 1;
}
let a = new A();
let funcA = a.getA;
funcA();
- js當中0.1+0.2的結果是什么,為什么不是0.3?
- cookie和session在前端中的作用
- http是無狀態協議,服務端如何做到對客戶端的標識
- 實現一個函數,可以滿足sum(x, y)和sum(x)(y)兩種調用方式,
如sum(1, 2) = 3 , sum(1)(2) = 3
(附上我勉強能過的答案)
var sum = function(x, y){
return (y === undefined)? function(z){return x + z}: x + y;
}//應該用閉包來做,我這個勉強算是個閉包吧…
- 對現在的框架的認識(Angular、React、Vue)
- Promise執行順序
setTimeout(_ => console.log(1))
new Promise(resolve => {
resolve()
console.log(2)
}).then(_ => {
setTimeout(_ => console.log(3))
console.log(4)
Promise.resolve().then(_ => {
console.log(5)
}).then(_ => {
Promise.resolve().then(_ => {
console.log(6)
})
})
})
console.log(7)//這題我答的不太可,Promise沒接觸過
- setTimeout和Promise的順序
- 發布訂閱模式以及是否了解 EventEmitter (這個我不太了解,所以面試官給了下一題)
- 給定一個字符串,請你找出其中不含有重復字符的最長子串的長度。
(abcabcbb: 3, pwwkew: 3, aaa: 1)(突然卡殼了,只有思路寫不出來,換了C++還寫不出來,囧死) - 自己的學習方式(自學方式)
面試官給出的建議:想深耕前端,flex是基礎,一些框架盡量去接觸(這個時間久遠沒有說好)、js語言底層的一些東西(setTimeout),基本功
總結:與js相關的知識遺忘較大,未能說出自己對框架的理解,編碼能力待提高,flex是個重點,需要繼續加油