本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com
前言
2020 年最后一个月了,熬夜多天整理出 17 张思维导图,对前端面试复习知识点进行了最全的总结,分享给大家。每个知识点都尽量找到最好的文章来解释,通过思维导图的形式进行展示。
给大家准备了高清的思维导图和食用更加方便的 PDF 文档,全部聚合思维导图一张,分类思维导图 17 张,涉及前端开发的方方面面面,JS 基础,工程化,性能优化,安全,框架等。如果您是准备面试,或者享扩展前端知识,都可以通过这个目录进行学习。
废话不多说,下面分类展开来说,收藏起来吧
完整思维导图实在太大,可关注公众号「前端复习课」回复 “思维导图” 获取高清大图,总共 18 张。
由于微信公众号限制外链都不可以跳转,可以加我微信「cYang2030」领取 PDF 版本
1-Javascript
1-Javascript
内置类型
介绍一下 JS 内置类型有哪些
JavaScript 数据类型和数据结构
介绍一下 typeof 区分类型的原理
JavaScript 中 typeof 原理探究?
介绍一下类型转换
深入理解 JS 的类型、值、类型转换
作用域
说说你对 javascript 的作用域的理解
JavaScript 深入之词法作用域和动态作用域
什么是作用域链
JavaScript 深入之作用域链
解释下 let 和 const 的块级作用域
ES6 块级作用域
执行上下文
说说你对执行上下文的理解
JavaScript 深入之执行上下文栈
深入理解 JavaScript 执行上下文和执行栈
闭包
对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
JavaScript 闭包的底层运行机制
对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
发现 JavaScript 中闭包的强大威力
闭包问题及优化
闭包问题及解决
为什么闭包不会被垃圾回收清除
this 指向
如何确定 this 指向
彻底搞懂 js this 指向问题
改变 this 指向的方式都有哪些
介绍箭头函数的 this
什么时候你不能使用箭头函数?
原型 / 继承
说一下对原型链的理解,画一个经典的原型链图示
进阶必读:深入理解 JavaScript 原型
最详尽的 JS 原型与原型链终极详解,没有「可能是」。(一)
最详尽的 JS 原型与原型链终极详解,没有「可能是」。(二)
最详尽的 JS 原型与原型链终极详解,没有「可能是」。(三)
举例说明 js 如何实现继承
做完这 48 道题彻底弄懂 JS 继承
ES5/ES6 的继承除了写法以外还有什么区别
ES5/ES6 的继承除了写法以外还有什么区别?
事件循环
你对事件循环有了解吗?说说看!
Event Loop 的规范和实现
彻底吃透 JavaScript 执行机制
前端中的事件循环 eventloop 机制
微任务和宏任务有什么区别
浏览器和 Node 事件循环的区别
浏览器与 Node 的事件循环 (Event Loop) 有何区别
异步编程
异步解决方案有哪些
还在找什么,JavaScript 的异步编程解决方案全在这里了
Promise
实现一个 Promise
实现 Promise.all,race,allSeleted 等
async/await
2-DOM
2-DOM
事件
事件冒泡、捕获等理解
你真的理解 事件冒泡 和 事件捕获 吗?
介绍下浏览器事件委托
事件委托
实现一个自定义事件
创建自定义事件
dom 操作
- 原生 JS DOM 操作方法汇总
位置与大小
JavaScript 获取 DOM 元素位置和尺寸大小
JavaScript 获取 DOM 元素位置和尺寸大小
3-CSS
3-CSS
BFC
BFC 是什么?触发 BFC 的条件是什么?有哪些应用场景?
前端面试之 BFC
怎么回答当面试官问你什么是 BFC
1px
如何解决移动端 Retina 屏 1px 像素问题
移动端 1px 解决方案
position
position 有哪些属性
position: sticky 用过没,有啥效果
杀了个回马枪,还是说说 position:sticky 吧
flex
flex:1 的完整写法是?分别是什么意思?
Flex 布局教程:语法篇
重绘回流
介绍下重绘和回流(Repaint & Reflow),以及如何进行优化
介绍下重绘和回流(Repaint & Reflow),以及如何进行优化
说说你对 GPU 的理解,举例说明哪些元素能触发 GPU 硬件加速?
Web 性能优化 - CSS3 硬件加速 (GPU 加速)
常见布局
居中
面试官:你能实现多少种水平垂直居中的布局(定宽高和不定宽高)
单列布局
两列自适应布局
三栏布局
粘连布局
几种常见的 CSS 布局
动画实现
css 如何实现动画
CSS3 动画实践
CSS 动画的性能优化
使用纯 CSS 代码实现动画的暂停与播放
纯 CSS 方式实现 CSS 动画的暂停与播放!
使用 css3 动画代替 js 的动画有什么好处?
使用 CSS3 动画代替 JS 动画的好处
盒模型
- CSS 盒模型详解(图文教程)
4 - 浏览器
4 - 浏览器
跨域
跨域通信有哪些方式
前端跨域通信的几种方式
CORS 简单请求 + 预检请求(彻底理解跨域)
表单可以跨域吗
为什么 form 表单提交没有跨域问题,但 ajax 提交有跨域问题?
从输入 URL 到页面展示,这中间发生了什么?
从输入 URL 到页面展示到底发生了什么?看完吊打面试官!
从输入 URL 到页面展示,这中间发生了什么?
从输入 URL 到页面展示,这中间发生了什么?
前端经典面试题: 从输入 URL 到页面加载发生了什么?
HTML、CSS 和 JavaScript,是如何变成页面的?
浏览器的工作原理
从 8 道面试题看浏览器渲染过程与性能优化
chrome 仅仅打开了 1 个页面,为什么有 4 个进程?
仅仅打开了 1 个页面,为什么有 4 个进程?
仅仅打开了 1 个页面,为什么有 4 个进程?
localstorage
- 关于客户端存储的前端面试题总结
cookie
- 聊一聊 cookie
5 - 网络
5 - 网络
HTTP
你知道哪些 http 头部
详解 HTTP 头部信息
说一下 Http 缓存策略,有什么区别,分别解决了什么问题
浏览器缓存知识小结及应用
浅谈 Web 缓存
TCP
请描述处 TCP 的三次握手和四次挥手
面试官,不要再问我三次握手和四次挥手
两张动图 - 彻底明白 TCP 的三次握手与四次挥手
为什么浏览器要限制 tcp 的连接最大个数?
浏览器允许的并发请求资源数是什么意思?
HTTP2
HTTP2.0 特点
HTTP/2 相比 1.0 有哪些重大改进?
说一下 HTTP2.0 多路复用原理,多路复⽤有哪些优势?
HTTP 2.0 的二进制帧、流、多路复用
HTTPS
简述 https 原理,以及与 http 的区别
一次安全可靠的通信——HTTPS 原理
HTTPS 系列 2——证书的信任链校验:certificate trust chain
CDN
CDN 是什么?描述下 CDN 原理?为什么要用 CDN?
关于 cdn、回源等问题一网打尽
DNS
DNS 查询的过程,分为哪两种,是怎么一个过程
浅析 DNS 域名解析过程
6 - 框架
6 - 框架
vue
你知道 Vue 响应式数据原理吗?Proxy 与 Object.defineProperty 优劣对比
深入 Vue 响应式原理,活捉一个 MVVM
Vue3 的响应式和以前有什么区别,Proxy 无敌?
面试官: 实现双向绑定 Proxy 比 defineproperty 优劣如何?
Vue3 中的数据侦测
Vue2.x 组件通信有哪些方式
vue 中 8 种组件通信方式
Vue 中的 computed 和 watch 的区别在哪里
Vue 里的 computed 和 watch 的区别
组件中的 data 为什么是一个函数
Vue - 组件的 data 属性为什么必须是函数?
组件中的 data 为什么是一个函数而不是一个对象
nextTick 的实现原理是什么
Vue.nextTick,了解一下?
说说你对 keep-alive 组件的了解
Vue keep-alive 深入理解及实践总结
你都做过哪些 Vue 的性能优化
Vue 项目性能优化 — 实践指南
vue3.0 介绍
Vue3 新特性一篇搞懂
Composition API 的出现带来哪些新的开发体验,为啥需要这个
Vue3 快速上手指南 - CompositionAPI
vuex
表单处理
vuex 中为什么把把异步操作封装在 action,把同步操作放在 mutations?
vuex 直接修改 state 与 用 dispatch/commit 来修改 state 的差异
什么时候该用 vuex?
什么情况下使用 Vuex
可以直接修改 state 的值么
为什么 Vuex 的 mutation 中不能做异步操作
v-model 和 vuex 有冲突么
router
前端路由简介以及 vue-router 实现原理
导航守卫
路由懒加载
路由懒加载是什么意思?如何实现路由懒加载
Vue-router 导航守卫有哪些
vue 路由 hash 模式和 history 模式实现原理分别是什么,他们的区别是什么
react
React 事件绑定原理
深入理解 React:事件机制原理
React 中的 setState 缺点是什么呢
React 组件通信如何实现
React 组件通信的五种方式
类组件和函数组件的区别
React 函数式组件和类组件的区别,不是只有 state 和性能!
请你说说 React 的路由是什么
从路由原理出发,深入阅读理解 react-router 4.0 的源码
React 有哪些性能优化的手段
21 个 React 性能优化技巧
React 性能优化的 8 种方式了解一下?
React hooks 用过吗,为什么要用
为什么需要 React Hooks?
一文彻底搞懂 react hooks 的原理和实现
vue/react
虚拟 DOM 的优劣如何
虚拟 DOM 到底是什么?
虚拟 DOM 的优劣如何
v-for 循环中 key 有什么作用?
Vue2.0 v-for 中 :key 到底有什么用?
写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?
React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的
React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的?
React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的?
聊聊 Redux 和 Vuex 的设计思想
Vuex、Flux、Redux、Redux-saga、Dva、MobX
7 - 工程化
7 - 工程化
脚手架
你知道什么是脚手架吗?
前端脚手架,听起来玄乎,实际呢?
自制前端脚手架
你们公司有自己的脚手架工具么,他是怎么工作的
构建工具
webpack
一文彻底读懂 Babel
Webpack Tree shaking 深入探究
代码分离
详解 webpack code splitting
webpack loader 和 plugin 编写
Writing a Loader
优化 Webpack 的构建速度
Webpack HMR 原理解析
Webpack 入门以及常见 Loader 和常用插件的使用
webpack 中 loader 和 plugin 的区别是什么
Webpack 原理浅析
理解 webpack 原理,手写一个 100 行的 webpack
webpack 的核心思想是什么
Loader 和 Plugin 的区别
有哪些常见的 Loader 和 Plugin,简单聊一聊各自的作用
说一下 Webpack 的热更新原理吧
如何优化 Webpack 的构建速度
自己写过 Loader 和 Plugin 么
代码分割的本质是什么?有什么意义呢
说下 tree-shaking 的原理
babel 原理
项目部署
你们公司项目发布流程是什么样的
前端资源发布路径怎么实现非覆盖式发布(平滑升级)?
前端开发体系建设日记
SSR 项目是如何发布的
内部包
你有发布过自己的 npm 包吗?流程是怎样的?
介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块?
每一个前端工程师都应该掌握的 npm install 原理
你会搭建私有的 npm 仓库吗?怎么搭建?
分分钟教会你搭建企业级的 npm 私有仓库
开发规范
- eslint
运维
nginx
cdn
git
构建优化
Webpack 为什么慢,如何进行优化
优化 Webpack 的构建速度
8 - 性能
8 - 性能
页面是否可以快速加载
网络优化
http2
CDN
代码大小
代码分割
代码压缩
tree-shaking
SSR
彻底理解服务端渲染 - SSR 原理
离线
h5 秒开方案大全
Hybrid App 离线包方案实践(附开源代码)
极致的 Hybrid:航旅离线包再加速!
缓存
浏览器缓存知识小结及应用
浅谈 Web 缓存
是否允许用户快速开始与之交互
渲染优化
从 8 道面试题看浏览器渲染过程与性能优化
web worker
使用 Web Worker 优化代码
滚动和动画是否流畅
如何优化大数据列表(10 万 +)的性能?说说你的方案
「前端进阶」高性能渲染十万条数据 (虚拟列表)
requestAnimationFrame
动画性能如何检测
js 动画和 css 动画有什么区别
分离图层做动画有什么好处呢
css3 动画优化
重绘重排
Web 性能优化 - CSS3 硬件加速 (GPU 加速)
图片优化
图片压缩
图片懒加载
图片懒加载从简单到复杂
骨架屏 + 合理的 loading
网页骨架屏自动生成方案(dps)
一种自动化生成骨架屏的方案
9 - 监控
9 - 监控
异常
项目中如何进行异常捕获
为什么会有那么多 Script Error 错误
Script error. 全面解析
性能
前端是如何监控性能的
腾讯前端团队是如何做 web 性能监控的?
蚂蚁金服如何把前端性能监控做到极致?
埋点
页面埋点怎么实现
web 埋点实现原理了解一下
为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片
- 为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片?
sendbeacon
10 - 安全
- [2020全网最全前端安全综述](https://mp.weixin.qq.com/s/Qm_YI9pxfWQJpSLwbSFKbw)10 - 安全
xss
- 如何防止 XSS 攻击?
csrf
- 如何防止 CSRF 攻击?
网络传输安全
一次安全可靠的通信——HTTPS 原理 000046a5fdc7802a15f7508b556413
HTTPS 中间人攻击实践(原理 · 实践)
接口加签
- API 接口的参数加密签名设计思路(参数加密 + 超时处理 + 私钥验证 + Https)
接口加密
接口防重放
- Api 接口安全 - 防篡改, 防重放理解总结
环境检测
代码加密混淆
无处不在的验证码 s
验证码 WEB 端产品调研(一):Google reCAPTCHA
验证码 WEB 端产品调研(二):极限验证
浏览器为什么要阻止跨域请求?如何解决跨域?每次跨域请求都需要到达服务端吗?
- 为什么浏览器要限制跨域访问?
11-Node
11-Node
node 事件循环
- Node.js 事件循环 - 比官方更全面
谈谈 node 的内存泄漏
- 如何分析 Node.js 中的内存泄漏
node 中间层怎样做的请求合并转发
pm2 怎么做进程管理,进程挂掉怎么处理
SSR
SSR 解决了什么问题?有做过 SSR 吗?你是怎么做的?
彻底理解服务端渲染 - SSR 原理
SSR 这么好为啥不大规模使用了,基本公司项目还走的是前端渲染
GraphQL
使用过 GraphQL 么,解决了什么问题
和普通接口相比 GraphQL 有什么优势呢
GraphQL-BFF:微服务背景下的前后端数据交互方案
12 - 跨端
12 - 跨端
Hybrid App
说一下 H5 和 native 之间是如何进行交互的,知道 jsbridge 么
小白必看,JSBridge 初探
Hybrid App 技术解析 -- 原理篇
Hybrid App 技术解析 -- 实战篇
Weex
weex 实现大致原理
深入理解 weex 内核原理
RN
Flutter
13 - 微信开发
13 - 微信开发
公众号
微信授权流程
微信扫码登录的几秒钟里,到底发生了什么
小程序
了解微信小程序的底层实现吗
小程序简介
h5 跟小程序有什么区别
五花八门的小程序框架实现原理知道么
为何我们要用 React 来写小程序 - Taro 诞生记
14 - 新主题
14 - 新主题
微前端
你了解什么是微前端吗?说说你对它的理解?
可能是你见过最完善的微前端解决方案
serverless
说说你对 serverless 的理解,它对前端有什么影响?
Serverless 掀起新的前端技术变革
边缘计算
你听过边缘计算吗?说说你对它的理解?
前端性能优化:当页面渲染遇上边缘计算
什么是边缘计算?一文读尽秒懂
WebAssembly
15 - 手写
15 - 手写
Promise
手写一个 Promise
面试官:“你能手写一个 Promise 吗”
使用 Promise 实现红绿灯交替重复亮
使用 Promise 实现红绿灯交替重复亮
Promise.all,race,allSeleted
sendRequests(urls, max, callback),同一时间最多发起 max 个请求,请求全部完成后执行 callback
maxRequest(fn, maxNum),实现 maxRequest,成功后 resolve 结果,失败后重试,尝试超过一定次数才真正的 reject
页面上有一个输入框,两个按钮,A 按钮和 B 按钮,点击 A 或者 B 分别会发送一个异步请求,请求完成后,结果会显示在输入框中。用户随机点击 A 和 B 多次,要求输出显示结果时,按照用户点击的顺序显示
一道赋值面试题引发的思考 3【并发数控制】
this
call/apply
bind
手写 call、apply、bind 实现及详解
new
new 操作符的实现
链式调用 4.add(1).add(2).add(3)
原型链
instanceof
手写一个 instanceOf
各种继承
JavaScript 深入之继承的多种方式和优缺点
闭包
修改函数正确执行
柯里化
JavaScript 专题之函数柯里化
防抖节流
debounce
JavaScript 专题之跟着 underscore 学防抖
throttle
JavaScript 专题之跟着 underscore 学节流
网络请求
手写 AJAX
手写 AJAX
手写 JSONP
jsonp 的原理与实现
设计模式
eventEmiter
从观察者模式到手写 EventEmitter 源码
singleton
深拷贝
JS 基本数据类型和引用数据类型的区别及深浅拷贝
JavaScript 专题之深浅拷贝
16 - 高频算法
16 - 高频算法
字符串
反转字符串
字符串中的第一个唯一字符
最长公共前缀
数组
合并两个有序数组
数组中重复的数字
两个数组的交集
旋转数组
两数之和
链表
合并两个有序链表
删除中间节点
移除链表元素
反转链表
删除链表的倒数第 N 个节点
环形链表
从尾到头打印链表
二叉树
二叉树的遍历 - 前序中序后序层次
二叉树的最大深度
二叉搜索树
BST 的查找
平衡二叉树
完全二叉树
栈 / 队列
- 有效的括号
排序
冒泡排序
选择排序
插入排序
希尔排序
归并排序
快速排序
堆排序
递归
斐波那契数列
汉诺塔问题
二分法
爱吃香蕉的珂珂
x 的平方根
寻找两个正序数组的中位数
搜索旋转排序数组
搜索插入位置
动态规划
最长上升子序列
爬楼梯
最大子序和
最小路径和
打家劫舍
买卖股票的最佳时机
贪心与分治
分发饼干
柠檬水找零
模拟行走机器人
滑动窗口
滑动窗口最大值
无重复字符的最长子串
盛最多水的容器
位运算
N 皇后 II
颠倒二进制位
位 1 的个数
17 - 项目 / 技术之外
17 - 项目 / 技术之外
项目开发中有遇到什么挑战没?
对哪个项目印象比较深刻深刻,遇到最难的项目是啥?
项目研发流程中作为前端开发一般扮演的啥角色?
现在有的项目中觉得哪些项目可以继续优化,为啥没有优化?
平时写项目总结么,一般总结哪些东西?
工作中能够持续学习么?
学习的动力怎么来的,如何维持?
未来会有什么样的规划?
对于加班你是怎么看的?
说下你学习前端的历程吧?
前端未来展望?
最后希望大家都能找到好的工作 完整思维导图实在太大,可关注公众号「前端复习课」回复 “思维导图” 获取高清大图,总共 18 张大图。
❤️ 爱心三连击
如果觉得这篇文章还不错,来个分享、点赞、在看三连吧,让更多的人也看到~
关注公众号前端森林,定期为你推送新鲜干货好文。
特殊阶段,带好口罩,做好个人防护。