Interview for JavaScript
阿新 • • 發佈:2018-11-16
1、webSocket如何相容低瀏覽器?
Adobe Flash Socket 、 ActiveX HTMLFile (IE) 、 基於 multipart 編碼傳送 XHR 、 基於長輪詢的 XHR
2、執行緒與程序的區別
一個程式至少有一個程序,一個程序至少有一個執行緒. 執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。 另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。 執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。 從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。
3、你如何對網站的檔案和資源進行優化?
期待的解決方案包括:
檔案合併
檔案最小化/檔案壓縮
使用 CDN 託管
快取的使用(多個域名來提供快取)
其他
4、請說出三種減少頁面載入時間的方法。
1.優化圖片
2.影象格式的選擇(GIF:提供的顏色較少,可用在一些對顏色要求不高的地方)
3.優化CSS(壓縮合並css,如margin-top,margin-left...)
4.網址後加斜槓(如www.campr.com/目錄,會判斷這個“目錄是什麼檔案型別,或者是目錄。)
5.標明高度和寬度(如果瀏覽器沒有找到這兩個引數,它需要一邊下載圖片一邊計算大小,如果圖片很多,瀏覽器需要不斷地調整頁面。這不但影響速度,也影響瀏覽體驗。 當瀏覽器知道了高度和寬度引數後,即使圖片暫時無法顯示,頁面上也會騰出圖片的空位,然後繼續載入後面的內容。從而載入時間快了,瀏覽體驗也更好了。) 6.減少http請求(合併檔案,合併圖片)。
5、什麼是 FOUC(無樣式內容閃爍)?你如何來避免 FOUC?
FOUC - Flash Of Unstyled Content 文件樣式閃爍 <style type="text/css" media="all">@import "../fouc.css";</style> 而引用CSS檔案的@import就是造成這個問題的罪魁禍首。IE會先載入整個HTML文件的DOM,然後再去匯入外部的CSS檔案,因此,在頁面DOM載入完成到CSS匯入完成中間會有一段時間頁面上的內容是沒有樣式的,這段時間的長短跟網速,電腦速度都有關係。 解決方法簡單的出奇,只要在<head>之間加入一個<link>或者<script>元素就可以了。
6、null和undefined的區別?
undefined是一個表示"無"的原始值,轉為數值時為 當宣告的變數還未被初始化時,變數的預設值為null用來表示尚未存在的物件,常用來表示函式企圖返回一個不存在的物件。
(1)變數被聲明瞭,但沒有賦值時,就等於undefined。 (2) 呼叫函式時,應該提供的引數沒有提供,該引數等於undefined。 (3)物件沒有賦值的屬性,該屬性的值為undefined。 (4)函式沒有返回值時,預設返回undefined。
(1) 作為函式的引數,表示該函式的引數不是物件。 (2) 作為物件原型鏈的終點。
7、new操作符具體幹了什麼呢?
1、建立一個空物件,並且 this 變數引用該物件,同時還繼承了該函式的原型。
2、屬性和方法被加入到 this 引用的物件中。
3、新建立的物件由 this 所引用,並且最後隱式的返回 this 。
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
8、JSON 的瞭解?
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它是基於JavaScript的一個子集。資料格式簡單, 易於讀寫, 佔用頻寬小{'age':'12', 'name':'back'}
9、js延遲載入的方式有哪些?
defer和async、動態建立DOM方式(建立script,插入到DOM中,載入完畢後callBack)、按需非同步載入js
10、如何解決跨域問題?
jsonp、 document.domain+iframe、window.name、window.postMessage、伺服器上設定代理頁面
jsonp的原理是動態插入script標籤
11、ajax過程
(1)建立XMLHttpRequest物件,也就是建立一個非同步呼叫物件.
(2)建立一個新的HTTP請求,並指定該HTTP請求的方法、URL及驗證資訊.
(3)設定響應HTTP請求狀態變化的函式.
(4)傳送HTTP請求.
(5)獲取非同步呼叫返回的資料.
(6)使用JavaScript和DOM實現區域性重新整理.
12、請解釋一下 JavaScript 的同源策略?為什麼要有同源限制?
概念:同源策略是客戶端指令碼(尤其是Netscape Navigator2.0,其目的是防止某個文件或指令碼從多個不同源裝載。
這裡的同源策略指的是:協議,域名,埠相同,同源策略是一種安全協議。
指一段指令碼只能讀取來自同一來源的視窗和文件的屬性。
什麼是 "use strict"; ? 使用它的好處和壞處分別是什麼?
Javascript
在更嚴格的條件下執行。
設立"嚴格模式"的目的,主要有以下幾個:
- 消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為;
- 消除程式碼執行的一些不安全之處,保證程式碼執行的安全;
- 提高編譯器效率,增加執行速度;
- 為未來新版本的Javascript做好鋪墊。
注:經過測試 缺點:
現在網站的merge
後,這個串就到了檔案的中間,不僅沒有指示嚴格模式,反而在壓縮後浪費了位元組。
13、GET和POST的區別,何時使用POST?
GET:一般用於資訊獲取,使用URL傳遞引數,對所傳送資訊的數量也有限制,一般在2000個字元
POST:一般用於修改伺服器上的資源,對所傳送的資訊沒有限制。
GET方式需要使用Request.QueryString來取得變數的值,而POST方式通過Request.Form來獲取變數的值,也就是說Get是通過位址列來傳值,而Post是通過提交表單來傳值。
然而,在以下情況中,請使用 POST 請求:
無法使用快取檔案(更新伺服器上的檔案或資料庫)
向伺服器傳送大量資料(POST 沒有資料量限制)
傳送包含未知字元的使用者輸入時,POST 比 GET 更穩定也更可靠