Web培训
400-996-5531
今天小编要跟大家分享的文章是关于2020年Web前端面试题汇总。由于内容较多小编分开为大家介绍,今天来和小编一起看一看第四部分的内容,希望这些面试题能够对正准备找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前端工程师。
【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved