面试遇到的题

222 阅读4分钟

1.get和post的区别

  • 表单的method属性设置post时发送的是post请求,其余都是get请求
  • get请求通过url地址发送请求参数,参数可以直接在地址栏中显示,安全性较差;post是通过请求体发送请求参数,参数不能直接显示,相对安全
  • get请求URL地址有长度限制,根据浏览器的不同,限制字节长度不同,post请求没有长度限制

2.http和https的区别

  • https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 
  • http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

3.说说vue-router懒加载的作用

  • vue-router懒加载也叫延迟加载,即在需要的时候进行加载,随用随载。

  • 解决了进入首页不用一次加载过多资源造成用时过长的问题

    const lazy = () => import('@/components/lazy')

4.说说es6的新特性

  • 新增了let和const
  • 模板字符串
  • 箭头函数
  • 函数的参数默认值
  • Spread/Rest操作符号 ...
  • 数组和对象解构
  • for..in 和for...of
  • 二进制和八进制字面量
  • 新增 类

5.谈谈js的防抖和节流

  • 防抖:当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时。也就是说当一个用户一直触发这个函数,且每次触发函数的间隔小于既定时间,那么防抖的情况下只会执行一次。
  • 节流:当持续触发事件时,保证在一定时间内只调用一次事件处理函数,意思就是说,假设一个用户一直触发这个函数,且每次触发小于既定值,函数节流会每隔这个时间调用一次

用一句话总结防抖和节流的区别:防抖是将多次执行变为最后一次执行,节流是将多次执行变为每隔一段时间执行

6.谈谈css3的新特性

7.谈谈vue通信有哪些

  1. 父组件到子组件Props,子组件到父组件事件回调,$emit, @handleEvent
  2. 非父子使用bus (同级组件)
  3. v-modle
  4. vuex

8.vuex是什么,它的原理是什么?

  • vuex是一个集中式的状态管理工具。
  • 创建一个Store对象,对状态进行集中管理。通过commit:mutations来修改状态。dispatch:action 来组合业务逻辑,实现异步调用。

9.常见的兼容性问题?

  1. 不同浏览器的标签默认的margin和padding不一样。

    *{margin:0;padding:0;}

  2. IE6双边距bug:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大。hack:display:inline;将其转化为行内属性。

  3. 渐进识别的方式,从总体中逐渐排除局部。首先,巧妙的使用“9”这一标记,将IE浏览器从所有情况中分离出来。接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。

    {
    background-color:#f1ee18;/*所有识别*/
    .background-color:#00deff\9; /*IE6、7、8识别*/
    +background-color:#a200ff;/*IE6、7识别*/
    _background-color:#1e0bd1;/*IE6识别*/
    }
    
  4. 设置较小高度标签(一般小于10px),在IE6,IE7中高度超出自己设置高度。hack:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。

  5. IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性。

  6. Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。

  7. 超链接访问过后hover样式就不出现了,被点击访问过的超链接样式不再具有hover和active了。解决方法是改变CSS属性的排列顺序:L-V-H-A ( love hate ): a:link {} a:visited {} a:hover {} a:active {}

10.ES6中新增的Set、Map两种数据结构怎么理解

  • Map以[键,值]的方式储存元素,Set以[键,键]的方式储存元素。

  • Set是ES6中新增的数据结构,类似于数组,但是成员的值都是唯一的,没有重复的值,一般称之为集合。常用方法有add,delete,clear,has。

  • Map类型是键值对的有序列表,而键和值都可以是任意类型。Map有个size属性返回成员总数,常用方法有set,get,has,delete,clear。