大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業指南 揭秘一線互聯網JS高級面試題

揭秘一線互聯網JS高級面試題

更新時間:2022-12-20 15:26:53 來源:動力節點 瀏覽1027次

作為Java程序員對于Js絕對不陌生,而真正的做到深入理解與應用,這正是面試過程中對高級程序員崗位的硬性需求,這也是目前很多面試者大多的知識薄弱點,今天小編總結的這套面試題,從起因到原理,讓你順利的度過面試難關:

js高級面試題

1.什么是函數柯里化?

答:是把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數,并且返回接受余下的參數而且返回結果的新函數的技術。

把接受多個參數的函數轉換成接受一個單一參數的函數

// 普通方法
var add = function(x, y) {
    return x + y;
}    
add(3, 4)       //7

// 柯里化 var foo = function(x) {

    return function(y) {
        return x + y
    }
}    
foo(3)(4)       // 7    

2.什么是REST,用起來有什么好處?

答:

REST是一種設計API的模式。最常用的數據格式是JSON。由于JSON能直接被JavaScript讀取,所以,以JSON格式編寫的REST風格的API具有簡單、易讀、易用的特點。通過REST模式設計的API可以把web

app 全部功能進行封裝,可以很容易的實現前后端分離,使的前端代碼易編寫,后端代碼易測試。

一直在測試REST模式的WEB SERVICE接口,客戶端的HTTP的請求方式一般分為四種:GET、POST、PUT、DELETE,這四種請求方式有什么不同呢。簡單的說,GET就是獲取資源,POST就是創建資源,PUT就是更新資源,DELETE就是刪除資源。具體來說:

PUT:PUT請求是向服務器端發送數據的,從而改變信息,該請求就像數據庫的update操作一樣,用來修改數據的內容,但是不會增加數據的種類等,也就是說無論進行多少次PUT操作,資源不會增加。

DELETE:DELETE請求顧名思義,就是用來刪除某一個資源的,該請求就像數據庫的delete操作。

GET:GET操作是安全的。所謂安全是指不管進行多少次操作,資源的狀態都不會改變,GET只是訪問和查看資源。

POST:操作不是安全的,每次請求都會創建資源,當我們多次發出POST請求后,其結果是創建出了多個資源。還有一點需要注意的就是,創建操作可以使用POST,也可以使用PUT,區別在于POST 是作用在一個集合資源之上的(/uri),而PUT操作是作用在一個具體資源之上的(/uri/xxx),再通俗點說,如果URL可以在客戶端確定,那么就使用PUT,如果是在服務端確定,那么就使用POST,比如說很多資源使用數據庫自增主鍵作為標識信息,而創建的資源的標識信息到底是什么只能由服務端提供,這個時候就必須使用POST。

下面說說GET和POST的區別:

1、GET請求的數據會附在URL之后(就是把數據放置在HTTP協議頭中),以?分割URL和傳輸數據,參數之間以&相連,如:getCitycode?lat=100.22&lon=35.33

POST把提交的數據則放置在是HTTP包的包體中。

2、在瀏覽器上,GET方式提交的數據是有限制的,例如有時候請求的URL太長,會返回錯誤;但如果是客戶端GET請求,是沒有數據的限制的。POST沒有限制,可傳較大量的數據。

3、POST的安全性要比GET的安全性高。這里所說的安全性和上面GET提到的“安全”不是同個概念。上面“安全”的含義僅僅是不作數據修改,而這里安全的含義是真正的Security的含義,比如:通過GET提交數據,用戶名和密碼將明文出現在URL上,查看瀏覽器的歷史紀錄,就可以查看到GET請求的參數,比如登錄的帳號密碼、搜索關鍵字、個人信息等。

PUT和POST方法語義中都有修改資源狀態的意思,因此都不是安全的。但是PUT方法是冪等的,POST方法不是冪等的,這么設計的理由是:

HTTP協議規定,POST方法修改資源狀態時,URL指示的是該資源的父級資源,待修改資源的ID信息在請求體中攜帶。而PUT方法修改資源狀態時,URL直接指示待修改資源。因此,同樣是創建資源,重復提交POST請求可能產生兩個不同的資源,而重復提交PUT請求只會對其URL中指定的資源起作用,也就是只會創建一個資源。

3.什么是變量提升、函數提升?

答: 變量提升:

簡單說就是在js代碼執行前引擎會先進行預編譯,預編譯期間會將變量聲明與函數聲明提升至其對應作用域的最頂端,函數內聲明的變量只會提升至該函數作用域最頂層。

當函數內部定義的一個變量與外部相同時,那么函數體內的這個變量就會被上升到最頂端。 舉例來說: console.log(a); //

undefined var a = 3;

//預編譯后的代碼結構可以看做如下運行順序 var a; // 將變量a的聲明提升至最頂端,賦值邏輯不提升。 console.log(a);

// undefined a = 3; // 代碼執行到原位置即執行原賦值邏輯

函數提升: 函數提升只會提升函數聲明式寫法,函數表達式的寫法不存在函數提升。

函數提升的優先級大于變量提升的優先級,即函數提升在變量提升之上。

4.什么是事件冒泡,它是如何工作的?如何阻止事件冒泡?

答:

在一個對象上觸發某類事件(比如單擊onclick事件),如果此對象定義了此事件的處理程序,那么此事件就會調用這個處理程序,如果沒有定義此事件處理程序或者事件返回true,那么這個事件會向這個對象的父級對象傳播,從里到外,直至它被處理(父級對象所有同類事件都將被激活),或者它到達了對象層次的最頂層,即document對象(有些瀏覽器是window)

阻止事件冒泡的幾種方法 第一種: event.stopPropagation(); 第二種: return false; 第三種:

event.preventDefault();

5.簡單說說js中的繼承?

答: 有以下六種方法

1.原型鏈繼承 JavaScript實現繼承的基本思想:通過原型將一個引用類型繼承另一個引用類型的屬性和方法。

2.借用構造函數繼承(偽造對象或經典繼承) JavaScript實現繼承的基本思想:在子類構造函數內部調用超類型構造函數。 通過使用apply()和call()方法可以在新創建的子類對象上執行構造函數。

3.組合繼承(原型+借用構造)(偽經典繼承) JavaScript實現繼承的基本思想:將原型鏈和借用構造函數的技術組合在一塊,從而發揮兩者之長的一種繼承模式。

將原型鏈和借用構造函數的技術組合到一起,從而取長補短發揮兩者長處的一種繼承模式。

4.原型式繼承 JavaScript實現繼承的基本思想:借助原型可以基于已有的對象創建新對象,同時還不必須因此創建自定義的類型。

5.寄生式繼承 JavaScript實現繼承的基本思想:創建一個僅用于封裝繼承過程的函數,該函數在內部以某種方式來增強對象,最后再像真正是它做了所有工作一樣返回對象。

寄生式繼承是原型式繼承的加強版。

6.寄生組合式繼承 JavaScript實現繼承的基本思想:通過借用函數來繼承屬性,通過原型鏈的混成形式來繼承方法。

以上就是“揭秘一線互聯網JS高級面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久性生活 | 国产一区欧美 | 九九色综合 | 日日干狠狠干 | 天天舔天天射 | 久久精品亚洲精品国产色婷 | 国产精品亚洲第一区二区三区 | 亚洲黄色a | 日韩欧美色 | 午夜性色福利视频在线视频 | 99热在线观看精品 | 中文字幕在线观看不卡 | 综合免费一区二区三区 | 成人美女隐私免费 | 日本 国产 欧美 | 99久久中文字幕伊人情人 | 国产在线小视频 | 麻豆狠色伊人亚洲综合网站 | 亚洲精品午夜级久久久久 | 操你妹影院 | 亚洲在线一区二区 | 亚洲一区二区三区在线网站 | 欧美乱操 | 2019精品国产品免费观看 | 奇米777四色影视在线看 | 欧美一区二区三区高清视频 | 91在线 | 欧美: | 波多野结衣中文丝袜字幕 | 国产粉嫩白浆在线观看 | 天天好逼365 | 久久精品国产亚洲精品2020 | 国产欧美日本亚洲精品五区 | 性xxx69xxx视频在线观看 | 手机看片福利永久国产日韩 | 老司机午夜性大片免费 | 久久香蕉国产线看观看式 | 日本欧美在线视频 | 国产成人咱精品视频免费网站 | 国产午夜免费 | 国产日产精品_国产精品毛片 | 美女又黄又免费视频 |