前端vue 的面試總結 以及答案以及前端技術點面試


一:先談優化問題

      前端的優化方式

         初始化階段:

            1:初始化階段首頁圖片加載過多

                1.1:圖片懶加載

                 先將img標簽中的src鏈接設為同一張圖片,將其真正的圖片地址存儲在img標簽的自定義屬性。當js監聽到該圖片元素進入可視窗口時,再把src          的值替換為自定義屬性,減少首屏加載的請求數量,達到懶加載的效果。

      其中的定義滾動事件,和計算是否進入可視窗口,就用到了后面說的防抖和緩存layout屬性

 

    2: 初始化階段http 請求過多

           1:資源壓縮合並,減少http 請求, 為了減少http  請求多個 js 合並成一個js,css 也同理

           2: 谷歌瀏覽器最多只能支撐8 個並發量就是同一時間內只支持8 個htpp 請求,如果需要請求多個接口,可以把接口給合並

    3:  初始化階段請求的靜態資源過大

    

 

    4: 計算量大的處理,可以開啟一個worker 線程來計算,worker 必須要了解同源策略

   

    5:js 腳本放到html 底部

    6: 瀏覽器緩沖

    7: 盡量的避免減少 iframe 嵌套,iframe  會加到http 請求的次數,會重新請求http 。

二:一次完整的http 請求是什么樣的

二:vue 的問題

   1: 組件之間的傳值方式,參考我寫的博客大概說下有幾種傳值方式

         答:https://www.cnblogs.com/sunliyuan/articles/12188934.html

   2: 路由之間的跳轉方式

   3:vuex 是什么,如何使用

   4:說出至少四種vue 的指令以及他的用法

   5:  vue 寫組件的時候,什么時候使用key , 為啥要使用key

   6: v-model  的實現原理

   7 : 在使用過程中 有沒有用到自定義指令,他是怎么定義的

  8: 你一般在使用vue 封裝組件的時候,需要注意什么

  9:   vue中針對於比較復雜的對象不好監聽到,如何自己寫一個雙向綁定的實現方式(加分項)

三: 前端一些技術面試
   1: 改變this 指向的方式有幾種,有什么區別 

   2:promise 是如何變成同步的, 以及promise 返回值是什么 (以及 es7 的async 與await 能說出來最好,這個就是一個異步等待的東西)

         promise 封裝一個同步請求,

 

 

         promise 封裝一個異步請求

       

// 封裝一個get 請求
/**
  * get方法,對應get請求
  * @param {String} url [請求的url地址]
  * @param {Object} params [請求時攜帶的參數]
  */
export function get(url, params) {
  return new Promise((resolve, reject) => {
    axios.get(url, {
      params,
    }).then((res) => {
      resolve(res.data);
    }).catch((err) => {
      reject(err.data);
    });
  });
}

//封裝一個post 請求

/**
  * post方法,對應post請求
  * @param {String} url [請求的url地址]
  * @param {Object} params [請求時攜帶的參數]
  */
export function post(url, params1) {
  let params = params1;
  if (!(params instanceof FormData)) {
    params = QS.stringify(params);
  }

  return new Promise((resolve, reject) => {
    axios.post(url, params)
      .then((res) => {
        if (!res.data || res.data.length === 0) reject(res.data);
        resolve(res.data);
      })
      .catch((err) => {
        reject(err.data);
      });
  });
}

// 把異步請求換成同步一個個來執行,返回值是一個數組,把每個異步的返回值都放到一個數組里面
export function all(axiosArray) {
  return new Promise((resolve, reject) => {
    axios.all(axiosArray)
      .then((res) => {
        resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });
}

 

 

         promise 不想用 .then, 直接return  給一個變量

 

   3:scss 使用過沒,使用過的話怎么定義一個變量封裝一個函數(參考我的博客 https://www.cnblogs.com/sunliyuan/p/14449120.html )

 

四: webpack 打包的方式

  

  

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM