软通动力2(套题)
| 选择题 | 填空题 | 问答题 | 编程题 | 试题难度 | 
|---|---|---|---|---|
| 0 | 0 | 13 | 0 | 比较难 | 
问答题
- 4、es6与es5构造函数的区别是什么?
- 构造函数的定义不同,es5使用this.constructor,es6定义在class里面。 - 调用方式不同,es6必须使用new,es5可以直接调用 
- 5、数组排序去重的方法?
- 这种题目看似很简单,其实有陷阱。要考虑性能最佳。 - 方法(一) - let ary=[1,2,3,3,4,4,4,5]; - var obj={}; - var newArray=[];//判断是否重复 - var len=ary.length; - for(var i=0;i<len;i++){ - var key=ary[i]; - if(!obj[key+""]){ - newArray.push(key); - obj[key+""]=true; - } - } - 思路:将数组中的元素变为对象的key,每次比较与对象的key做比较(查找key是非常快的),如果有就不加到新数组否则加上,这样就快速的做到了去重的目的。 - 方法(二) - let ary=[1,2,3,3,4,4,4,5]; - var newArray=Array.from(new Set([1,2,3,3,4,4,4,5])) - 使用es6提供的Set对象,效率是最高的。 
- 6、事件冒泡是什么?怎么阻止事件冒泡?
- 事件冒泡是指:事件触发时从根节点传播到目标节点,又由目标节点传播到根据节点的过程。 - IE浏览器 window.event.cancelBubble=true; 其它 event.stopPropagation(); 
- 8、let,const和var的区别?
- 这三个关键字都是用来定义变量的 - var比较传统,相同的变量名可以定义多个,变量的作用域可以得到提升。 - let可以说是对var更严格的限制,在同一个作用域不能定义相同的变量,必须先定义在使用,且是一个块级作用域。 - const和let作用大致相同,用来定义常量,定义的常量不能在赋值,且必须在定义的同时赋值。 
- 11、谈谈你对promise的理解。
- Promise是ES6提供的一种异步编程方案。 - 通过new Promise(function (resolve, reject) { - } - ) - resolve函数将Promise对象的状态从“未完成”变为“成功” - reject函数的作用是,将Promise对象的状态从“未完成”变为“失败” - 成功处理使用then()回调函数,失败处理使用catch()回调函数,支持链式调用。 
- 12、你们项目中性能优化如何做?
- 这个问题对于想拿10k以上的同学来讲必会 - 答:性能优化主要是围绕执行速度来做的。通常的做法是这样的 - 1.使用图片精灵,将多个图标放在一个图片上,然后通过背景图片定位来显示图标 - 2.有些图标使用使用阿里字体的,使用他们自带的云加速器下载字体文件 - 3.在首次加载的时候,将所需要的数据都放在一个接口上返回,减少请求的数量,经过测试这个效果还是挺明显的。 - 4.在编码上,我们通过会将this对象存储到临时变量,减少this查找的时间。 - 5.对于频繁使用的数据,会将数据缓存起来,减少多次请求接口。 - 6.使用压缩工具,对html、css、js文件,进行合并压缩处理,减少文件的体积。 - 7,对于数据较大的加载,通常采用分页加载或是按需加载或是延迟加载来处理。 - 这是我们比较常见的优化手段。 
 
                            