記一次面試記錄

以下都是此次面試問題的個人理解,僅供參考,歡迎指正,共勉。

  1. js中有哪些數據類型,它們在內存中得存在形式?
    基本類型存儲在空間裏面:string/number/boolean/undefind/null
    引用類型存在空間裏面:object/array
  2. 移動端點擊時有延時嗎?延時多長時間?是什麼原因造成的?有什麼改進方法?
    移動端點擊時有200~300ms的延時,是因爲移動端會有一些默認行爲,比如雙擊縮放、雙擊滾動等行爲,尤其是雙擊縮放,是爲桌面網站在移動端的瀏覽體驗設計的,而在用戶點擊時,瀏覽器會優先判斷用戶是否要觸發默認行爲。
    方案一:禁用縮放(會影響功能不建議)
    <meta name="viewport" content="user-scalable=no">
    <meta name="viewport" content="initial-scale=1,maximum-scale=1">
    
    方案二:更改默認的視口寬度
    它沒有完全禁用縮放,而只是禁用了瀏覽器默認的雙擊縮放行爲,但用戶仍然可以通過雙指縮放操作來縮放頁面。
    <meta name="viewport" content="width=device-width">
    
    方案三:使用FastClick等比較成熟的外部插件
    FastClickFT Labs 專門爲解決移動端瀏覽器 300 毫秒點擊延遲問題所開發的一個輕量級的庫。
    FastClick的實現原理是在檢測到touchend事件的時候,會通過DOM自定義事件立即出發模擬一個click事件,並把瀏覽器在300ms之後的click事件阻止掉。
  3. 移動端點擊一下頁面觸發的事件順序?
    事件的執行順序會受觸摸的力度和長短,還有是否移動有關。
    一般執行順序爲:
    touchstart => touchmove => touchend => touchcancel(一般不會執行) => click
  4. 作用域鏈有了解嗎?
    JavaScript的變量都是對象的屬性,而該對象可能又是其它對象的屬性,而所有的對象都是全局對象的屬性,所以這些對象的關係可以看作是一條鏈,
    鏈頭就是變量所處的對象,鏈尾就是全局對象
  5. 閉包有了解嗎?一般使用場景?
    閉包是函數和聲明該函數的詞法環境的組合。
    通常使用只有一個方法的對象的地方,都可以使用閉包。
    詳細解釋起來太長,網上有很多種解釋,都可以參考,這裏是MDN對閉包的專業解釋。
  6. 設計模式當中的單例模式瞭解嗎?
    單例模式也稱爲單子模式或單體模式,規則是保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
    《JavaScript高級程序設計》中也稱之爲對象字面量模式。
    以下爲代碼示例:
    //單例模式抽象,分離創建對象的函數和判斷對象是否已經創建
        var getSingle = function (fn) {
            var result;
            return function () {
                return result || ( result = fn.apply(this, arguments) );
            }
        };
    
  7. 發起一個ajax請求的流程是怎樣的。
    1、創建XMLHttpRequestd對象實例
    2、連接服務器
    3、向服務器發送請求
    4、接受服務器的返回
  8. 在瀏覽器中輸入一段url地址會發生什麼?
    1、瀏覽器解析
    2、查詢緩存
    3、DNS查詢
    4、建立鏈接
    5、發送HTTP請求
    6、服務器發送響應
    7、客戶端收到頁面
    8、解析HTML
    9、構建渲染樹
    10、瀏覽器佈局渲染
  9. http與https的區別?
    1、http 的URL 以http:// 開頭,https以https:// 開頭。
    2、http 標準端口是80 ,https是443。
    3、https 協議需要到ca申請證書,http不需要。
    4、http 是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
    5、http 的連接很簡單,是無狀態的,https協議是由SSL+http協議構建的可進行加密傳輸、身份認證的網絡協議 要比http協議安全。
  10. ES6中得箭頭函數新特性是什麼?
    1、對 this 的關聯
    2、new 不可用
    3、this 不可變
    4、沒有arguments對象
    5、等等

其他

  1. 移動端有哪些性能方面的優化?
  2. dns是什麼?
  3. vue的生命週期都有哪些?
  4. git有使用過嗎?git的版本管理了解嗎?
  5. app用戶輸入賬號密碼,前後端的驗證流程是怎樣的?
  6. 爲什麼想換工作呢,離職的原因是什麼?

大概就這些吧,中間還有其他問題,記不太清了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章