first

没啥面试经验就比较惨了。。

一面

  1. 自我介绍
  2. 为什么学习前端
  3. 技术栈
  4. js数据类型…
  5. 数组和string的方法…
  6. Undefined 和 Null的区别
  7. 双等号和全等的区别
  8. js闭包
  9. 闭包的缺点
  10. cookie session local storage
  11. es6新特性
  12. trim方法(去除前后空格)
  13. 正则匹配空格
  14. js 防抖 节流…
  15. ajax的两种方法的区别
  16. HTML标签语义化
  17. CSS3新特性
  18. 响应式布局
  19. 移动设备网页适配
  20. rem和em
  21. 小程序生命周期
  22. 小程序更新机制?
  23. vue生命周期..
  24. 常用指令v-bind if show for
  25. v-if 和 v-show的区别
  26. 前端性能优化
  27. 雪碧图
  28. 实现:居中(惨兮兮的给自己挖坑)
  29. node
  30. 挖坑(不敢造火箭2333(
  • JS数据类型

    1. String
    2. Number
    3. Boolean
    4. Null
    5. Undefined
    6. Array
    7. Object
    8. Function
  • string和array的属性和方法

    • 属性

      • length
      • constructor
      • prototype
    • string方法

      • charAt()
      • concat()
      • indexOf()
      • lastindexOf()
      • match()
      • replace()
      • search()
      • split()
      • substr()
      • substring()
      • toLowerCase()
      • toString()
      • toUpperCase()
      • trim()
      • valueOf()
    • array方法

      • concat()
      • filter()
      • find()
      • findIndex()
      • forEach()
      • includes()
      • indexOf()
      • isArray()
      • join()
      • lastIndexOf()
      • map()
      • pop()
      • push()
      • reduce()
      • reserve()
      • shift()
      • slice()
      • some()
      • sort()
      • toString()
    • 性能优化

      • 减少请求数量
        • 合并文件
        • 合并图片(雪碧图 base64
        • 减少重定向
        • 使用缓存
      • 减少资源大小
        • 压缩
        • webp
        • gzip
      • 优化网络连接
        • cdn
        • DNS预解析
        • 持久链接(keep-alive)
        • 管道化连接
      • 优化资源加载
        • 资源加载位置(CSS JS引入的位置)
        • 资源加载时机(异步加载,模块化加载,资源预/懒加载)
      • 减少重绘回流
        • 样式设置(CSS选择器 表达式 尺寸高度)
        • 渲染层(减少重绘范围,硬件加速)
        • DOM优化
      • 更好的API
        • 选择器的使用
        • 图片可视区域懒加载IntersectionObserver
        • requestAnimationFrame
      • webpack优化
        • 动态导入和按需加载
        • 剔除无用代码
        • 长缓存优化
        • 公用代码内联
  • ES6新特性

    • const和let
      • 局部变量和静态变量
    • 模板字符串
    • 箭头函数
    • 函数的参数默认值
    • Spread / Rest 操作符
      • 迭代器里的...是Spread操作符
      • 函数传参的...是Rest操作符
    • 二进制和八进制字面量
      • 0o0O为八进制
      • 0b0B为二进制
    • 对象和数组解构
    • 对象超类(super)
    • for in/of
    • ES6中的类(class)
  • cookie session local Storage

二面

  • vue虚拟dom
  • 双向数据绑定
  • 小程序 登录
  • vue好用的特性
  • js里的基础数据类型和引用对象分别在内存中的什么位置?
  • 内存里的 堆和栈
  • 排序算法
  • vue diff算法
  • 内存的深拷贝和浅拷贝
  • node
  • 工作室的团队(开始闲聊 项目分工

开始补课

  • js里的基础数据类型和引用对象分别在内存中的什么位置?

    • 基础数据类型存在栈内存里,按值访问;
    • 对象类型的变量标识符和指向堆内存中该对象的指针保存在栈内存,对象的内容保存在堆内存中,按引用访问
    • 拓展
      • 基础数据类型六种:undefined,null,string,number,boolean,symbol(new in es6)
        • 基础数据类型的值不可变
        • 比较是按值比较
          • ===== 的区别:== 只比较值,如果类型不同会进行隐式转换,=== 进行值和类型的比较
      • 引用数据类型:object,array,date,regexp,function
        • 引用类型的值是可变的
        • 引用类型的比较是引用的比较
        • 引用类型的值是保存在堆内存中的对象
        • js不能直接操作对象的内存空间(堆内存)
      • 检测类型的方法
        • typeof
        • instanceof
  • vue的virtual DOM

    • 虚拟 DOM,映射真实 DOM 的一个 JavaScript 对象,改变每个元素的状态,会先在 virtual DOM 上进行改变,而不是改变真正的 DOM。当有变化发生时,一个新的 virtual DOM 对象会被创建并计算新旧 virtual DOM 之间的差别,之后会将改变的部分渲染应用在真实的 DOM 上。
    • 与 react 不同的是 vue 在每次渲染的时候只计算了新旧 virtual DOM 之间差异的部分,不需要渲染整个组件树,而 react 则会将全部子组件重新渲染。
  • diff算法

    • 目的是为了将虚拟 DOM 进行比较的一个算法,更新节点的时候,遍历两个虚拟 DOM 中不同的部分,之后将其不同的部分进行渲染,生成新的 DOM。
  • vue 双向绑定原理

    • vue 通过数据劫持加发布订阅相结合方式实现双向绑定
    • 数据劫持主要通过 Object.defineProperty 来实现
    • emmmm具体看最后的链接 这里现在看不懂 因为没写过
  • 直接看博客吧 关于内存并不了解。。。

reference

JavaScript 深入了解基本类型和引用类型的值
Vue与React两个框架的区别和优势对比
解析vue2.0的diff算法
Vue双向绑定原理