# 前端整理
# [js]
- 对象继承的方式;优缺点[☆☆☆☆☆☆]
- 深拷贝和浅拷贝[☆☆☆☆☆]
- 事件循环机制,eventloop[☆☆☆☆☆]
- 前端图片预览几种方式[☆☆]
- ajax[☆☆☆]
- null 和 undefined[☆]
- 闭包[☆☆☆☆☆]
- 冒泡和捕获[☆☆☆]
- es6 新特性[☆☆☆]
- 面向对象简述[☆☆☆☆]
- new 对象[☆☆☆]
- 原型 原型链简述[☆☆☆]
- promise async/await 简述使用[☆☆☆☆☆]
- 改变函数部 this 指针的指向函数(bind ,apply ,call 的区别)[☆☆☆]
- 手动实现 bind、call、apply[☆☆☆☆☆☆]
- 简单数组去重多种方案[☆☆]
- 数组乱序[☆☆]
- 数组降维[☆☆☆☆]
- 箭头函数和普通函数区别[☆☆]
- 手写 promise[☆☆☆☆☆☆]
- 路由原理及实现[☆☆☆☆☆☆]
- 数组的方法和应用场景[☆☆☆☆]
- 伪数组转为数组[☆☆☆]
- 判断数据类型的方案及各自的优缺点[☆☆☆]
- 创建一个私有变量,用特定方法访问获取[☆☆☆☆]
- setTimeout setInterval requestAnimationFrame 使用[☆☆]
- FormData 基本使用以及上传文件[☆☆☆]
- 拖拽和选择 input 上传,获取文件信息[☆☆☆]
- js 错误判断和处理[☆☆☆]
- js 函数[☆☆☆]
- 作用域[☆☆☆]
- match,matchAll+replace,replaceAll 使用[☆☆☆]
- for in 和 for of[☆☆]
- 伪类 after、before 内容获取[☆☆]
- 手写 instanceof[☆☆☆]
- valueOf 和 toSting 使用优先级,加号运算[☆☆☆☆]
- this 指向问题[☆☆☆☆☆]
- 变量提升[☆☆☆]
- a==1&&a==2&&a==3[☆☆☆☆]
- async、await 使用[☆☆☆☆]
- Object 的freeze和seal使用[☆☆☆]
- ['1', '2', '3'].map(parseInt) what & why ?[☆☆☆]
- 手写防抖和节流[☆☆☆]
- set,weakSet,map,weakMap使用和区别[☆☆☆☆]
- Object.assign 和 Object.create 使用和注意[☆☆☆☆]
- 对象的遍历[☆☆☆☆☆]
# [axios]
- axios 使用[☆☆☆☆]
# [canvas]
- 图片的压缩和转换[☆☆☆]
# [web]
- web 性能优化[☆☆☆☆]
- 浏览器网页查看/F5/ctrl+F5[☆☆]
- 浏览器输入地址到显示页面[☆☆☆]
- 垃圾回收机制[☆☆]
- 跨域[☆]
- web 页面提升安全的措施[☆☆☆]
# [算法]
- 数组使用冒泡排序从大到小和优化性能[☆☆☆☆]
- 数组选择排序处理[☆☆☆☆]
- 插入排序[☆☆☆☆☆]
# [http]
- get 和 post[☆☆☆]
- HTTP,HTTP2 协议和 HTTPS 区别[☆]
- http 状态码[☆☆]
- TCP 和 UDP 区别[☆]
- 接口重复请求两次[☆]
- 前后端数据交互方式[☆☆]
# [vue]
- Vue 常用的修饰符有哪些[☆☆]
- Vue v-for 循环 key 的作用[☆☆☆]
- Vuex[☆☆☆☆]
- Vue 路由模式 hash 和 history 简述[☆☆☆]
- Vue 路由传参的两种方式 params 和 query[☆☆☆☆]
- Vue 路由守卫[☆☆]
- Vue 的 keep-alive[☆☆☆☆]
- Vue 双向绑定原理[☆☆☆]
- Vue 组件通信[☆☆☆]
- Vue3 和 Vue2 之间的异同[☆☆☆☆☆]
- Vue3 和 Vue2 指令的变化[☆☆☆]
- v-model 原理,怎么写在自定义组件上[☆☆☆☆☆]
- vue 生命周期[☆]
# [react]
- react this 绑定问题[☆☆☆]
- react 组件传值方案[☆☆☆☆]
- Vue 与 react 区别[☆☆]
- (组件的)状态(state)和属性(props)之间有何不同[☆]
- shouldComponentUpdate 作用[☆☆☆]
# [移动端]
- 移动端 300ms 处理[☆☆☆]
# [other]
- 多个项目切换不同的 node 版本[☆]
vue框架 →