前端面试题整理

1.click在ios上有300ms延迟,请讲讲原因是什么,以及应该如何解决?

因为在移动端用户存在双击场景,当用户第一次click时,被浏览器捕获到,如果一时间后与未进
行下一次click,会作为单击事件处理,那第一次click和第二次click之间就存在一段时间的间隔
,也就是300ms

2.请你讲一下对于JS中模块的理解,Commonjs、 AMD和CMD分别有什么特点?

CommonJS的主要实践者就是nodejs,一般对模块输出用module.exports去输出,用require去引入模
块,
CommonJS一般采用同步加载

AMD时RequireJS在推广的过程中对模块定义的规范化产出,RequireJS在主文件里是将所有的文件
同时加载。

CMD是SeaJS在推广过程中对模块定义的规范化产出,SeaJS强调一个文件一个模块。‘

AMD推崇依赖前置:在定义模块的时候要先声明其依赖的模块,所以JS可以及其轻巧地知道某个模
块依赖的模块是哪一个,因此可以立即加载那个模块,也就是提前执行 。

CMD推崇依赖就近:它只要依赖的模块在附近就可以了 ,因此它要等到所有的模块变为字符串,解
析一遍之后才知道他们之间的依赖关系,CMD加载完某个模块后没有立即执行而是等到遇到require
语句的时再执行,也就是延迟执行 。

他们两者的目的都是为了 JavaScript 的模块化开发,但其不同导致各自的优点是:

AMD用户体验好,因为模块提前执行了;
CMD性能好,因为只有用户需要的时候才执行。

3请你简要介绍一下JS中==、===以及Object.is()的区别是什么

:等同,比较运算符,两边值类型不同的时候,先进行类型转换,再比较;
=:恒等,严格比较运算符,不做类型转换,类型不同就是不等;
Object.is()是ES6新增的用来比较两个值是否严格相等的方法,与
=的行为基本一致。
先说
=,这个比较简单,只需要利用下面的规则来判断两个值是否恒等就行了:

如果类型不同,就不相等
如果两个都是数值,并且是同一个值,那么相等;
值得注意的是,如果两个值中至少一个是NaN,那么不相等(判断一个值是否是NaN,可以用isNaN

()或Object.is()来判断)。
如果两个都是字符串,每个位置的字符都一样,那么相等;否则不相等。
如果两个值都是同样的Boolean值,那么相等。
如果两个值都引用同一个对象或函数,那么相等,即两个对象的物理地址也必须保持一致;否则不

相等。
如果两个值都是null,或者都是undefined,那么相等。
再说Object.is(),其行为与===基本一致,不过有两处不同:

举个栗子☺:

+0 === -0 //true
NaN === NaN // false

Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
+0不等于-0。
NaN等于自身。

4.你知道400和401、403状态码是什么吗?

400 bad request,请求报文存在语法错误
401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
403 forbidden,表示对请求资源的访问被服务器拒绝
404 not found,表示在服务器上没有找到请求的资源

某科软一面:

简单介绍一下最近的项目(最近的项目说一个就ok)
vuex:五个属性、工作流程、适用情况、存取值、区别等
vnode优缺点
diff算法
keep-alive组件
new关键字做了什么
宏任务&微任务
typeof判断数组ok吗 用什么判断
css怎么绘制0.5px粗细的线 关键transform:scale()
都是老生常谈。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值