2020.09 中高級前端面試題

最近由於公司的戰略調整與職業發展的緣故離開了老東家,期間變成了求職者的角色,也作了半個月的面試官。如今已經從面試官的職務抽離了出來,故來分享一下 2020 中高級前端工程師常見的面試題。css

面試前的準備

  1. 中/英文自我介紹
  2. 離職的緣由

html

  1. 把帶 css 連接的 <link> 標籤放在 <head> 標籤內,而帶 js 連接的 <script> 標籤儘可能靠近 </body>, 爲何會有這種提議?若是必須不這樣作,如何處理?

css

  1. 列舉水平垂直居中的實現
  2. 簡述一下什麼是盒子模型
  3. 瞭解過 flex 佈局、 grid 佈局嗎
  4. 計算樣式權重

JavaScript

  1. 數組去重
  2. 數組多層扁平化
  3. 深拷貝數組和對象
  4. 數組裏面有 10 萬個數據,取第 1 個數據與第 10 萬個數據的時間相差多少?
  5. 數組的 map 和 forEach 有什麼區別?
  6. Fetch 與 XHR 的區別?
  7. bind、call、apply 的區別?
  8. 如何檢測變量的類型(儘量多,描述可能出現的問題)?
  9. 簡述一下原型鏈
  10. 使用過 ES6 嗎?你經常使用的有哪一些?
  11. 簡述一下 Promise 的特色
  12. Promise 怎麼作異常處理?
  13. Promise 串聯加載?
  14. Promise 並行加載?
  15. Promise 限流併發?
  16. async/await?
  17. 必定要使用 async/await 嗎,若是我不作異步處理,可能只是處理簡單的關閉彈框不能用 Promise 嗎?
  18. 事件循環 (event-loop)

計算題

  1. 按順序寫出程序的輸出結果:html

    考察 this 問題
    var length = 10;
    
    function fn() { alert(this.length); }
    var obj = {
      length: 5,
      callApi: function(fn) {
        fn();
        arguments[0]();
      }
    }
    
    obj.callApi(fn, 3)
  2. 列出下面代碼的不足及優化方案前端

    var node = document.querySelectorAll('ul');
    for (var i = 0;i < node.length; i++) {
      node[i].addEventListener('click', function() {
        alert('click' + i);
      });
    }
  3. 改造下面的代碼,使之輸出 0 ~ 9,寫出你能想到的全部解法。vue

    for (var i = 0;i < 10; i++) {
      setTimeout(() => {
        console.log(i)
      }, 1000);
    }
  4. 請寫出下面代碼的運行結果node

    async function async1() {
     console.log("async1 start");
     await async2();
     console.log("async1 end");
    }
    
    async function async2() {
        console.log("async2");
    }
    
    console.log("script start");
    
    setTimeout(() => {
        console.log('setTimeout');
    }, 0);
    
    async1();
    
    new Promise((reslove) => {
        console.log("promise1");
        reslove();
    }).then(() => {
        console.log("promise2");
    })
    
    console.log("script end");

概念類

  1. 什麼是閉包?列舉閉包的應用場景
  2. 什麼是科裏化?
  3. 節流與防抖
  4. 說說從瀏覽器地址欄輸入 URL 到頁面加載完的過程當中都發生了什麼事情?

TypeScript

  1. 爲何要引入 TypeScript,引入的好處是什麼?

React

  1. 虛擬 dom 是如何提高性能的
  2. React 經過什麼方式來更新數據
  3. React 不能直接修改 State 嗎?
  4. setState 是同步仍是異步的?
  5. React 生命週期
  6. 組件通訊
  7. 簡述一下 React.Context 怎麼使用
  8. 函數組件是什麼?
  9. 高階函數、高階組件
  10. 受控組件與非受控組件的區別
  11. 異步組件怎麼使用?
  12. 怎麼對組件的參數作類型約束呢?
  13. 組件設計原則
  14. React 性能優化
  15. 父組件在執行 render 時會不會觸發子組件的 render 事件?若是會該怎麼避免?
  16. 有了解過 Portals 嗎?
  17. Hook 相比 class 的優勢
  18. 自定義 Hook 約束
  19. 自定義 Hook 使用
  20. redux 是什麼?
  21. redux 的三大原則是什麼?
  22. 描述 redux 單向數據流

Vue

  1. 列舉 Vue 的生命週期以及它們的應用場景
  2. 父組件和子組件生命週期鉤子執行順序是什麼?
  3. DOM 渲染在 Vue 的哪一個生命週期就已經完成
  4. v-for 遍歷模板時爲何要用 key? key 有什麼用?
  5. v-if 與 v-show 有什麼區別? 在什麼場景下能夠應用
  6. 組件通訊
  7. vue 的雙向綁定原理是什麼?
  8. 怎麼在組件中實現 v-modal
  9. vue router 的 beforeEach 和 afterEach 通常用法/使用場景?

webpack

  1. module、chunk、bundle 分別是什麼?
  2. loader 和 plugin 有什麼區別?有本身實現過嗎?
  3. 除了作基礎腳手架外,還用來作過什麼?
  4. webpack 實現懶加載
  5. webpack 優化項
  6. babel-runtime 和 babel-polyfill
  7. 什麼是 Tree-Shaking

優化類

  1. SPA(vue/react) 如何優化首頁的加載速度?首屏空白是什麼問題引發的?
  2. 頁面優化有哪些方案?

解決方案

  1. 列舉移動端適配方案
  2. 怎麼處理跨域?
  3. Vue 與 React 的區別,怎麼作技術選型?

HTTP

  1. 列舉 HTTP 狀態碼以及它們的含義
  2. 有了解過 HTTP 緩存嗎?

運維相關

  1. 瞭解過 docker 嗎?
  2. 大家項目的 CI/CD 是怎麼搭建的?
  3. 阿里雲的 CDN 資源有緩存,如何強制更新緩存?
  4. git 除了 pullpush 外還了解哪些命令?

其餘

  1. 你哪些項目實現的比較滿意?
  2. 你碰到最難的一個問題是什麼?
  3. 是否寫過測試用例
  4. 是否瞭解敏捷開發
    • *

目前只是整理了常見的題目,如今正在 front-end-lab 中持續更新: 2020 前端面試筆記 ,同窗們能夠 watch 儲存庫的更新,後續也會陸續同步到此處上~react

若是有同窗感興趣的話,後續還能夠分享一些面試的心得,以及作面試官時觀察到的一些問題。最後但願你們能在「金九銀十」的求職季中找到滿意的工做~webpack

相關文章
相關標籤/搜索