1. 程式人生 > >撩課-Web大前端每天5道面試題-Day9

撩課-Web大前端每天5道面試題-Day9

1. 請用至少3中方式實現陣列去重?

方法一: indexOf

var arr1=[1,2,3,4,5,4,3,2,1];
  function repeat1(arr){
    for(var i=0,arr2=[];i<arr.length;i++){
      if(arr2.indexOf(arr[i])==-1){
        arr2.push(arr[i]);
      }
    }
    return arr2;
}

方法二: hash

function repeat2(arr){
    // 1. 遍歷arr中每個元素,同時宣告hash
    for
(var i=0,hash={};i<arr.length;i++){ // hash中是否包含當前元素值的建 // 如果不包含,就hash新增一個新元素, // 以當前元素值為key,value預設為1 if(hash[arr[i]]===undefined){ hash[arr[i]]=1; } } // 2. 將hash轉為索引 var i=0; var arr2=[]; for(arr2[i++] in hash); return arr2; } 方法三: 正則 function repeat3(arr){
return arr.sort() .join(",,") .replace( /(^|,,)([^,]+)(,,\2)*/g, "$1$2") .split(",,"); } console.log(repeat3(arr1));

 

2. HTTP狀態碼及其含義?

1XX:資訊狀態碼
100 Continue 繼續,一般在傳送post請求時,
已傳送了http header之後服務端將返回此資訊,
表示確認,之後傳送具體引數資訊;

2XX:成功狀態碼
200 OK 正常返回資訊 201 Created 請求成功並且伺服器建立了新的資源 202 Accepted 伺服器已接受請求,但尚未處理 3XX:重定向 301 Moved Permanently 請求的網頁已永久移動到新位置。 302 Found 臨時性重定向。 303 See Other 臨時性重定向,且總是使用 GET 請求新的 URI。 304 Not Modified 自從上次請求後,請求的網頁未修改過。 4XX:客戶端錯誤 400 Bad Request 伺服器無法理解請求的格式, 客戶端不應當嘗試再次使用相同的內容發起請求。 401 Unauthorized 請求未授權。 403 Forbidden 禁止訪問。 404 Not Found 找不到如何與 URI 相匹配的資源。 5XX: 伺服器錯誤 500 Internal Server Error 最常見的伺服器端錯誤。 503 Service Unavailable 伺服器端暫時無法處理請求 (可能是過載或維護)。

 

3. html5有哪些新特性、移除了那些元素?

HTML5 現在已經不是 SGML 的子集,
主要是關於影象,位置,儲存,多工等功能的增加:
1) 繪畫標籤canvas;
2) 用於媒介回放的 video 和 audio 元素;
3) 本地離線儲存 localStorage 長期儲存資料,
瀏覽器關閉後資料不丟失;
4) sessionStorage 的資料在瀏覽器關閉後自動刪除;
5) 語意化更好的內容元素,
比如article、footer、header、nav、section;
6) 表單控制元件,calendar、date、time、email、url、search;
7) webworker, websocket, Geolocation;

移除的元素:
1) 純表現的元素:basefont,big,center,font, s,strike,tt,...
2) 對可用性產生負面影響的元素:frame,frameset,noframes

 

4. display: none;與visibility: hidden;的區別?

相同點:它們都能讓元素不可見

不同點:
display:none;會讓元素完全從渲染樹中消失,
渲染的時候不佔據任何空間;

visibility: hidden;不會讓元素從渲染樹消失,
渲染師元素繼續佔據空間,只是內容不可見;

display: none;是非繼承屬性,
子孫節點消失由於元素從渲染樹消失造成,
通過修改子孫節點屬性無法顯示;

visibility: hidden;是繼承屬性,
子孫節點消失由於繼承了hidden,
通過設定visibility: visible;可以讓子孫節點顯示;

修改常規流中元素的display通常會造成文件重排。
修改visibility屬性只會造成本元素的重繪。

讀屏器不會讀取display: none;元素內容;
會讀取visibility: hidden;元素內容

 

5. 如何解決跨域問題?

1) jsonp
2) iframe
3) window.name 
4) window.postMessage 
5) 伺服器上設定代理頁面

 

6. XML和JSON的區別?

1) 資料體積方面
JSON相對於XML來講,
資料的體積小,傳遞的速度更快些。

2) 資料互動方面
JSON與JavaScript的互動更加方便,
更容易解析處理,更好的資料互動。

3) 資料描述方面;
JSON對資料的描述性比XML較差。

4) 傳輸速度方面:
JSON的速度要遠遠快於XML。