面试学习5

css3动画

transition

  • transition: 执行变化的属性 变化持续的时间 变化的样式
  • 并不是所有的属性都支持
  • 需要事件触发,没办法自动发生
    1
    transition: all 2s ease-in-out

animation

  • 可以设置任意多的关键帧,所以动画比较丰富
    1
    2
    3
    4
    5
    @keyframes 动画名 {
    0% { top: 0; left: 0px}
    50% { top: 30px; left: 20px; }
    100% { top: 0; left: 30px;}
    }

transform

  • 顾名思义就是变形的意思,这里涉及的变形包括rotate旋转、skew扭曲、scale缩放、translate移动、matrix矩阵变形
  • 常用的有:translate(x,y)进行2d转换、scale(x,y)进行2d缩放、rotate(角度数)进行2d旋转

类数组转数组

  • Array.prototype.slice.call(类数组),因为数组slice方法如果不带任何参数,就是默认将数组从头到尾都浅拷贝一份
  • Array.from()
  • 对于有遍历器接口的类数组,可以直接使用扩展运算符

关于this

  • this指向:指向最后一个调用它的对象
  • 如何改变this指向
    • new
    • 箭头函数
    • call/apply/bind
    • _this = this

函数调用有4种方式:直接调用、作为对象的方法、构造函数、call/apply

dns解析过程

  • 浏览器缓存
  • 操作系统缓存
  • 本地Host文件
  • 路由器缓存
  • 运营商DNS服务
  • 根域名服务器
  • 顶级域名服务器
  • 主域名服务器
  • 保存结果至缓存

TCP三次握手主要目的是要数据的发送和接收同步,通俗地讲就是

  • A:要连接你
  • B:好的收到,是现在连接吗
  • A:现在连接吧

TCP四次挥手

  • A:我要走了
  • B:好的收到,要等一下,我这边还有几句话没说完
  • B:我说完了,可以走了
  • A:那拜拜了

TCP和UDP的区别

  • 有连接和无连接
  • 保证数据的正确性和可能发生丢包
  • 保证数据顺序,后者不保证

==运算符会首先将操作对象转化为相同类型,具体表现为

  • 只要其中有一个是NaN,就返回false
  • 如果两个都是null或者undefined,返回true
  • 如果两个都是基本数据类型,且类型不同,则将两者都将转化数值类型再比较
  • 如果是引用类型值,则将其转化为基本类型再比较

bfc三个特性

  • 防止外边距折叠(margin塌陷)
  • 包含浮动元素
  • 防止内容被浮动元素覆盖

如何获取url信息

  • URL很多信息都存储在window.location这个属性中,打印即可
  • 经常会用到如何获取URL的参数及参数值,具体如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function GetRequest() {
    var url = window.location.search; //获取url中"?"符后的字串
    var theRequest = new Object()
    if (url.indexOf("?") != -1) {
    var str = url.substr(1)
    strs = str.split("&")
    for(var i = 0; i < strs.length; i ++) {
    theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1])
    }
    }
    return theRequest
    }

es5和es6关于类的区别

  • 前者的toString方法是可枚举的,后者不可枚举