前端近期面试-2020 持续跟新中

  1. var let const 区别
  • var是es5语法,let,const是es6语法。var有变量提升
  • var,let是用来声明变量,可修改。const是用来声明常量,不可修改
  • let,const 有块级作用域(会形成暂时性死区),var没有
  1. typeof能判断哪些类型
  • undefined,string,boolean,number,symbol (所有的值类型)
  • object ([], {}, null)
  • function
  1. 强制类型转换和隐士类型转化
  • pareInt,parseFloat,toString
  • ==,逻辑运算,if,+字符串拼接
  1. split() 和 join()的区别
    split(): 将字符串转化为数组
    join() : 将数组转化为字符串
  2. pop,push,shift,unshift 分别是什么
    分析: 功能是什么,返回值是什么,是否对原数组造成影响
    pop删除数组的最后一项,返回删除的元素
    shift删除数组的第一项,返回删除的元素
    push在数组的最后一项增加一个元素,返回数组的长度
    unshift在数组的第一项增加一个元素,返回数组的长度
    都对数组造成影
    纯函数:(不该变原数组,返回一个数组)
    concat,map,filter
  3. slice 和splice的区别
    slice 剪切 纯函数
    splice 剪接 非纯函数
  4. [10,20,30].map(parseInt) 10 NAN NAN 拆解
  5. ajax中get和post的区别
  • get一般用于查询 post用于用户提交数据
  • get参数拼接在url上,post放在请求体中(数据可以很大)
  • post有利于防范xsrf攻击
  1. call 和 apply bind 的区别是什么
    改变this执行
    call :第一个参数是this,后面是零散的数据
    apply:第一个参数是this,后面是一个数组,或者一个结合
    bind:第一个参数是this,但是返回一个函数,需要重新调用
  2. 事件委托(代理)是什么
    就是把一个元素响应事件的函数委托到另一个元素,利用冒泡的原理,把事件加到父级上,触发执行效果
  3. 闭包是什么,有什么特性,负面影响
    两个函数存在嵌套关系,内部函数可以访问外部函数的参数
    函数作为参数被传入 函数作为返回值
    自由变量在函数定义的地方查找
    变量会常驻内存,得不到释放。不要乱用
  4. 如何阻止事件冒泡和默认行为
  • e.stopPropagation()
  • e.preventDefault()
  1. 增删改查dom节点方法
  • creatElement,appendChild,removeChild,getelementById
  1. 如何减少dom操作
  • dom查找是非常耗性能
  • 缓存dom查询结果
  • 多次dom操作,合并到一次插入
  • creatDocumentFragment
  1. jsonp的原理,为何不是真正的ajax
    jsonp 是通过script标签实现的
    ajax是用过xmlHttpRequest
    img ,script =>
    jsonp

  2. load,ready区别

  3. == ===
    类型转换 ,严格相等

  4. 函数声明和函数表达式的区别

  5. this的场景题

  6. new Object() {}, Object.creat()区别
    Object.creat() 创建一个空对象,把空对象的原型执行你传入的对象

  7. 手写trim,兼容

  8. 获取最大值

  9. js实现继承
    class
    prototype

  10. 什么是json
    json是一种数据格式,本质就是一个字符串
    window.JSON是全局对象。JSON.stringifry JSON.parse

  11. 如何捕获js异常
    try catch window.onerror

  12. 获取当前页面的url参数
    location.serach

  13. 手写深拷贝 object.assign不是深拷贝(只能一层)

  14. requestAnimateFrame

  15. 性能优化:
    原则:多使用内存,缓存,减少计算,网络请求
    方向:文件获取更快,代码执行更快

  16. http在哪一层协议(作为一个实习生,这个问题90%会问到)
    (1):osi这个模型,把网络通信的工作分为7层,分别是
    物理层
    数据链路层
    网络层(ip)
    传输层(tcp:传输控制协议TCP,udp:用户数据报协议)
    会话层,
    表示层
    应用层:文件传输协议(HTTP,FTP,NFS,SMTP)
    User Agent:使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
    28:你了解的ssr是什么,用ssr有什么好处
    29:从地址栏输入url,发生了什么

2.21 电话面试

  1. 简述冒泡排序
  2. 简述数组去重
  3. es6,es7新增了那些
  4. 箭头函数的this和普通函数的this
  5. 怎么样形成闭包,怎么解决闭包变量污染的情况
  6. typeof
  7. 改变this指向的方法
  8. vue组件通信
    解答:
    13: 简述冒泡排序
    (1) 首先判断是否是数组,数组是否为空
    instanceof Object.prototype.toString.call() length
    (2) 双层循环:
    外层循环控制趟数
    内层循环控制次数
      function bubble(arr) {
          //   先判断是否是数组或者是空数组
          if (arr instanceof Array && arr.length > 1) {
              for (let i = 0; i < arr.length - 1; i++) {
                  for (let j = 0; j < arr.length - 1 - i; j++) {
                      let temp = []
                      if (arr[j] > arr[j + 1]) {
                          temp = arr[j];
                          arr[j] = arr[j + 1]
                          arr[j + 1] = temp
                      }
                  }
              }
              return arr
          }
      }
      let arr = [1, 7, 4, 6, 3]
      console.log(bubble(arr));

14 :数组去重
1:先获取到数组的当前项let item = arr[i],然后去除当前项(split(i+1))
2:然后用当前项,和后面的每一项做比较,indexOf(有匹配到的返回-1)
3:将没有重复的项,添加到新数组里面

let arr = [1, 1, 8, 2]
let newArr = []
for (let i = 0; i < arr.length; i++) {
    let item = arr[i]
    arg = arr.slice(i + 1)
    if (arg.indexOf(item) > -1) {
    // 未找到和当前匹配的。会返回-1,现在>-1说明,有和当前匹配的,有重复的
    } else {
        newArr.push(item)
    }
}
console.log(newArr);

15: es6新增了那些:点击进入

16:箭头函数和普通函数

普通函数的this:在运行时基于函数执行环境绑定的

箭头函数:箭头函数没有this,箭头函数的this继承自所处上下问的this,call和apply无法改变this的执行
箭头函数中没有arguments类数组,只能基于…arg获取传递参数的集合数组
箭头函数不能被new执行,因为箭头函数没有this叶没有prototype

由于this只是在当前函数内部使用,而且js函数可以多层嵌套,使得我们无法得到最开始的this,这时我们可以用一个变量存储起来/es6提供的箭头函数

2.27 电话面试

  • 离职原因
  • 简单的自我介绍
  • 由于我简历一开始就写的vue,所以问的vue比较多
  • vue的双向数据绑定里面的defineProperty里面的get,set是用什么样的设计模式实现的
  • vue组件里面data,你觉得为什么要有data这个东西呢 数据的监听
  • route router 使用上有什么本质区别
  • route 现在的前端技术都会加# 怎么去掉#
  • hash函数
  • keep-alive 使用过吗, 会用在什么场景
  • vue的核心是什么
  • 你又是怎么理解数据和组件
  • 有了框架会带来一些便利,但是也会带来一些缺陷:
  1. 加载耗时,打包,传统的seo,历史页面,不适合开发大型项目
  • h5,vue存数据,你有看过数据存在哪里?是存在磁盘吗?
  • 怎么搞兼容性问题?从哪些方面解决这些事情
  • 浏览器渲染的性能优化
  • 给你一个数组 ,把其中重复的数据 思想

3.13 面试
图片自适应有哪些方式
h5的存储
音频视屏
flex的属性
怎么获取视屏播放的事件
3.24 知乎面试
说说路由守卫
生命周期函数
MVVM和MVC的区别
数组排序
v-show v-if的区别
url输入发生了什么
jq的选择器
3.14: 滴滴
1:说说http协议
2: 点击事件

已找到工作,暂不更新了~~~

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值