更多課程 選擇中心

Web培訓
美國上市教育機構

400-111-8989

Web培訓

2020年Web前端面試題匯總(四)

  • 發布:Web前端培訓
  • 來源:web前端面試
  • 時間:2020-06-16 14:08

今天小編要跟大家分享的文章是關于2020年Web前端面試題匯總。由于內容較多小編分開為大家介紹,今天來和小編一起看一看第四部分的內容,希望這些面試題能夠對正準備找Web前端相關工作的小伙伴們有所幫助。下面來和小編一起看一看吧!

2020年Web前端面試題匯總(四)

1. 說說你對作用域鏈的理解?

作用域鏈的作用是保證執行環境里

有權訪問的變量和函數是有序的,

作用域鏈的變量只能向上訪問,

變量訪問到window對象即被終止,

作用域鏈向下訪問變量是不被允許的;

作用域就是變量與函數的可訪問范圍,

即作用域控制著變量與函數的可見性

和生命周期。

2. 請說說JavaScript原型,原型鏈 ?

原型:

當我們訪問一個對象的屬性時,

每個對象都會在其內部初始化一個屬性,

就是prototype(原型);

原型鏈:

如果這個對象內部不存在這個屬性,

那么他就會去prototype里找這個屬性,

這個prototype又會有自己的prototype,

于是就這樣一直找下去,

也就是我們平時所說的原型鏈;

兩者關系:

instance.constructor.prototype = instance.__proto__

3. 請解釋什么是事件代理?

事件代理(Event Delegation),

又稱之為事件委托。

JavaScript 中常用綁定事件

的常用技巧。

“事件代理”即是把原本需要綁定

的事件委托給父元素,讓父元素

擔當事件監聽的角色。

事件代理的原理是DOM元素的事件冒泡。

使用事件代理的好處是可以提高性能,

可以大量節省內存占用,減少事件注冊,

比如在ul上代理所有li的click事件;

此外, 還可以實現動態新增子對象時無需

再次對其綁定事件。

4. new操作符具體完成了哪幾個操作?

1) 創建一個空對象, 定義this 變量引用該對象,

同時還繼承了該函數的原型;

2) 屬性和方法被加入到 this 引用的對象中;

3) 新創建的對象由 this 所引用,

并且最后隱式的返回 this

5. 說幾條寫JavaScript的基本規范?

1) 不要在同一行聲明多個變量;

2) 請使用===/!==來比較true/false或者數值;

3) 使用對象字面量替代new Object這種形式;

4) 減少使用全局函數, 全局變量;

5) switch語句必須帶有default分支;

6) if語句必須使用大括號;

7) for-in循環中的變量;

應該使用var關鍵字明確限定作用域;

從而避免作用域全局污染。

6. 如何判斷一個對象是否為數組?

function isArray(arg) {

if (typeof arg === 'object') {

return Object.prototype.toString.call(arg) === '[object Array]';

return false;

}

}

7. 冒泡排序?

思路:

每次比較相鄰的兩個數,

如果后一個比前一個小,換位置;

var arr = [2, 0, 1, 9, 8, 7, 3];

function bubbleSort(arr) {

for (var i = 0; i < arr.length - 1; i++) {

for(var j = 0; j < arr.length - 1; j++) {

if(arr[j + 1] < arr[j]) {

var temp;

temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

return arr;

}

console.log(bubbleSort(arr));

8. 快速排序?

思路: 采用二分法,取出中間數,

數組每次和中間數比較,

小的放到左邊,大的放到右邊;

var arr = [2, 0, 1, 9, 8, 7, 3];

function quickSort(arr) {

if(arr.length == 0) {

return []; // 返回空數組

}

var cIndex = Math.floor(arr.length / 2);

var c = arr.splice(cIndex, 1);

var l = [];

var r = [];

for (var i = 0; i < arr.length; i++) {

if(arr[i] < c) {

l.push(arr[i]);

} else {

r.push(arr[i]);

}

}

return quickSort(l).concat(c, quickSort(r));

}

console.log(quickSort(arr));

9. 請用至少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));

10. 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 服務器端暫時無法處理請求

(可能是過載或維護)。

以上就是小編今天為大家分享的關于2020年Web前端面試題匯總(四)的文章,希望本篇文章能夠對想要參加Web前端面試的小伙伴們有所幫助,想要了解更多Web前端相關知識記得關注達內Web培訓官網。最后祝愿小伙伴們面試成功,成為一名優秀的Web前端工程師

【免責聲明:本文圖片及文字信息均由小編轉載自網絡,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除。】

預約申請免費試聽課

填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

上一篇:2020年Web前端面試題匯總(三)
下一篇:2020年Web前端面試題匯總(五)

2020年Web前端面試題匯總(六)

2020年Web前端面試題匯總(五)

2020年Web前端面試題匯總(四)

2020年Web前端面試題匯總(三)

選擇城市和中心
黑龍江省

吉林省

河北省

貴州省

云南省

廣西省

海南省

欧美在线v中文字幕