
問題:什麼是中間人攻擊?
解析:中間人 (Man-in-the-middle attack, MITM) 是指攻擊者與通訊的兩端分別創建獨立的聯繫, 並交換其所收到的數據, 使通訊的兩端認為他們正在通過個私密的連接與對方直接對話, 但事實上整個會話都被攻擊者完全控制。在中間人攻擊中,攻擊者可以攔截通訊雙方的通話並插入新的內容。
般的過程如下:
客戶端發送請求到服務端,請求被中間人截獲 ;
伺服器向客戶端發送公鑰 ;
中間人截獲公鑰,保留在自己上。然後自己生成個【偽造的】公鑰,發給客戶端客戶端收到偽造的公鑰後,生成加密hash值發給伺服器 ;
中間人獲得加密hash值,用自己的私鑰解密獲得真密鑰,同時生成假的加密hash值,發給伺服器 ;
伺服器用私鑰解密獲得假密鑰,然後加密數據傳輸給客戶端
問題:webpack與grunt、gulp的不同點有哪些?
解析:Grunt、Gulp是基於任務運的具:
它們會動執指定的任務,就像流線,把資源放上去然後通過不同插件進加,它們包含活躍的社區,豐富的插件,能便的打造各種作流。
Webpack是基於模塊化打包的具:
動化處理模塊,webpack把切當成模塊,當 webpack 處理應程序時,它會遞歸地構建個依賴關係圖(dependency graph),其中包含應程序需要的每個模塊,然後將所有這些模塊打包成個或多個 bundle。
因此這是完全不同的兩類工具,而現在主流的方式是用npm script代替Grunt、Gulp,npm script同樣可以打造任務流.
問題:webpack、rollup、parcel三者的優劣有哪些?
解析:webpack適用於大型複雜的前端站點構建: webpack有強大的loader和插件生態,打包後的文件實際上就是個立即執行函數,這個即執行函數接收個參數,這個參數是模塊對象,鍵為各個模塊的路徑,值為模塊內容。立即執行函數內部則處理模塊之間的引用,執行模塊等,這種情況更適合文件依賴複雜的應用開發.
rollup適用於基礎庫的打包,如vue、d3等: Rollup 就是將各個模塊打包進個文件中,並且通過 Tree-shaking 來刪除無用的代碼,可以最大程度上降低代碼體積,但是rollup沒有webpack如此多的如代碼分割、按需加載等高級功能,其更聚焦於庫的打包,因此更適合庫的開發。
parcel適用於簡單的實驗性項目: 他可以滿足低門檻的快速看到效果,但是生態差、報錯信息不夠全面都是他的硬傷,除了些玩具項目或者實驗項目不建議使用。
以上就是小科今天整理提供的Web前端開發面試題,希望為Web前端同學提供了有用的面試素材,以後小科每日均會提供Python、Web及MySQL資料庫相關的習題。學習沒有捷徑,希望大家都能少走一些彎路,順利找到工作!