深圳市闻迅数码科技有限公司(套题)

深圳市 2018-10-18 101
选择题 填空题 问答题 编程题 试题难度
0 0 10 0 一般
试题信息收集不易,转发请带上出处,不甚感谢!如果您对任何编程问题还有疑问,欢迎点击下方按钮向老师提问!
问答题
  • 1、html5和css3各有哪些新特性?
  • 答:

    html5的主要特性

    1.新增了布局标签 <header> <footer> <nav> <section><article><aside>等

    2.新增了音频和视频标签 <audeo> <video>

    3.提供了<canvas>画布标签,可以绘制丰富的图形,<svg>绘制矢量图

    css3主要特性

    1.新增了css3,包括圆角、弹性盒子、动画还有丰富的选择器

  • 2、请描述一下cookies,sessionStrorage和localStorage的区别?
  • 都可以用来存储前端的数据,而且都只能存储字符串信息

    cookie存储数据比较常用,也是早期的前端存储方式,cookie信息往返浏览器与服务器之间,cookie的信息会提交到服务器,服务器也可以写cookie信息,存储大小为4KB左右。

    sessionStorage是html5新增的,用于存储临时的会话数据,页面关闭就销毁

    localStoreage 也是html5新增的,用于永久存储客户端数据

    sessionStorage和localStoreage存储的数据都要比cookie大,约为5MB。

  • 3、iframe有哪些缺点?
  • ① iframe会阻塞主页面的Onload事件;

    ② 搜索引擎的检索程序无法解读这种页面,不利于SEO;

    ③ 会影响页面的并行加载。

  • 4、经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧?
  • 1.最常见的兼容性问题就是,不同浏览器的默认margin和padding值不同,一般都需要初始化样式

    *{margin:0;padding:0;}

    2.图片默认有间距,可以使用浮动图片或设置图片行内块级元素解决

    3.透明度一般浏览器使用opacity,IE浏览器使用滤镜filter来设置。

    强调:兼容性存在的问题很多,你只需要讲出三个常用的兼容性就可以了。

    css hack主要是针对IE浏览器的不同版本这是样式。大致分为三种形式的hack

    第一种:属性级Hack:比如IE6能识别下划线”_”和星号” * “,IE7能识别星号” * “,但不能识别下划线”_”,而firefox两个都不能认识。

    第二种:选择符级Hack:比如IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。

    第三种:IE条件注释Hack,通常用于判断浏览器的版本。

    例如针对所有IE:<!–[if IE]><!–您的代码–><![endif]–>

    针对IE6及以下版本:<!–[if lt IE 7]><!–您的代码–><![endif]–>

  • 5、css优化、提高性能的方法有哪些?
  • 答:

    1、在优化方面通常是精简css样式,提取公共的样式,减少代码的冗余。

    2、用ID样式来划分每个功能的样式,每个功能样式的定义都以对应功能的ID开头,这样样式比较规整,容易维护

    3、样式属性值也可以优化:如0px可以写成0,十六进制颜色 #ffffff这种相同的可以简化 #fff

    4、尽量避免float、定位这样需要高性能渲染的布局样式

    5、上线前,将代码进行压缩,减少体积,也尽量将css嵌入到页面减少请求次数。

  • 6、什么是闭包(closure),为什么要用它?
  • 答:

    闭包的主要作用就是封装,将使用的变量封装在一个封闭的作用域,这个作用域叫做“闭包域”,这样就不会污染全局变量的使用了。

    通过闭包形成一个私有的通过,通常通过return返回一个函数,来调用内容的实现。

    闭包需要特别注意的是,变量需要手动的释放资源,否则容易占用资源,导致内存泄露。

    早期通常使用即时函数来实现,在es5、es6,可以使用CommonJS、AMD、UMD的方式来实现模块化开发,一个JS文件就是一个模块也就是一个单独的作用域。

  • 7、如何解决跨域问题?
  • 提示:这种问题我还是建议根据实际经验来回答,按照以下的方式回答,会更能体现出你的表达力和理解能力

    答:跨域的方式非常多

    第一种方式使用代理方式跨域,不过这种只能用户开发环境,上线后就不行了。

    第二种方式 使用jsonp,其原理是通过<script>访问脚本是可以跨域访问的。

    第三种方式 设置请求头,指定允许跨域的站点,我们开发使用的是这种方式。后端同事在Response Header

    上添加了 Access-Control-Allow-Credentials: true 和 Access-Control-Allow-Origin: http://admin.zxwyit.com

    Access-Control-Allow-Credentials 是否允许cookie发送到服务器

    Access-Control-Allow-Origin 可访问的地址

  • 8、做的项目中,有没有用过或自己实现一些polyfill方案(兼容性处理方案)?
  • 这个是有的,我们的项目中要求月、日都是两位数,不够两位要用0补齐,在es5提供了padStart函数,很容易实现,但早期的js字符串没有这个方法,所以需要兼容处理,我们的做法是在String原型上添加padStart方法,来实现兼容性的问题。

    温馨提示:下面的代码供参考学习用,在面试上可以不用说话来


    if (!"".padStart) {

      String.prototype.padStart = function (fixWidth, startWith) {

        var str = this.toString();

        do {

          var len = str.length;

          if (len < fixWidth) {

            str = startWith + str;

          } else {

            break;

          }

        } while (true);

        return str;

      };

    };

  • 9、一个页面从输入url,到页面加载显示完成,这个过程中发生了什么?(流程说得越详细越好)
  • 答:根据域名查找服务器,下载服务器的文档内容,下载完后浏览器开始解释执行这些html代码,渲染页面,并行下载所需的资源,图片、css、js文件等。

  • 10、var data=[
      {"id":"123","name":"a","code":"0903"},
      {"id":"129","name":"b","code":"0901"},
      {"id":"126","name":"c","code":"0903"},
      {"id":"121","name":"d","code":"0907"},
      .
      .
      .
    ],
    如何对这些数据进行分组归类得到一个以code值为key的结果对象,请写出具体的js代码
  • var obj={};

    var len=data.length;

    for(var i=0;i<len;i++){

     var item=data[i];

     obj[item.code]=item;

    }

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