目录

面经记录

vue 相关

  • mixin 相关场景以及利弊,拥有多个属性时的执行顺序,
  • v-model 原理,在下拉选择器组件中是怎么实现的
  • filter 怎么实现,使用场景
  • 插槽的实现原理,如何传值
  • v-forkey 的作用,延伸到 diff 实现,不同位置的比较
  • vnode 概念
  • v-if 控制 dom 显隐时, vdom 是如何处理的
  • watch 监听是的 deep: true 实现原理
  • nextTick 原理
  • computedwatch 的区别
  • Vue.useVue.install
  • Vue 中手动 extend
  • data 中的属性是定义在 MVVM 中的哪个环节

css 相关

  • 回流和重绘的概念,绝对定位是否会导致回流
  • flex: 1 的分别代表什么属性以及作用
  • 伪元素和伪类的区别,分别有哪些
  • visibility: hiddenopacity 是否触发点击事件

js 相关

  • let/const/var 区别,用 const 声明对象时,是否可以改变对象的属性值,为什么
  • 深度优先搜索和广度优先搜索
  • 如何证明 js 对象里存在循环引用
  • 类型判断的方法,typeof 对象的类属性
  • 实例对象是否是 Functioninstanceof Function 结果
  • promise 执行顺序,事件循环
  • es5 模拟 class 的实现
  • localStorage 如何实现过期时间
  • 手机号正则

工程化相关

  • 介绍 webpack 常用的配置以及功能
  • webpack 多页面有多个入口时如何配置
  • source-map 分类,如何配置和调试
  • webpack 中怎么隔离 css
  • 性能优化方案,代码/打包/资源加载方面
  • 热更新原理

概念类问题

  • http/https 区别
  • 介绍 options 请求的意义
  • MVVM/MVC 的区别,如何实现一个 MVVM
  • 简述 XSSCSRF 的概念,并列举几种安全防范策略

编程题

  • 编写一个函数,大小写字母取反
const fn = (string) => {
  let ans = ''
  for (let v of string) {
    ans += v.toLowerCase() === v ? v.toUpperCase() : v.toLowerCase()
  }
  return ans
}
  • 编写一个函数,输入 int 型,返回整数逆序后的字符串
  • 二维数组扁平化,返回一个去重且是升序的一维数组

场景题

  • 数据多、加载慢的解决方式
    • 缓存
    • 懒加载
  • 生产环境发布后,发现客户那边并没有更新到最新版,从哪些方面排查?
    • 时间戳保持最新
    • 强缓存/协商缓存
    • 禁止缓存
  • axios 需要对所有接口进行增加请求头之类的字段时,怎么处理?
  • 一个按钮含有异步请求,如何防止多次点击重复提交?
    • 防抖及其实现,引申节流,描述区别及使用场景
    • 增加禁用属性,loading/disabled
  • a 页面跳转到 b 页面然后重定向到 c 页面,可能会在 b 页面做登录逻辑或者记录数据(相当于一个中转页), 但是用户可能直接在地址栏里输入 c 页面,怎么防止这个情况?
    • 路由守卫
    • 导航拦截如何实现
  • 同一个浏览器,不同标签之间数据传递的方法,简单列举

发散性问题

  • 职业规划
  • 怎么制定技术方案,从哪几个方面考虑