更多课程 选择中心


Web培训

400-996-5531

Web培训

2020年Web前端面试题汇总(四)


今天小编要跟大家分享的文章是关于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前端面试题汇总(五)

2022年Web前端面试题目汇总!

Web前端面试题汇总(建议收藏)

2022年Web前端工程师面试题目汇总(附答案详解)

2022年前端常见面试题整理汇总(附答案详解)

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

贵州省

云南省

广西省

海南省