筆試題
1、用promise,async/awit實現圖片懶加載
loadImg(src).then();
loadImg([src1,src2]).then();
2、實現一個函數使:
a(1,2)(3)(5); // 得到11
a(1)(3,4)(8)(3,4); // 得到參數和
/**
* 這題考察的是函數的柯里化
* /
3、一個素組的範圍[K, N-2 + K ],現在出現了兩個重複的,找出重複項
/**
* 這個就是純粹的算法,我用了array的方法(肯定不是出題者的本意)-_-...平時確實沒有練這塊
* /
4、依次寫出打印值
(function () {
new Promise((resolve, reject) => {
console.log('promise1')
resolve()
}).then(resolve => {
console.log(2)
new Promise(resolve => {
console.log(4)
resolve()
}).then(resove => {
console.log(5)
})
}).then(resolve => {
console.log(3)
resolve()
})
})()
/**
* 我的答案是1.2.3.4.5的順序,這題考察了event loop,微任務裏面的微任務執行時機問題
* /
5、寫出結果
var a = 'hei hei'
(function() {
if (typeof a === 'undefind') {
var a = 'bigo'
console.log(a)
} else {
console.log(a)
}
})()
/**
* 這題考察了執行上下文的問題,我的答案是'bigo'
* /
6、將如下字符串轉爲json對象
let str = '{name: "zhang";"tel": 123456789}'
/**
* 這個寫我寫了個正則,將(name):(zhang)這種東西摟出來,然後用replace($, $1, $2)遍歷生成一個json
* /
7、用正則驗證一個圖片地址
let src = 'https://cdn.test.iamge.com/image.png'
/**
* src具體啥樣的忘記了,反正就是要考慮協議(http、https),域名(www.xxx.com),圖片後綴(jpg、png),寫的時候感覺時間不多了,域名裏的點沒怎麼考慮,好像直接用(*)梭哈了>_<
* /
8、寫出打印值
window.a = 'a';
b = 'b';
delete window.a
delete b
console.log(a, b)
/**
* 我當時寫了兩個undefined....a肯定undefined了,b是不是後面驗證下
* /
9、一個關於Symbal的問題,具體忘記了,大概就是判斷類型,搞清楚這兩點就行了
typeof Symbal // function
typeof Symbal('a') // symbal
/**
* 這裏再跟面試官聊的時候,我記得基本數據類型裏是沒有'function'這貨的,結果他打開chrome,確確實實輸出了'function'.....
* /
10、加一行代碼時輸出預期結果
var a = 'a', b = 'b';
// 寫下你的代碼
console.log(a.name, b.name) // a, b
筆試題就記得這些了
面試題
輸入url到頁面顯示的過程
- dns解析,拓展了一下它的應用dns負載均衡(cdn)
- 根據tcp/ip/以太網協議,包是如何傳到目標計算機(路由、廣播、MAC地址),順便說了下最近做h5支付的時候,後臺代碼和我的代碼都在局域網內,結果後臺拿的是內網ip地址而微信服務器拿的外網地址的原因
- tcp連接過程的中的三次握手、慢開始、擁塞避免,一個應用開一個端口,保證包傳輸正確,拓展:http1.1(目前基本用的這個)最多建立6個tcp連接,管道機制(a、b、c三個請求依此發送,tcp會依此返回,不管哪個結果服務器先準備好),打開淘寶,我們可以看到來自不同域名的資源,就是優化這個tcp連接上限的。http2.2的多共通信,請求不必按順序返回,準備一點,返回一點。寥寥無期
- 解析html,生成dom數,如果遇到script會阻塞dom tree的生成,所以我們一般吧scrip放在最後,link標籤加載完生成cssom數,渲染樹,根據盒模型計算dom在屏幕中的位置,渲染上去
- js的執行,說了一下執行上下文,event loop,js獲取style執行隊列清空,立刻重繪,等等
大概就是分成這些點在說,但是說的時候感覺自己表述的很亂,漏了很多
vue
- v-if和v-show什麼區別,vdom裏面的表現形式如何
- v-for裏面的key的作用,vdom裏面的表現形式使怎麼樣的,優化的過程是怎麼樣的
- compute、watch、和method的區別
- vue模板裏面({{}})寫全局變量會怎麼樣,寫函數行不行,new語句行不行,templete裏面的作用域是怎麼樣的
- vue的父子組件傳遞數據的方式
- vue的原理
postcss瞭解嗎
寫過一個postcss插件
babel這塊原理
寫過一個babel插件demo
http緩存說一下
- 強緩存
- 協商緩存
- etag怎麼生存成(大小文件)
從命令行輸入npm run dev後,發生了什麼?
首先讀取webpack.config文件,找到script標籤裏的dev命令指向的文件,執行這個文件,....,webpack的enter文件入口文件,解析依賴關係...
理解很淺顯,什麼代碼分割、插件、去重、壓縮這些都沒有說,就曉得個loader,babel倒是嗶哩嗶哩的說了一通+_+
webpack插件機制
es6裏面的array、string方法說一下
就說了幾個,array.from等等,沒咋記
node裏面兩個文件裏面互相引用會怎麼樣
我說在node這塊對他的理解僅限於把它當作一個開發環境,然後就是使用koa寫寫接口掉下數據庫,面試官就換了種方式問,兩個文件裏互相require會怎麼樣(大概是這個意思吧)?
es6的import是編譯時加載,require時運行時加載,值就是個引用指針,import會轉成require(webpack),所以是互相引用的關係,我看vue源碼裏面一堆相互引用,也沒啥毛病,就說應該沒問題吧。。。。
vuex原理是怎樣的,讓你實現會怎麼做
vue-router的原理怎樣的,hash模式和histroy模式怎在做
react
- react和vue對比一下
- react中props和state有什麼區別,他們的更改觸發的render函數的範圍是怎麼樣的
- 說一下react的生命週期,,涼涼,瞬間忘光光,只說了幾個
Object.defineProperty和proxy的區別
目前有印象的就這些了