前端面试题总结

这篇博客涵盖了前端面试中的常见问题,包括柯里化的实现、快速排序的时间复杂度、JSON.stringify的缺点、原型与原型链的概念、Vuex的属性和异步操作限制、HTTP状态码及302、304的意义,还有Set与Map的区别、HTTP和HTTPS协议的对比,以及闭包的解释等。通过深入解析这些知识点,帮助读者巩固前端基础知识并为面试做好准备。
摘要由CSDN通过智能技术生成

手写题:实现柯里化

预先设置一些参数

柯里化是什么:是指这样一个函数,它接收函数 A,并且能返回一个新的函数,这个新的函数能够处理函数 A 的剩余参数

function createCurry(func, args) {
   
  var argity = func.length;
  var args = args || [];

  return function () {
   
    var _args = [].slice.apply(arguments);
    args.push(..._args);

    if (args.length < argity) {
   
      return createCurry.call(this, func, args);
    }

    return func.apply(this, args);
  }
}
复制代码

前端进阶面试题详细解答

快排–时间复杂度 nlogn~ n^2 之间

题目描述:实现一个快排

实现代码如下:

function quickSort(arr) {
   
  if (arr.length < 2) {
   
    return arr;
  }
  const cur = arr[arr.length - 1];
  const left = arr.filter((v, i) => v <= cur && i !== arr.length - 1);
  const right = arr.filter((v) => v > cur);
  return [...quickSort(left), cur, ...quickSort(right)];
}
// console.log(quickSort([3, 6, 2, 4, 1]));
复制代码

代码输出结果

function SuperType(){
   
    this.property = true;
}

SuperType.prototype.getSuperValue = function(){
   
    return this.property;
};

function SubType(){
   
    this.subproperty = false;
}

SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function (){
   
    return this.subproperty;
};

var instance = new SubType();
console.log(instance.getSuperValue());
复制代码

输出结果:true

实际上,这段代码就是在实现原型链继承,SubType继承了SuperType,本质是重写了SubType的原型对象,代之以一个新类型的实例。SubType的原型被重写了,所以instance.constructor指向的是SuperType。具体如下:

页面有多张图片,HTTP是怎样的加载表现?

  • HTTP 1下,浏览器对一个域名下最大TCP连接数为6,所以会请求多次。可以用多域名部署解决。这样可以提高同时请求的数目,加快页面图片的获取速度。
  • HTTP 2下,可以一瞬间加载出来很多资源,因为,HTTP2支持多路复用,可以在一个TCP连接中发送多个HTTP请求。

说一下JSON.stringify有什么缺点?

1.如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式,而不是对象的形式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值