面经练习(十一)

1.常考的算法题:旋转矩阵

leetcode48旋转矩阵
在这里插入图片描述

var rotate = function(matrix) {
    let martrixLength = matrix.length
    for(let i=0; i < martrixLength; i++) {
        for(let j=i; j < martrixLength; j++) {
            let temp = matrix[i][j]
            matrix[i][j] = matrix[j][i]
            matrix[j][i] = temp
        }
    }
    return matrix.map(item => item.reverse())
};

2.vue中 methods和computed的区别

vue中 methods和computed的区别

3.new Object 和{}的区别

本质没什么区别
只是创建速度 {}略大于new Object
{}是字面量,可以立即求值,而new Object()本质上是方法(只不过这个方法是内置的)调用,既然是方法调用,就涉及到在proto链中遍历该方法,当找到该方法后,又会生产方法调用必须的堆栈信息,方法调用结束后,还要释放该堆栈

4.一道输入输出题:

let a = 20;
var b = 30;
console.log(a, b, c, window.a, window.b, window.c, window.d);
var c = 40;
let d = 50;

输出结果
在这里插入图片描述
let a = 20;
window.a 为undefined 要注意
在这里插入图片描述

5.flex布局解决了什么问题

在不同的屏幕上实现了真正的响应式布局:不再单纯地依赖百分比和float的强拼硬凑来达到设计需求,在各个屏幕上显示效果友好,弹性的伸缩元素,简洁易维护的代码。

6.flex里面的basis

flex里面的basis

主要是basis为期望flex item的大小 当其与width共同存在时,会忽略width
但是flex-basis的值会受 min-width 和 max-width影响

7.this指向理解

按照下面的顺序判断
1.函数是否在new中调用(new绑定)?如果是的话this绑定的是新创建的对象。var bar = new foo()

2.函数是否通过call、apply(显示绑定)或者硬绑定调用?如果是的话,this绑定的是指定的对象 var bar = foo.call(obj2)

3.函数是否在某个上下文对象中调用(隐式绑定)?如果是的话,this绑定的是那个上下文对象。var bar = obj1.foo()

4.如果都不是的话,使用默认绑定。如果在严格模式下,就绑定到undefined,否则绑定到全局对象 var bar = foo()

8. input:[1,2,3,3,2,4,5] output:[1,4,5]

    let arr = [1, 2, 3, 4, 2, 3, 3, ];
    let res = arr.filter(item => arr.indexOf(item) === arr.lastIndexOf(item))
    console.log(res);

9.怎么理解HTTP协议是无状态的无连接的的协议

怎么理解HTTP协议是无状态的无连接的的协议
实际中的使用情况:

在web应用中,我们使用http协议,但是我们需要的web是有状态的,因此加入了cookie、session等机制实现有状态的的web。

web=http协议+状态机制+其他机制

为什么不改进http协议使之有状态:

最初的http协议只是用来浏览静态文件的,无状态协议已经足够,这样实现的负担也很轻(相对来说,实现有状态的代价是很高的,要维护状态,根据状态来操作。)。随着web的发展,它需要变得有状态,但是不是就要修改http协议使之有状态呢?是不需要的。因为我们经常长时间逗留在某一个网页,然后才进入到另一个网页,如果在这两个页面之间维持状态,代价是很高的。其次,历史让http无状态,但是现在对http提出了新的要求,按照软件领域的通常做法是,保留历史经验,在http协议上再加上一层实现我们的目的(“再加上一层,你可以做任何事”)。所以引入了其他机制来实现这种有状态的连接。

10.class里面的constructor和super

class里面的constructor和super

  1. super 当做函数使用:
    在 constructor 中必须调用 super 方法,因为子类没有自己的 this 对象,而是继承父类的 this 对象,然后对其进行加工,而 super 就代表了父类的构造函数。super 虽然代表了父类 A 的构造函数,但是返回的是子类 B 的实例,即 super 内部的 this 指的是 B,因此 super() 在这里相当于 ```A.prototype.constructor.call(this, props)``

  2. super当做对象使用:
    子类 B 当中的 super.c(),就是将 super 当作一个对象使用。这时,super 在普通方法之中,指向 A.prototype,所以 super.c() 就相当于 A.prototype.c()。

  3. 在这里插入图片描述

11.http协议 和 socket协议

我们都知道html5新增了 websocket

http协议 建立tcp连接后只有客服端主动发起请求后,服务端才会发起响应

而websocket 是双向的,建立tcp连接后,服务端和客户端都可以主动向对方发送消息,这个tcp连接是一个长连接通道。

websocket应用场景:
1.服务端的状态变更需要立即通知到客户端的,可以用websocket传递消息,在websocket之前,都是用客户端进行轮询请求,查看客户端是否有状态变化

2.一般用于聊天室,状态变更比较频繁的股票等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值