1. 程式人生 > >撩課-Web大前端每天5道面試題-Day27

撩課-Web大前端每天5道面試題-Day27

1.瀏覽器快取?

瀏覽器快取分為強快取和協商快取。當客戶端請求某個資源時,獲取快取的流程如下:

先根據這個資源的一些 http header 判斷它是否命中強快取,
如果命中,則直接從本地獲取快取資源,不會發請求到伺服器;

當強快取沒有命中時,客戶端會發送請求到伺服器,
伺服器通過另一些request header驗證這個資源是否命中協商快取,稱為http再驗證,
如果命中,伺服器將請求返回,但不返回資源,
而是告訴客戶端直接從快取中獲取,客戶端收到返回後就會從快取中獲取資源;

強快取和協商快取共同之處在於,
如果命中快取,伺服器都不會返回資源;

區別是,強快取不對傳送請求到伺服器,但協商快取會。

當協商快取也沒命中時,伺服器就會將資源傳送回客戶端。

當 ctrl
+f5 強制重新整理網頁時,直接從伺服器載入,跳過強快取和協商快取; 當 f5 重新整理網頁時,跳過強快取,但是會檢查協商快取;

 

2.如何實現sleep的效果(es5或者es6)?

(1)while迴圈的方式
function sleep(ms){
   var start=Date.now(),expire=start+ms;
   while(Date.now()<expire);
   console.log('1111');
   return;
}
執行sleep(1000)之後,休眠了1000ms之後輸出了1111。上述迴圈的方式缺點很明顯,容易造成死迴圈。

(
2)通過promise來實現 function sleep(ms){ var temple=new Promise( (resolve)=>{ console.log(111);setTimeout(resolve,ms) }); return temple } sleep(500).then(function(){ //console.log(222) }) //先輸出了111,延遲500ms後輸出222 (3)通過async封裝 function sleep(ms){ return new Promise((resolve)=>setTimeout(resolve,ms)); }
async function test(){ var temple=await sleep(1000); console.log(1111) return temple } test(); //延遲1000ms輸出了1111 (4).通過generate來實現 function* sleep(ms){ yield new Promise(function(resolve,reject){ console.log(111); setTimeout(resolve,ms); }) } sleep(500).next().value.then(function(){console.log(2222)})

 

3.http和https的基本概念?

http: 超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議,
是一個客戶端和伺服器端請求和應答的標準(TCP),
用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,
它可以使瀏覽器更加高效,使網路傳輸減少。

https: 是以安全為目標的HTTP通道,簡單講是HTTP的安全版,
即HTTP下加入SSL層,HTTPS的安全基礎是SSL,
因此加密的詳細內容就需要SSL。
https協議的主要作用是:
建立一個資訊保安通道,來確保陣列的傳輸,確保網站的真實性。

 

4.http和https的區別?

http傳輸的資料都是未加密的,也就是明文的,
網景公司設定了SSL協議來對http協議傳輸的資料進行加密處理,
簡單來說https協議是由http和ssl協議構建的可進行加密傳輸和身份認證的網路協議,
比http協議的安全性更高。

主要的區別如下:
Https協議需要ca證書,費用較高。
http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
使用不同的連結方式,埠也不同,一般而言,http協議的埠為80,https的埠為443
http的連線很簡單,是無狀態的;
HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

 

5.https協議的工作原理?

客戶端在使用HTTPS方式與Web伺服器通訊時有以下幾個步驟:

客戶使用https url訪問伺服器,則要求web 伺服器建立ssl連結。
web伺服器接收到客戶端的請求之後,會將網站的證書(證書中包含了公鑰),
返回或者說傳輸給客戶端。
客戶端和web伺服器端開始協商SSL連結的安全等級,也就是加密等級。
客戶端瀏覽器通過雙方協商一致的安全等級,建立會話金鑰,
然後通過網站的公鑰來加密會話金鑰,並傳送給網站。
web伺服器通過自己的私鑰解密出會話金鑰。
web伺服器通過會話金鑰加密與客戶端之間的通訊。