国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 面試題(未完待續(xù))

wpw / 2760人閱讀

摘要:下面哪些方法可以用于的異步編程回調(diào)函數(shù)事件監(jiān)聽(tīng)監(jiān)聽(tīng)訂閱對(duì)象正確答案選擇解析回調(diào)函數(shù)是異步編程的基礎(chǔ)。事件監(jiān)聽(tīng),另一種思路是采用事件驅(qū)動(dòng)模式。協(xié)議運(yùn)行在協(xié)議之上,使用端口號(hào)為。前個(gè)的判斷可直接使用嚴(yán)格相等判斷,而特殊性在于不等于其自身。

1. ECMAScrit 中數(shù)組的大小

?? 如題:

    var array = new Array();
    array[0] = 0;
    array[1] = 1;
    array[2] = 2;
    array[5] = 5;
    console.log(array.length); // 6
解析:
    
    ECMAScript 中數(shù)組的大小是可以動(dòng)態(tài)調(diào)整的,既可以隨著數(shù)據(jù)的添加自動(dòng)增長(zhǎng)以容納新增的數(shù)據(jù)。
    當(dāng)把一個(gè)值放在超出當(dāng)前數(shù)組大小的位置上時(shí),數(shù)組就會(huì)重新計(jì)算長(zhǎng)度值,
    即長(zhǎng)度值等于最后一項(xiàng)的索引加一,前面的值都將被自動(dòng)賦值為 undefined。
2. RegExp 對(duì)象的方法

?? 如題:下面選項(xiàng)中不是 RegExp 對(duì)象的方法的是 :

?? A. test B. match C. exec D. compile

??正確答案選擇 B.

解析:

    JavaScript RegExp 對(duì)象有 3 個(gè)方法:test()、 exec()、compile()。
    
    1. test() 方法用于檢測(cè)一個(gè)字符串是否匹配某個(gè)正則表達(dá)式,如果匹配,返回 true ,否則返回 false;
    2. exec() 方法用來(lái)檢測(cè)字符串中的正則表達(dá)式匹配的值,exec() 方法返回一個(gè)數(shù)組,其中存放匹配的結(jié)果。
    如果未找到匹配的值,則返回 null;
    3.compile() 方法可以在腳本執(zhí)行過(guò)程中編譯正則表達(dá)式,也可以改變已有的表達(dá)式。
3. 下面哪些方法可以用于 JavaScript 的異步編程

?? A. 回調(diào)函數(shù) B. 事件監(jiān)聽(tīng) C. 監(jiān)聽(tīng)/訂閱 D. Promise 對(duì)象

??正確答案選擇 A,B,C,D.

解析:

  回調(diào)函數(shù)是異步編程的基礎(chǔ)。
  
  事件監(jiān)聽(tīng),另一種思路是采用事件驅(qū)動(dòng)模式。任務(wù)的執(zhí)行不取決于代碼的順序,而是取決于事件是否發(fā)生。
  
  監(jiān)聽(tīng)/訂閱,上一節(jié)的“事件”可以理解為“型號(hào)”。
  
  Promise 對(duì)象,是 CommonJS 工作組提出的一種規(guī)范,目的是為異步編程提供統(tǒng)一接口
4. w3c 為 JavaScript 定制的標(biāo)準(zhǔn)事件模型,以下正確的順序和描述是

A. 事件捕獲 -> 事件冒泡

B. 事件捕獲 -> 事件處理 -> 事件冒泡

C. 事件冒泡 -> 事件處理

D. 事件冒泡 -> 事件處理 -> 事件捕獲

E. 事件處理 -> 事件捕獲 -> 事件冒泡

??正確答案選擇 B.

解析:
    
    先事件捕獲從 windows > document 往下級(jí)直到特定的事件節(jié)點(diǎn),然后進(jìn)行事件處理,再事件冒泡,
    從特定節(jié)點(diǎn)往上級(jí),這個(gè)完整的過(guò)程。
5. 下面關(guān)于 DNS 說(shuō)法正取的是

A. DNS 的作用是域名與 IP 地址的相互映射

B. DNS 協(xié)議 運(yùn)行在 UDP 協(xié)議之上

C. DNS 協(xié)議的端口號(hào)是 53

D. DNS 默認(rèn)緩存時(shí)間為 1 小時(shí)

??正確答案選擇 B,C.

解析:
    
    DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名與 IP 地址的相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使用戶更方便的使用互聯(lián)網(wǎng),
    而不用去記住能夠被機(jī)器直接讀取的 IP 數(shù)串。
    通過(guò)主機(jī)名,最終得到該主機(jī)名對(duì)應(yīng)的 IP 地址的過(guò)程叫做域名解析(或主機(jī)名解析)。
    DNS 協(xié)議運(yùn)行在 UDP 協(xié)議之上,使用端口號(hào)為 52。
6. 編寫(xiě)獲取 Url 參數(shù)值的代碼,以鍵值對(duì)返回。

??例:
url = "https://cn.bing.com/search?q=LeetCode&qs=n"

??返回結(jié)果 { q: "LeetCode", qs: "n" }

??實(shí)現(xiàn)代碼:

使用截取字符串的方式實(shí)現(xiàn)

    /**
     * 通過(guò)截取字符串獲取 url 參數(shù)
     * @param {*} requestUrl 
     */
    function queryURLParameter(requestUrl) {
        const obj = {};
        let index = 0;
        // 判斷 url 地址是否有參數(shù)
        if ((index = requestUrl.indexOf("?")) > 0) {
            // 截取 ? 后的字符串
            requestUrl = requestUrl.substr(index + 1);
            // 切分 & 符號(hào)后的參數(shù)
            requestUrl.split("&").forEach(item => {
                const param = item.split("=");
                obj[param[0]] = param[1];
            });
        }
        return obj;
    }

使用正則表達(dá)式的方式實(shí)現(xiàn)

    /**
     * 通過(guò)正則表達(dá)式來(lái)獲取 url 參數(shù)
     * @param {*} requestUrl 
     */
    function queryURLParameter(requestUrl) {
        // 編寫(xiě)獲取 url 參數(shù)的正則表達(dá)式
        let reg = /([^?&=]+)=([^?&=]+)/g;
        const obj = {};
        // 通過(guò)配置正則獲取數(shù)值
        requestUrl.replace(reg, (...arg)=>{
            obj[arg[1]] = arg[2];
        });
        return obj;
    }
7. 以下代碼的輸出結(jié)果。
    var a = 4;
    function b(x, y, a){
        console.log(a);
        arguments[2] = 10;
        console.log(a);
    }
    a = b(1, 2, 3);
    console.log(a);

A. 3 3 4

B. 3 10 4

C. 3 10 10

D. 3 10 undefined

??正確答案選擇 D.

解析:
    
    在 JavaScript 的非嚴(yán)格模式下,函數(shù)的實(shí)參集合與形參變量存在“映射”關(guān)系:無(wú)論其中誰(shuí)發(fā)生改變,另一個(gè)也會(huì)跟著改變;
    
    在 JavaScript 的嚴(yán)格模式下,arguments 和形參變量的映射關(guān)系被切斷,互相之間互不干擾。
8. 請(qǐng)分別說(shuō)出下列代碼中 a、b、c 輸出的值
    function fun(n, o) {
        console.log(o);
        return function (m) {
            return fun(m, n);
        };
    };
    
    const a = fun(0);
    a(1);
    a(2);
    a(3);
    
    const b = fun(0)(1)(2)(3);
    
    const c = fun(0)(1);
    c(2);
    c(3);

??正確答案:

    a 輸出結(jié)果: undefined,0,0,0
    
    b 輸出結(jié)果: undefined,0,1,2
    
    c 輸出結(jié)果: undefined,0,1,1
解析:
    a 的運(yùn)行中,第一次 fun(0) 所調(diào)用的是第一層函數(shù),由于參數(shù) o 并未傳值,此時(shí) o = undefined;
    a(1) 是在調(diào)用前一個(gè) fun(0) 的返回值也就是 function(m){ return fun(m,n) };并內(nèi)部調(diào)用 fun(m,n),此時(shí)內(nèi)部 fun(m,n) 中的 n 閉包了外層 fun(n,o) 中的 n,由于第一次調(diào)用 n = 0;即 m = 1,n = 0;
    同理 a(2) 中調(diào)用的是前一個(gè) a(1) 的返回值,即 fun(m,n),所以還是閉包了第一次 n 的值,即 m = 2, n = 0;
    以此類推
    
    b 的運(yùn)行中,第一次 fun(0) 所調(diào)用的是第一層函數(shù),由于參數(shù) o 并未傳值,此時(shí) o = undefined;
    b(1) 是在調(diào)用前一個(gè) fun(0) 的返回值也就是 function(m){ return fun(m,n) };并內(nèi)部調(diào)用 fun(m,n),此時(shí)內(nèi)部 fun(m,n) 中的 n 閉包了外層 fun(n,o) 中的 n,由于第一次調(diào)用 n = 0;即 m = 1,n = 0;
    b(1)(2) 此時(shí)調(diào)用的并不是上一層返回的值,而是直接調(diào)用的上一層返回值的內(nèi)部函數(shù),即 fun(m,n);由于 fun(m,n) 中的 n 閉包了外層 fun(n,o) 中的 n,即 b(1),因此 n = 1;
    以此類推
    
    c 的運(yùn)行中,c(0)(1) 與 b(1)(2) 的推斷相似,只不過(guò)此時(shí)的 fun(m,n) 中的 n 閉包了外層 fun(n,o) 中的 n,即 c(0),因此 n = 0;
    c(2) 與 a(1) 的推斷相似,只不過(guò) 只不過(guò)此時(shí)的 fun(m,n) 中的 n 閉包了外層 fun(n,o) 中的 n,即 c(1),因此 n = 1;
    以此類推
9. 以下哪一項(xiàng)不屬于瀏覽器 Response Headers 字段

A. Referer

B. Connection

C. Content-Type

D. Server

??正確答案選擇 A.

解析:
    
    常見(jiàn)的請(qǐng)求頭部和響應(yīng)頭部
    
    請(qǐng)求(客戶端 -> 服務(wù)端[request])
    
        GET(請(qǐng)求的方式) /newcoder/hello.html(請(qǐng)求的目標(biāo)資源) HTTP/1.1(請(qǐng)求采用的協(xié)議和版本號(hào)) 
        Accept: */*(客戶端能接收的資源類型) 
        Accept-Language: en-us(客戶端接收的語(yǔ)言類型) 
        Connection: Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)
        Host: localhost:8080(連接的目標(biāo)主機(jī)和端口號(hào))
        Referer: http://localhost/links.asp(告訴服務(wù)器我來(lái)自于哪里)
        User-Agent: Mozilla/4.0(客戶端版本號(hào)的名字)
        Accept-Encoding: gzip, deflate(客戶端能接收的壓縮數(shù)據(jù)的類型) 
        If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(緩存時(shí)間)  
        Cookie(客戶端暫存服務(wù)端的信息) 
        Date: Tue, 11 Jul 2000 18:23:51 GMT(客戶端請(qǐng)求服務(wù)端的時(shí)間)
        
    響應(yīng)(服務(wù)端->客戶端[response])
    
        HTTP/1.1(響應(yīng)采用的協(xié)議和版本號(hào)) 200(狀態(tài)碼) OK(描述信息)
        Location: http://www.baidu.com(服務(wù)端需要客戶端訪問(wèn)的頁(yè)面路徑)
        Server:apache tomcat(服務(wù)端的Web服務(wù)端名)
        Content-Encoding: gzip(服務(wù)端能夠發(fā)送壓縮編碼類型) Content-Length: 80(服務(wù)端發(fā)送的壓縮數(shù)據(jù)的長(zhǎng)度) 
        Content-Language: zh-cn(服務(wù)端發(fā)送的語(yǔ)言類型) 
        Content-Type: text/html; charset=GB2312(服務(wù)端發(fā)送的類型及采用的編碼方式)
        Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端對(duì)該資源最后修改的時(shí)間)
        Refresh: 1;url=http://www.it315.org(服務(wù)端要求客戶端1秒鐘后,刷新,然后訪問(wèn)指定的頁(yè)面路徑)
        Content-Disposition: attachment; filename=aaa.zip(服務(wù)端要求客戶端以下載文件的方式打開(kāi)該文件)
        Transfer-Encoding: chunked(分塊傳遞數(shù)據(jù)到客戶端)
        Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服務(wù)端發(fā)送到客戶端的暫存數(shù)據(jù))
        Expires: -1//3種(服務(wù)端禁止客戶端緩存頁(yè)面數(shù)據(jù))
        Cache-Control: no-cache(服務(wù)端禁止客戶端緩存頁(yè)面數(shù)據(jù))  
        Pragma: no-cache(服務(wù)端禁止客戶端緩存頁(yè)面數(shù)據(jù)) 
        Connection: close(1.0)/(1.1)Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)  
        Date: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端響應(yīng)客戶端的時(shí)間)
        
    在服務(wù)器響應(yīng)客戶端的時(shí)候,帶上Access-Control-Allow-Origin頭信息,解決跨域的一種方法。
        
10. 對(duì)任意給定的 32 位整數(shù),轉(zhuǎn)換二進(jìn)制并統(tǒng)計(jì) 1 出現(xiàn)的個(gè)數(shù)

??實(shí)現(xiàn)代碼:

    num.toString(2).match(new RegExp("1","g")).length;
11. 根據(jù)包名,在指定空間中創(chuàng)建對(duì)象

例:

    輸入:namespace({a: {test: 1, b: 2}}, "a.b.c.d")
    
    輸出:{a: {test: 1, b: {c: {d: {}}}}}

??實(shí)現(xiàn)代碼:

    function namespace(oNamespace, sPackage) {
        var keys = sPackage.split(".");
        var tempSpace = oNamespace;
        keys.forEach(function(key){
            if(!(tempSpace[key] instanceof Object)){
                tempSpace[key] = {};
            }
            tempSpace = tempSpace[key];
        });
        return oNamespace;
    }
12. 為 Array 對(duì)象添加一個(gè)去除重復(fù)項(xiàng)的方法

例:

    輸入:[false, true, undefined, null, NaN, 0, 1, {}, {}, "a", "a", NaN]
    
    輸出:[false, true, undefined, null, NaN, 0, 1, {}, {}, "a"]
解析:
    
    在 indexOf 判斷中,NaN 和空對(duì)象 {} 均返回 -1,因此要判斷 NaN 實(shí)現(xiàn)對(duì)其去重。
    
    由于空對(duì)象 {} 所指向的內(nèi)存地址不一致,因此可以不對(duì)其考慮。
    
    在 JavaScript 中存在 6 個(gè)假值:flase, 0, null, "", undefined, NaN。
    
    前 5 個(gè)的判斷可直接使用嚴(yán)格相等 “===” 判斷,而 NaN 特殊性在于不等于其自身。

??ES5 實(shí)現(xiàn)代碼:

    Array.prototype.uniq = function(){
        return this.filter(function(item,index){
            return item != item ? this.flag = this.flag === undefined : this.indexOf(item) === index;
        },this);
    }

??ES6 實(shí)現(xiàn)代碼:

    Array.prototype.uniq = function(){
        [...new Set(this)]
    }

??文章原文地址 https://github.com/SilenceHVK/blog/issues/18,歡迎 Star、Watch

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/108063.html

相關(guān)文章

  • 【半月刊 4】前端高頻面試及答案匯總

    摘要:引言半月刊第四期來(lái)啦,這段時(shí)間新增了道高頻面試題,今天就把最近半月匯總的面試題和部分答案發(fā)給大家,幫助大家查漏補(bǔ)缺,歡迎加群互相學(xué)習(xí)。更多更全的面試題和答案匯總在下面的項(xiàng)目中,點(diǎn)擊查看。引言 半月刊第四期來(lái)啦,這段時(shí)間 Daily-Interview-Question 新增了 14 道高頻面試題,今天就把最近半月匯總的面試題和部分答案發(fā)給大家,幫助大家查漏補(bǔ)缺,歡迎 加群 互相學(xué)習(xí)。 更多更...

    hankkin 評(píng)論0 收藏0
  • 大廠高級(jí)前端面試答案

    摘要:但出于隱私方面的原因,對(duì)象不再允許腳本訪問(wèn)已經(jīng)訪問(wèn)過(guò)的實(shí)際。唯一保持使用的功能只有和方法。將當(dāng)前和加入到中,并用新的和替換當(dāng)前,不會(huì)造成頁(yè)面刷新。 阿里 使用過(guò)的koa2中間件https://www.jianshu.com/p/c1e... koa-body原理https://blog.csdn.net/sinat_1... 有沒(méi)有涉及到Clusterhttp://nodejs.cn/...

    oysun 評(píng)論0 收藏0
  • 前端面試之你可能會(huì)遇到的編程(1)

    摘要:詳見(jiàn)我的另一篇文章前端面試問(wèn)題之面向?qū)ο箢悓?shí)現(xiàn)代碼父類我的名字是我今年歲原型繼承原型鏈相關(guān)問(wèn)題請(qǐng)看我的另一篇文章前端面試之原型鏈問(wèn)題實(shí)現(xiàn)效果構(gòu)造函數(shù)繼承實(shí)現(xiàn)效果組合繼承實(shí)現(xiàn)效果組合繼承優(yōu)化實(shí)現(xiàn)效果未完待續(xù) Github - program-learning-lists 知乎 個(gè)人博客 Github 開(kāi)源(open source)這個(gè)詞,指的是事物規(guī)劃為可以公開(kāi)訪問(wèn)的,因此人們可以修改...

    AbnerMing 評(píng)論0 收藏0
  • 談?wù)?em>JavaScript的詞法環(huán)境和閉包(一)

    摘要:換句話說(shuō),定義在閉包中的函數(shù)可以記憶它被創(chuàng)建時(shí)候的環(huán)境。詞法環(huán)境的概念定義摘自百科。一個(gè)詞法環(huán)境由一個(gè)環(huán)境記錄項(xiàng)和可能為空的外部詞法環(huán)境引用構(gòu)成。中使用詞法環(huán)境管理靜態(tài)作用域。 一個(gè)資深的同事在我出發(fā)去面試前告誡我,問(wèn)JS知識(shí)點(diǎn)的時(shí)候千萬(wàn)別主動(dòng)提閉包,它就是一個(gè)坑啊!坑啊!啊! 閉包確實(shí)是js的難點(diǎn)和重點(diǎn),其實(shí)也沒(méi)那么可怕,關(guān)鍵是機(jī)制的理解,可以和函數(shù)一起單獨(dú)拿出來(lái)說(shuō)說(shuō),其實(shí)關(guān)于閉包的...

    AlphaWatch 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<