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