面试经验

一、块级元素和行内元素

1.行内元素 不识别 margin-top/bottom(无效) padding-top/bottom(虽然增大了行内元素的面积,但是并没有与相邻元素拉大距离,padding部分覆盖下面)

2.行内元素 设置float属性后 将变成块级元素(可设置宽高);

二、安卓机型flex兼容

1.display:box/inline-box; (old)

2.display: flexbox/inline-flexbox;(old)

3.display: flex/inline-flex;

三、强制类型转换

Number()

true=1,false=0; 任何空转为0;把纯数字或‘’的字符串转为纯数字,否则返回NaN;

parseInt()

整数转换 排除空字符串,从第一位开始转换,如果第一位不是字符串返回NaN;如果是则转换到不是数字的那一位为止;

parseFloat()

四、a++和++a区别

a++ 先赋值再++  alert(a++) 1

++a 先++在赋值  alert(++a) 2

五、移动端一像素边框

.border-image-1px {
    border- 1px 0px;
    -webkit-border-image: url("border.png") 2 0 stretch;
    border-image: url("border.png") 2 0 stretch;
}


.border-1px {
    position: relative;
}
.border-1px:after {
    position: absolute;
    content: '';
    top: -50%;
    bottom: -50%;
    left: -50%;
    right: -50%;
    -webkit-transform: scale(0.5);
    transform: scale(0.5);
    border-top: 1px solid #666;
    border-bottom: 1px solid #666;
}

 六、defer和async

<script src="../CGI-bin/delscript.js" defer></script>

<script src="../CGI-bin/delscript.js" async="async"></script>

defer并行加载js文件,会按照页面上script标签的顺序执行(延迟)

async并行加载js文件,下载完成立即执行,不会按照页面上script标签的顺序执行(异步)

 七、闭包

使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念

1.函数嵌套函数

2.函数内部可以引用外部的参数和变量

3.参数和变量不会被垃圾回收机制回收

八、缓存清除

1.meta方法

<META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> 
<META HTTP-EQUIV="expires" CONTENT="0">

2.ajax

  $.ajax({
     url:'www.haorooms.com',
     dataType:'json',
     data:{},
     cache:false, /*清除*/
     ifModified :true ,

     success:function(response){
         //操作
     }
     async:false
  });

 3.时间戳  和 随机数

链接:http://www.haorooms.com/post/js_llq_hc

九、ES6的了解

新增模板字符串(为JavaScript提供了简单的字符串插值功能)、箭头函数(操作符左边为输入的参数,而右边则是进行的操作以及返回的值Inputs=>outputs。)、for-of(用来遍历数据—例如数组中的值。)arguments对象可被不定参数和默认参数完美代替。ES6promise对象纳入规范,提供了原生的Promise对象。增加了letconst命令,用来声明变量。增加了块级作用域。let命令实际上就增加了块级作用域。ES6规定,var命令和function命令声明的全局变量,属于全局对象的属性;let命令、const命令、class命令声明的全局变量,不属于全局对象的属性。。还有就是引入module模块的概念

十、js继承方式及其优缺点

原型链继承、借用构造函数(类式继承)、组合式继承

十一、闭包

使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念

特性:

1.函数嵌套函数

2.函数内部可以引用外部的参数和变量

3.参数和变量不会被垃圾回收机制回收

十二、position:absolutefloat属性的异同

  • 共同点:对内联元素设置floatabsolute属性,可以让元素脱离文档流,并且可以设置其宽高。

  • 不同点:float仍会占据位置,absolute会覆盖文档流中的其他元素。

十三、css3新增伪类

    p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。

    p:last-of-type  选择属于其父元素的最后 <p> 元素的每个 <p> 元素。

    p:only-of-type  选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。

    p:only-child    选择属于其父元素的唯一子元素的每个 <p> 元素。

    p:nth-child(2)  选择属于其父元素的第二个子元素的每个 <p> 元素。

    :enabled  :disabled 控制表单控件的禁用状态。

    :checked        单选框或复选框被选中。

十四、CSS3新特性

CSS3实现圆角(border-radius),阴影(box-shadow),

对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)

transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜

增加了更多的CSS选择器  多背景 rgba

在CSS3中唯一引入的伪元素是::selection.

媒体查询,多栏布局

border-image

CSS3中新增了一种盒模型计算方式:box-sizing。盒模型默认的值是content-box, 新增的值是padding-boxborder-box,几种盒模型计算元素宽高的区别如下:

content-box(默认)

布局所占宽度Width:

Width = width + padding-left + padding-right + border-left + border-right
  • 1
  • 2

布局所占高度Height:

Height = height + padding-top + padding-bottom + border-top + border-bottom
  • 1
  • 2

padding-box

布局所占宽度Width:

Width = width(包含padding-left + padding-right) + border-top + border-bottom
  • 1
  • 2

布局所占高度Height:

Height = height(包含padding-top + padding-bottom) + border-top + border-bottom

  • 1
  • 2
  • 3

border-box

布局所占宽度Width:

Width = width(包含padding-left + padding-right + border-left + border-right)
  • 1

布局所占高度Height:

Height = height(包含padding-top + padding-bottom + border-top + border-bottom)

十五、数组indexof方法

$.inArray( value, array [, fromIndex ] )

十六、说说你对作用域链的理解

作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。

创建ajax过程

(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.

(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.

(3)设置响应HTTP请求状态变化的函数.

(4)发送HTTP请求.

(5)获取异步调用返回的数据.

(6)使用JavaScript和DOM实现局部刷新.

十七、对前端模块化的认识

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。

CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。

AMD 是提前执行,CMD 是延迟执行。

AMD推荐的风格通过返回一个对象做为模块对象,CommonJS的风格通过对module.exports或exports的属性赋值来达到暴露模块对象的目的。

原文地址:https://www.cnblogs.com/liujian9527/p/6811291.html