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

1.請描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?

  cookie是網(wǎng)站為了標示用戶身份而儲存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)。
  cookie數(shù)據(jù)始終在同源的http請求中攜帶(即使不需要),記會在瀏覽器和服務(wù)器間來回傳遞。
  sessionStorage和localStorage不會自動把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。

  存儲大?。?    cookie數(shù)據(jù)大小不能超過4k。
    sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。

  有期時間:
    localStorage    存儲持久數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失除非主動刪除數(shù)據(jù);
    sessionStorage  數(shù)據(jù)在當前瀏覽器窗口關(guān)閉后自動刪除。
    cookie          設(shè)置的cookie過期時間之前一直有效,即使窗口或瀏覽器關(guān)閉

2.請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?

 一個用于頁面布局的全新CSS3功能,F(xiàn)lexbox可以把列表放在同一個方向(從上到下排列,從左到右),并讓列表能延伸到占用可用的空間。
   較為復雜的布局還可以通過嵌套一個伸縮容器(flex container)來實現(xiàn)。
   采用Flex布局的元素,稱為Flex容器(flex container),簡稱"容器"。
   它的所有子元素自動成為容器成員,稱為Flex項目(flex item),簡稱"項目"。
   常規(guī)布局是基于塊和內(nèi)聯(lián)流方向,而Flex布局是基于flex-flow流可以很方便的用來做局中,能對不同屏幕大小自適應(yīng)。
   在布局上有了比以前更加靈活的空間。

3.為什么要初始化CSS樣式?

因為瀏覽器的兼容問題,不同瀏覽器對有些標簽的默認值是不同的,如果沒對CSS初始化往往會出現(xiàn)瀏覽器之間的頁面顯示差異。

  當然,初始化樣式會對SEO有一定的影響,但魚和熊掌不可兼得,但力求影響最小的情況下初始化。

  最簡單的初始化方法: * {padding: 0; margin: 0;} (強烈不建議)

  淘寶的樣式初始化代碼:
  body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
  body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
  h1, h2, h3, h4, h5, h6{ font-size:100%; }
  address, cite, dfn, em, var { font-style:normal; }
  code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
  small{ font-size:12px; }
  ul, ol { list-style:none; }
  a { text-decoration:none; }
  a:hover { text-decoration:underline; }
  sup { vertical-align:text-top; }
  sub{ vertical-align:text-bottom; }
  legend { color:#000; }
  fieldset, img { border:0; }
  button, input, select, textarea { font-size:100%; }
  table { border-collapse:collapse; border-spacing:0; }

3.如何實現(xiàn)數(shù)組的隨機排序?

  方法一:
    var arr = [1,2,3,4,5,6,7,8,9,10];
    function randSort1(arr){
        for(var i = 0,len = arr.length;i < len; i++ ){
            var rand = parseInt(Math.random()*len);
            var temp = arr[rand];
            arr[rand] = arr[i];
            arr[i] = temp;
        }
        return arr;
    }
    console.log(randSort1(arr));
    
  方法二:
    var arr = [1,2,3,4,5,6,7,8,9,10];
    function randSort2(arr){
        var mixedArray = [];
        while(arr.length > 0){
            var randomIndex = parseInt(Math.random()*arr.length);
            mixedArray.push(arr[randomIndex]);
            arr.splice(randomIndex, 1);
        }
        return mixedArray;
    }
    console.log(randSort2(arr));

  方法三:
    var arr = [1,2,3,4,5,6,7,8,9,10];
    arr.sort(function(){
        return Math.random() - 0.5;
    })
    console.log(arr);

4.javascript 代碼中的"use strict";是什么意思 ? 使用它區(qū)別是什么?

 use strict是一種ECMAscript 5 添加的(嚴格)運行模式,這種模式使得 Javascript 在更嚴格的條件下運行,

 使JS編碼更加規(guī)范化的模式,消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為。
 默認支持的糟糕特性都會被禁用,比如不能用with,也不能在意外的情況下給全局變量賦值;
 全局變量的顯示聲明,函數(shù)必須聲明在頂層,不允許在非函數(shù)代碼塊內(nèi)聲明函數(shù),arguments.callee也不允許使用;
 消除代碼運行的一些不安全之處,保證代碼運行的安全,限制函數(shù)中的arguments修改,嚴格模式下的eval函數(shù)的行為和非嚴格模式的也不相同;

 提高編譯器效率,增加運行速度;
 為未來新版本的Javascript標準化做鋪墊。

5.http狀態(tài)碼有那些?分別代表是什么意思?

100-199 用于指定客戶端應(yīng)相應(yīng)的某些動作。 
200-299 用于表示請求成功。 
300-399 用于已經(jīng)移動的文件并且常被包含在定位頭信息中指定新的地址信息。 
400-499 用于指出客戶端的錯誤。400    1、語義有誤,當前請求無法被服務(wù)器理解。401   當前請求需要用戶驗證 403  服務(wù)器已經(jīng)理解請求,但是拒絕執(zhí)行它。
500-599 用于支持服務(wù)器錯誤。 503 – 服務(wù)不可用
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容