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,然后没过。。。哎,我真是意难平阿。