記一次筆試題

前言

  今天參加了一場印象深入的筆試,想把它記錄下來,作一個知識補充做用。

題目1:Response Headers中有哪些字段?

html

響應(服務端-->客戶端)Response
HTTP/1.1(協議版本)200(狀態碼)OK(描述信息)
Location:http://www.baidu.com(服務端須要客戶端訪問的頁面路徑)
Server:apache tomcat(服務端的Web服務端名)
Content-Encoding:gzip(服務端可以發送壓縮編碼類型)
Content-Length:80(服務端發送的壓縮編碼類型)
Content-Language:zh-cn(服務端發送的語言類型)
Content-Type:text/html;charset=GB2312(服務端發送的類型及採用的編碼方式)
Last-Modified:Tue,11 Jul 2000 18:23:51 GMT(服務端對該資源最後修改的時間)
Refresh:1;url=http://www.it315.org(服務端要求客戶端1秒鐘後,刷新,而後訪問指定的頁面路徑)
Content-Disposition:attachment;filename=aaa.zip(服務端要求客戶端如下載文件的方式打開該文件)
Transfer-Encoding:chunked(分塊傳遞數據到客戶端)
Set-Cookie:SS=Q0=5Lb_nQ;path=/search(服務端發送到客戶端的暫存數據)
Expires:-1(服務端禁止客戶端緩存頁面數據)
Cache-Control:no-cache(服務端禁止客戶端緩存頁面數據)
Pragma:no-cache(服務端禁止客戶端緩存頁面數據)
Connection:close(1.0)/(1.1)Keep-Alive(維護客戶端和服務端的鏈接關係)

Date:Tue,11 Jul 2000 18:23:51 GMT(服務端響應客戶端的時間)

請求(服務端-->客戶端)Request
GET(請求方式)/newcoder/hello.html(請求的目標資源)HTTP/1.1(請求採用的協議和版本號)
Accept:*/ *(客戶端能接收的資源類型)
Accept-Language:en-us(客戶端接收的語言類型)
Connection:Keep-Alive(維護客戶端和服務端的鏈接關係)
Host:localhost:8080(鏈接目標主機和端口號)
Referer:http://localhost/links.asp(告訴服務器我來自哪裏)
User-Agent:Mozilla/4.0(客戶端版本號的名字)
Accept-Encoding:gzip,deflate(客戶端能接收的壓縮數據的類型)
If-Modifie-Since:Tue,11 Jul 2000 18:23:51 GMT(緩存時間)
Cookie(客戶端暫存服務端的信息)

Date:Tue,11 Jul 2000 18:23:51 GMT(客戶端請求服務端的時間)

題目2: 下列代碼輸出的是什麼?

console.log((function(a){}).length);//1
        console.log((function(a = 5){}).length);//0
        console.log((function(a,b = 5,c){}).length);//1
        console.log((function(a,b = 5,c = 5){}).length);//1
        console.log((function(a,b,c = 5){}).length);//2

解答:該題考察的是es6中函數長度的問題,具體的解析能夠參考下圖(圖片來自阮一峯大神的es6入門):es6

圖片描述

題目3:使用js將url中的信息轉換成json對象

function splitUrl(url){
            var arr = url.split('?')[1].split('&');
            var json = {};
            var key,value = null;
            for(var i=0;i<arr.length;i++){
                key = arr[i].split('=')[0];
                value = arr[i].split('=')[1];
                json[`"${key}"`] = value;
            }
            return json;
        }
        
        var result = splitUrl('www.baidu.com?a=1&b=2&c=5');
        console.log(result);

題目4:下列哪個語句會產生運行錯誤?

  1. var _變量 = NaN;
  2. var obj = [];
  3. var obj = //;
  4. var obj = {};

答:這道題只在1和3中糾結,1中的變量名實際上是合法的,糾結的地方在於可否直接賦值爲NaN,其實這個是能夠的,使用typeof NaN,會發現返回的是number,因此也是能夠賦值給該變量的;而3的特殊之處在於//實際上是js中的註釋語句,因此直接將其賦值給變量會報錯。apache

題目5:如下兩個變量a和b,請問a+b的結果是NaN有哪些?

  1. var a=undefined;b=NaN;
  2. var a='123';b=NaN;
  3. var a=undefined,b=NaN;
  4. var a=NaN,b='undefined';

答:
圖片描述
圖片描述
圖片描述
圖片描述json

題目6:請寫出如下代碼的輸出結果

var a = 0,b = 0;
        function add(a){
            add = function(b){
                console.log(++a + b++);
            }
            console.log(a++);
        }

        add(1);//1
        add(2);//5

分析:首先,第一次運行的是外面的函數,a=1進去以後,執行a++,因爲a++是先運算再賦值,因此輸出的是1;第二次運行的是內部函數,此時a的值爲2,傳進去b的值爲2,++a == 3,b++ == 2,因此最後輸出的是5。緩存

題目7:請寫出下面代碼執行的結果

var c = {
            name:'Json',
            sayName:function(){
                console.log(this.name);
            }
        };
        var name = 'Aaron';
        function sayName(){
            var sss = c.sayName;
            sss();
            c.sayName();
            (c.sayName)();
            (b=c.sayName)();
        }
        
        sayName();

結果:
clipboard.png
分析:
第一個是sss(),實際上this是指向全局變量的,也就是說輸出的應該是全局的name,即Aaron;第二個this是指向c的,那麼輸出的就是c中的name屬性值;第三個this指向c,和第二個是同樣的;第四個this指向全局變量。tomcat

相關文章
相關標籤/搜索