没啥面试经验就比较惨了。。
一面
- 自我介绍
- 为什么学习前端
- 技术栈
- js数据类型…
- 数组和string的方法…
- Undefined 和 Null的区别
- 双等号和全等的区别
- js闭包
- 闭包的缺点
- cookie session local storage
- es6新特性
- trim方法(去除前后空格)
- 正则匹配空格
- js 防抖 节流…
- ajax的两种方法的区别
- HTML标签语义化
- CSS3新特性
- 响应式布局
- 移动设备网页适配
- rem和em
- 小程序生命周期
- 小程序更新机制?
- vue生命周期..
- 常用指令v-bind if show for
- v-if 和 v-show的区别
- 前端性能优化
- 雪碧图
- 实现:居中(惨兮兮的给自己挖坑)
- node
- 挖坑(不敢造火箭2333(
JS数据类型
- String
- Number
- Boolean
- Null
- Undefined
- Array
- Object
- 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操作符
- 迭代器里的
- 二进制和八进制字面量
0o
或0O
为八进制0b
或0B
为二进制
- 对象和数组解构
- 对象超类(super)
- for in/of
- ES6中的类(class)
- const和let
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
- 基础数据类型六种:undefined,null,string,number,boolean,symbol(new in es6)
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双向绑定原理