Interview(XCJ)

面試題


  • 1.box-sizing屬性有幾個值,分別代表什麼?
    • content-box :在寬度和高度之外繪製元素的內邊距和邊框
    • border-box:爲元素設定的寬度和高度決定了元素的邊框盒
    • inherit:規定應從父元素box-sizing屬性的值
  • 2.舉例說明幾個css可以繼承與不可以繼承的屬性?

  • 可繼承
    • 1.文本屬性
    • 2.盒子模型的屬性(寬高,邊框,邊距)
    • 3.背景屬性(background系列)
    • 4.定位屬性(float、clear、position等)
    • 5.生成內容屬性(content、counter-reset、counter-increament
    • 6.輪廓樣式屬性(outline系列)
    • 7.頁面樣式屬性(size)
  • 不可繼承
    • 字體系列屬性
    • 文本系列屬性
    • 元素可見性
    • 表格佈局屬性
    • 列表佈局屬性
    • 生成內容屬性
  • 3.position的值,relative和absolute分別是相對於誰定位的?

  • 4.null和undefined的區別
  • 5.ajax請求的時候,get和post區別有哪些?
  • 6.使用ajax如何控制請求的異步與同步
    • async:true異步

      ajax發送請求後,在等待server端返回的這個過程中,後臺會繼續執行ajax塊後面的腳本,知道server返回正確的結果纔會去執行success,也就是說這時執行的是兩個線程(ajax塊發出請求後是一個線程,ajax塊後面的腳本是一個線程)

  • $.ajax({
        type:'POST',
        url:"",
        dataType:"",
        success:function(result){
            f1();
            f2();
        }
        failure:function(result){
            alert('Failed')
        }
    })
    function2()
    //ajax發出請求後,將停留在function1,等server端的返回,但同時(在這個等待的過程中)前臺會去執行function()
    - async:false同步
    

    ajax塊發出請求後,會等待在function1的地方,知道function1執行完成纔會執行function2

    • 7.舉例寫幾個jQuery關於dom階段的操作命令(https://www.processon.com/mindmap/58caa8c0e4b0d15a7562475d
      • 1.text()設置貨返回元素的文本內容
      • 2.html()設置或返回元素內容包括HTML標籤
      • 3.val()設置貨返回表單字段的值
      • 4.attr()獲取屬性值
      • 5.append()末尾插入
      • 6.appendTo()元素位置轉移
      • 7.prepend()開頭插入
      • 8.after()在選擇元素之後插入
      • 9.before()在選擇元素之前插入
    • 8.簡述本地存儲
      • 實現用戶瀏覽器對數據的本地存儲
      • HTML5之前,應用程序數據只能存儲在cookie中,包括每個服務器請求。本地存儲更爲安全,可在不影響網站性能的前提下將大量數據存儲與本地
      • 本地存儲經由起源地(origin)(經由域和協議),所有頁面,從起源地能夠存儲和訪問相同的數據
    • 9.說明瀏覽器的渲染過程(https://zhuanlan.zhihu.com/p/29418126

      • 關鍵渲染路徑(Critical Reandering Path)是指與當前用戶操作有關的內容。
      • 瀏覽器渲染頁面的過程
        • 1.DNS查詢
        • 2.TCP連接
        • 3.HTTP請求即響應
        • 4.服務器響應
        • 5.客戶端渲染(渲染書構建,佈局及繪製)
          • (1)處理HTML標記並構建DOM樹
          • (2)處理css標記並構建CSSOM樹
          • (3)將DOM與CSSOM合併成一個渲染樹
          • (4)根據渲染樹來佈局,以計算每個節點的幾何信息
          • (5)將各個節點繪製到屏幕上
    • 10.常見的瀏覽器兼容問題有哪些?

    • 11.IE與Mozilla的事件機制有什麼區別?
    • 12.ES5和ES6中的繼承有什麼區別,怎麼實現的?
      • es5(原型鏈繼承–》逐級查找)
    • 13.舉例說幾個sass與less的區別
    • 14.簡單說明你對typescript的瞭解
    • 15.簡述webpack的原理與作用
    • 16.angular、react、vue常用的功能有哪些
    • 17.代碼託管工具,日常用到的命令
    • 18.常用的PC端與移動端第三方UI框架有哪些
    • 19.通過前端技術如何實現網頁加載速度?
    • 20.如何控制文件是否需要HTML緩存,簡述HTML緩存的原理
    • 21.關於網站安全性,前端開發有哪些需要考慮的問題
    • 22.要統計每個http請求從服務器返回的時間,簡單描述實現思路

    面試官問題

    • 1.怎麼和後臺數據交互,怎麼處理從後臺來的數據
    • 2.原生和jQuery操作dom的方法
    • 3.瀏覽器渲染頁面
    • 4.HTML、css、js的加載順序
    • 5.原生方面的瀏覽器兼容(IE8及以上不同版本)
    • 6.if註釋是兼容IE幾?哪方面的?
    • 7.上拉加載下拉刷新一會使用插件還是自己寫?
    • 8.react的生命週期有幾個?
    • 9.在循環裏使用定時器需要注意什麼?

      • 一定要保存當前的i的值再做處理,否則,你拿到的i的值會是for循環裏最大的那個

        js代碼由上自下讀取,讀取到i滿足if語句的時候並不是停止了,還會繼續做循環判斷,而此時if語句裏面是個延時器,黨延時器時間結束要調用aa函數的時候,for循環已經結束,而此時的i變爲10

      • 解決方法

      var j = null;  
          for (var i = 0; i < 10; i++) {  
              if(i == 5){  
                  j = i;  
                  setTimeout(aa,2000);  
                  function aa(){  
                      console.log( "i="+j);  
                  }  
              }  
          }  
    • 10.es6的新特性,es6的promise,怎麼在promise中讓之後的代碼不執行(主動阻塞)

      • 新特性
        • 默認參數(可以將默認值直接放在函數簽名中)
        • 模板表達式(var name=Your name is ${first} ${last}
        • 多行字符串
        • 拆包表達式(var {house,mouse}=$(“body”).data() 在數組中也能用 )
        • 改進的對象表達式
        • 箭頭函數
        • Promise
        • 塊級作用域let和const
        • 模塊化
      • 拋出錯誤後停止promise

        //思路:發生無法繼續的錯誤後,直接返回一個始終不resolve也不reject的Promise,即這個Promise永遠處於pending狀態,那麼後面的Promise鏈就會一直等着既不執行了
        Promise.stop=function(){
           return new Promise(function(){})
        }
        doSth()
        .then(value=>{
          if(sthBigErrotOccured()){
             return Promise.stop()
          }
          //normal logic
        })
        .catch(reson=>{  //will never get called
        //normal logic
        })
        .then()
        .catch(res=>{  //will nerver  get called
              //normal logic
        })
        .then()
        .catch(res=>{  //wil nerver get called
               //normal logic
         })
         //優點:
         幾乎不用改變現有代碼;兼容性好;不管使用哪個Promise庫,甚至不同的Promise之間相互調用,都支持
         //缺點:
         會造成內存泄漏
    • 11.說說你瞭解的面向對象?繼承有幾種方式
    • 12.面向對象中的this指針問題
    • 13.bind,apply,call的區別
      • call 參數與方法中的對應
      • apply 第二個參數是數組,與方法中的對應
      • bind返回的仍然是個函數,可以在調用的時候再進行傳參
    • 14.CSS3的動畫,實行動畫的方式,transform中的scale有什麼方法能讓它放大不變回去
    • 15.redux,不用redux的話自己定義的本地數據存放在那?store裏的數據是公用的嗎?組件之間如何進行數據交互如何傳值的?
    • 16.jQuery的動畫
    • 17.react的組價通信有幾種方式?react怎麼
    • 18.es6是怎麼進行編譯的
    • 19.webpack需要配置什麼
    • 20.es6相對於es5新增了哪些東西?
    • 21.react會用到class(類)嗎?class的繼承是通過什麼繼承的?super需要傳什麼參數嗎?
    • 22.常見的網站攻擊,XSS攻擊的原理是什麼?
    • 23.js怎麼進行邏輯處理
    • 24.git創建分支有幾種方式?常用的git命令。
    • 25.遞歸和定時器哪個處理邏輯更方便
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章