软通动力2(套题)

深圳市 2018-10-19 382
选择题 填空题 问答题 编程题 试题难度
0 0 13 0 比较难
试题信息收集不易,转发请带上出处,不甚感谢!如果您对任何编程问题还有疑问,欢迎点击下方按钮向老师提问!
问答题
  • 2、你们工作使用git流程讲一下。
  • 初始化仓库、克隆仓库、创建分支、暂存文件、commit文件、切换分支、推送文件、拉取文件

  • 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();
    
  • 7、方法原型链中this指向哪里?
  • this指向调用该方法的对象,如果使用apply或call改变了,就指向改变的对象。箭头函数this指向所在上下文的this。

  • 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,对于数据较大的加载,通常采用分页加载或是按需加载或是延迟加载来处理。

    这是我们比较常见的优化手段。

  • 13、谈谈项目中遇到的兼容性的坑
  • 1、firefox中的a标签点击后,周围有一圈虚线框。去掉方式是:

    a:focus{outline:none}

    2、input:password 设置required之后,输入框周围有一圈红框,解决办法是把required去掉,该用js验证

    3、ie8并不支持rgba来设置透明度,解决方案如下:

    background: #000000;

    filter: alpha(opacity=50) !important;

    opacity: .5 !important;

还能输入{{limitInput-companyComment.length}}个字符