前端面经之快手

1、跨域及解决方案

我就说了jsonp和cors

2、原型相关知识

function Foo() {
    Foo.a = function() {
        console.log(1)
    }
    this.a = function() {
        console.log(2)
    }
}
Foo.prototype.a = function() {
    console.log(3)
}
Foo.a = function() {
    console.log(4)
}
Foo.a();
let obj = new Foo(); 
obj.a();
Foo.a();

// 4,2,1

3、浏览器缓存

就协商缓存和强缓存,巴拉巴拉的,详细内容可见http缓存策略之强缓存与协商缓存

4、cookie是什么?有什么用?过期时间设置?什么时候带cookie?怎么限制cookie的访问权限?

5、setTimeout()准吗?

不准,除了js单线程会影响外,听说还有一个4ms的最小时延设置(不太了解)

6、事件循环

7、算法题:将数组转换为树结构

//效果
const nodes = [
  { id: 3, name: '节点C', parentId: 1 },
  { id: 6, name: '节点F', parentId: 3 },
  { id: 0, name: 'root', parentId: null },
  { id: 1, name: '节点A', parentId: 0 },
  { id: 8, name: '节点H', parentId: 4 },
  { id: 4, name: '节点D', parentId: 1 },
  { id: 2, name: '节点B', parentId: 0 },
  { id: 5, name: '节点E', parentId: 2 },
  { id: 7, name: '节点G', parentId: 2 },
  { id: 9, name: '节点I', parentId: 5 }
]

转换后:
{"id":0,"name":"root","parentId":null,"children":[{"id":1,"name":"节点A","parentId":0,"children":[{"id":3,"name":"节点C","parentId":1,"children":[{"id":6,"name":"节点F","parentId":3}]},{"id":4,"name":"节点D","parentId":1,"children":[{"id":8,"name":"节点H","parentId":4}]}]},{"id":2,"name":"节点B","parentId":0,"children":[{"id":5,"name":"节点E","parentId":2,"children":[{"id":9,"name":"节点I","parentId":5}]},{"id":7,"name":"节点G","parentId":2}]}]}

8、less怎么定义变量?怎么定义一个公共样式?怎么导入一个写好的less?

这个不是很熟悉。。。

9、项目难点

10、改变this指向的方法

bind,call,apply

面试官补充了数组的一些方法都可以传入this,又问我第几个参数传this,我说第二个

11、css动画的几种方式

animation,transform,transition,详见css动画入门总结

12、栈和队列

我说栈是先进后出,队列是先进先出,就过了

总结:

考察的还比较去全面,但是不是特别的深入。面试官说我基础不错,就是没用过react,然后没过。。。哎,我真是意难平阿。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值