JS基础/ES6
- 闭包,优缺点
function makeFunc() {
var name = "Mozilla"
function displayName() {
alert(name) }
return displayName }
var myFunc = makeFunc()
myFunc() // Mozilla
闭包是指有权访问另一个函数作用域中变量的函数
优点:
- 保护函数的私有变量不受外部的干扰,形成不销毁的栈内存。
- 把一些函数内的值保存下来,闭包可以实现方法和属性的私有化
缺点:
- 不正当使用会造成内存泄漏
- 迭代器(Iterator) juejin.cn/post/684490…
- promise es6.ruanyifeng.com/?search=pro…
- async await es6.ruanyifeng.com/?search=asy…
- promise.all如果有一个返回错误会怎么样
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
const p = Promise.all([p1, p2, p3]);
上面代码中,Promise.all()方法接受一个数组作为参数,p1、p2、p3都是 Promise 实例,如果不是,就会先调用下面讲到的Promise.resolve方法,将参数转为 Promise 实例,再进一步处理。另外,Promise.all()方法的参数可以不是数组,但必须具有 Iterator 接口,且返回的每个成员都是 Promise 实例。
p的状态由p1、p2、p3决定,分成两种情况。
(1)只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。
(2)只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。
- async/await优缺点 es6.ruanyifeng.com/?search=pro…
- 事件循环机制,宏任务,微任务 juejin.cn/post/689407…
- for in developer.mozilla.org/zh-CN/docs/…
- for of developer.mozilla.org/zh-CN/docs/…
- js数据类型,分别存储在堆和栈的位置 juejin.cn/post/696204…
- js弱语言类型,隐式转换 juejin.cn/post/694288…
- Number转化null undefined
Number(undefined);// 输出NaN
Number(null);// 输出0
- js判断数据类型的方法,优缺点 juejin.cn/post/699284…
- == 和 === 区别
- 深拷贝,浅拷贝 juejin.cn/post/684490…
- JSON深拷贝的缺点
得到的正则就不再是正则(变为空对象),得到的函数就不再是函数(变为null)了
- 原型链 juejin.cn/post/700741…
- this指向 juejin.cn/search?quer…
- es6新特性 es6.ruanyifeng.com/#docs/modul…
- Object.prototype.hasOwnProperty.call()用处 developer.mozilla.org/zh-CN/docs/…
- foreach和map区别 juejin.cn/post/685811…
- new关键字的过程
1.创建空对象
2.this指向这个对象
3.对象赋值
4.返回实例对象
- Object.defineProperty和proxy juejin.cn/post/706939…
- reduce函数使用 juejin.cn/post/701109…
- 怎么终止循环,foreach可以return吗? juejin.cn/post/707032…
- 数组排序方法,sort()返回什么 juejin.cn/post/697136…
- foreach遇到async await怎么办?怎么解决? juejin.cn/post/704334…
- call apply bind 区别 juejin.cn/post/697067…
- JS作用域链 juejin.cn/post/702782…
- Set和Map数据结构 juejin.cn/post/684490…
- docunment.ready和window.onload的作用以及区别 juejin.cn/post/684490…
- ajax,axios juejin.cn/post/684490…
- get post区别 juejin.cn/post/699293…
- 普通函数,箭头函数,构造函数区别 juejin.cn/post/684490…
- 函数柯里化 juejin.cn/post/684490…
- 常用的数组方法,对象方法 developer.mozilla.org/zh-CN/docs/… developer.mozilla.org/zh-CN/docs/…
- 事件捕获,事件冒泡,阻止冒泡,阻止默认行为 juejin.cn/post/684490…
阻止冒泡:event.stopPropagation()
return false
默认行为:event.preventDefault()
return false
- 事件委托原理,优势 juejin.cn/post/696512…
- 节流/防抖 juejin.cn/post/684490…
- for循环使用var和let打印异步结果 juejin.cn/post/706271…
CSS/HTML
- css盒模型,BFC juejin.cn/post/704192…
- flex属性 www.ruanyifeng.com/blog/2015/0…
- flex 1含义 juejin.cn/post/696717…
- 页面重绘和回流 juejin.cn/post/684490…
- css写个三角形 juejin.cn/post/697251…
- 两边定宽中间自适应布局 juejin.cn/post/697130…
- px、rpx、em、rem 、vw/vh、百分比 juejin.cn/post/699309…
- css动画属性 juejin.cn/post/684490…
- img title和alt
alt 跟我们键盘上的alt一个意思'切换',顾名思义图片不能正常加载时候替换的提示语
title 属性是鼠标划上去显示的内容
- html的DOCTYPE声明 juejin.cn/post/703491…
- css继承,选择器优先级 juejin.cn/post/695544…
- 标签语义化 juejin.cn/post/702144…
- 队列和栈的理解
React
- class组件和hooks区别 juejin.cn/post/684490…
- class生命周期 juejin.cn/post/691411…
- useEffect模拟生命周期阶段 juejin.cn/post/686547…
- react mvc juejin.cn/post/697216…
- 单向数据流,双向数据流 juejin.cn/post/699982…
- react合成事件 juejin.cn/post/689791…
- react组件传值 juejin.cn/post/698467…
- useEffect参数如果是函数怎么办?
每次都认为是新的参数,触发刷新
- useMemo,useCallBack参数,区别,使用场景 juejin.cn/post/701027…
useMemo不传参数,每次更新都会执行,缓存值
useCallBack参数必传,缓存方法
- this.setState和直接.key修改的区别
直接.key不会触发优化
- hooks不能写在哪里? react.docschina.org/docs/hooks-…
- 父组件为什么导致子组件渲染 segmentfault.com/q/101000004…
- react virtual DOM,diff算法,key的作用 juejin.cn/post/699992…
- fiber原理 juejin.cn/post/708160…
- react优化 juejin.cn/post/700250…
- useEffect和useLayoutEffect区别,是否阻塞代码执行 juejin.cn/post/692168…
- hooks链表 juejin.cn/post/692131…
React Router
- router传参方式,获取参数 juejin.cn/post/692055…
- router原理以及模式 juejin.cn/post/703182…
- 路由拦截 www.jianshu.com/p/5573b93fb…
- 路由鉴权 juejin.cn/post/684490…
Redux
- redux原理 juejin.cn/post/693456…
- redux使用过程
Webpack
- webpack核心 juejin.cn/post/702851…
- webpack优化 juejin.cn/post/695129…
- npm run xxx之后发生了什么 juejin.cn/post/707892…
- loader和plugin区别 juejin.cn/post/687336…
笔试
- 节流/防抖
- 数组转对象
- 手动实现call
- 多维数组转一维数组
- 数组去重
- promise保持同时请求多个接口
- 递归求1-100和
- 数组冒泡排序O(n)
- 递归多维数组
- 对象数组去重
- n>m 求n-m区间随机数
- 解析url参数
- 一维对象数组转树形结构
- JS模拟promise.all
- JS手写promise
- promise和async await结合循环执行顺序
- 回文数判断
- 函数柯里化
业务场景
- 项目中做的亮点和成就感的事情
- 前端权限划分
- 封装了哪些组件,方法
- 模块化开发理解
- 图片懒加载,加载大文件,例如视频,怎么优化体验 juejin.cn/post/694474… juejin.cn/post/690377… juejin.cn/post/700849…
- 页面前进刷新页面,后退缓存页面
- 大文件切片上传,断点续传
- websocket实现消息通知,断点重连怎么做的
- 移动端适配方案
- 接口请求大文件优化
- 大数据计算优化
- CSRF的理解
- 滚动条加载判断
- JS实现虚拟列表
- 前端大量数据处理如何优化
其他
- mvc,mvvm两种模式的理解
- base64格式
- 输入一个url发生了什么
- react vue 区别
- react和vue单向数据流和双向绑定
- TCP与UDP区别
- http1和http2区别
- 跨域
- 浏览器缓存
- 虚拟DOM与真实DOM
- 微前端
- cookie和缓存区别
- token如何生成,前端保存token方案