我如果出面试题

181 阅读2分钟

什么是跨域(低)

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,【即使域名相同,不同的端口间也算跨域】,

怎么解决跨域问题(中)

服务器设置【jsonp】的请求格式,或者为跨域请求地址设置【白名单】 加问jsonp原理:jsonp的原理是将请求返回值,以参数形式写入js脚本的方法中,访问者拿到脚本并执行,在【回调】函数中拿到请求返回值

当一个用户跨域访问请求失败时,限制来源于哪?(高)

服务器,【浏览器】,如果回答有浏览器,可以让他详细说说解除浏览器限制跨域的方法 【在服务器返回的响应头中添加了允许跨域信息,浏览器就不会再拦截这个跨域请求了】

js的单线程指的就是浏览器单线程对吗?错在哪(低)

答:不对,浏览器是多线程的,而js是单线程的,【加分:浏览器还有还有渲染线程(gui线程),异步线程,定时器线程】

既然js执行线程是单线程的,那么js是怎么处理复图片加载等耗时操作的(中)

答:采用事件循环(事件轮询,event loop都是一个意思),答回调函数的让他再细想想,回调函数只是表面原因

知道macrotask和microtask的区别吗?说说你知道的方法中哪个属于macrotask哪个属于microtask(高)

microtask:setTimeout,setInterval macrotask:Promise

Promise是es6的新特性,你还知道es6的什么新特性(低)

这个太多了,随便听听看看他能说几个就完事了

import也是es6的新特性,能说说它的作用吗(中)

答:加载模块,如果回答中有【编译前】或【编译前加载模块】可加分 然后加问,那么es6之前加载模块的方法有什么,commandjs或requirejs,他们都是编译【时】加载

说说css3中transition和animation的区别(低)

Transitions只能通过指定属性的开始值与结束值,然后在这两者之间进行平滑过渡的方式来实现动画的效果,因此不能实现较复杂的动画效果;而Animations功能可以通过定义多个关键帧以及每个关键帧中元素的属性值来实现复杂的动画效果。

一些css动画,比如改变元素的height,width等,性能会比较差,原因是什么(中)

回答中有 重排(回流,reflow,relayout),重绘(repaint)的就算正确回答