共计 7716 个字符,预计需要花费 20 分钟才能阅读完成。
本文首发于 17 张思维导图,2021 年作为一名前端开发者须要把握这些,前端面试复习资料参考纲要,转载请分割作者
前言
2020 年最初一个月了,熬夜多天整顿出 17 张思维导图,对前端面试温习知识点进行了最全的总结,分享给大家。每个知识点都尽量找到最好的文章来解释,通过思维导图的模式进行展现。
给大家筹备了高清的思维导图和食用更加不便的 PDF 文档,全副聚合思维导图一张,分类思维导图 17 张,波及前端开发的方方面面面,JS 根底,工程化,性能优化,平安,框架等。如果您是筹备面试,或者享扩大前端常识,都能够通过这个目录进行学习。
废话不多说,上面分类开展来说,珍藏起来吧
残缺思维导图切实太大,可关注公众号「前端温习课」回复“思维导图”获取高清大图,总共 18 张。
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
事件
-
事件冒泡、捕捉等了解
- 你真的了解 事件冒泡 和 事件捕捉 吗?
-
介绍下浏览器事件委托
- 事件委托
-
实现一个自定义事件
- 创立自定义事件
dom 操作
- 原生 JS DOM 操作方法汇总
地位与大小
-
JavaScript 获取 DOM 元素地位和尺寸大小
- JavaScript 获取 DOM 元素地位和尺寸大小
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- 浏览器
跨域
-
跨域通信有哪些形式
- 前端跨域通信的几种形式
- CORS 简略申请 + 预检申请(彻底了解跨域)
-
表单能够跨域吗
- 为什么 form 表单提交没有跨域问题,但 ajax 提交有跨域问题?
从输出 URL 到页面展现,这两头产生了什么?
- 一文摸透从输出 URL 到页面渲染的过程
- 从输出 URL 到页面展现到底产生了什么?看完吊打面试官!
- 从输出 URL 到页面展现,这两头产生了什么?
- 从输出 URL 到页面展现,这两头产生了什么?
- 前端经典面试题: 从输出 URL 到页面加载产生了什么?
HTML、CSS 和 JavaScript,是如何变成页面的?
- 浏览器的工作原理
- 从 8 道面试题看浏览器渲染过程与性能优化
chrome 仅仅关上了 1 个页面,为什么有 4 个过程?
- 仅仅关上了 1 个页面,为什么有 4 个过程?
- 仅仅关上了 1 个页面,为什么有 4 个过程?
localstorage
- 对于客户端存储的前端面试题总结
cookie
- 聊一聊 cookie
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 原理
- HTTPS 系列 2——证书的信赖链校验:certificate trust chain
CDN
-
CDN 是什么?形容下 CDN 原理?为什么要用 CDN?
- 对于 cdn、回源等问题一网打尽
DNS
-
DNS 查问的过程,分为哪两种,是怎么一个过程
- 浅析 DNS 域名解析过程
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
- 什么时候该用 vuex?
-
能够间接批改 state 的值么
- vuex 间接批改 state 与 用 dispatch/commit 来批改 state 的差别
-
为什么 Vuex 的 mutation 中不能做异步操作
- vuex 中为什么把把异步操作封装在 action,把同步操作放在 mutations?
-
v-model 和 vuex 有抵触么
- 表单解决
-
-
router
-
路由懒加载是什么意思?如何实现路由懒加载
- 路由懒加载
-
Vue-router 导航守卫有哪些
- 导航守卫
-
vue 路由 hash 模式和 history 模式实现原理别离是什么,他们的区别是什么
- 前端路由简介以及 vue-router 实现原理
-
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- 工程化
脚手架
-
你晓得什么是脚手架吗?
- 前端脚手架,听起来玄乎,理论呢?
- 自制前端脚手架
- 你们公司有本人的脚手架工具么,他是怎么工作的
构建工具
-
webpack
-
webpack 的核心思想是什么
- Webpack 原理浅析
- 了解 webpack 原理,手写一个 100 行的 webpack
-
Loader 和 Plugin 的区别
- webpack 中 loader 和 plugin 的区别是什么
-
有哪些常见的 Loader 和 Plugin,简略聊一聊各自的作用
- Webpack 入门以及常见 Loader 和罕用插件的应用
-
说一下 Webpack 的热更新原理吧
- Webpack HMR 原理解析
-
如何优化 Webpack 的构建速度
- 优化 Webpack 的构建速度
-
本人写过 Loader 和 Plugin 么
- webpack loader 和 plugin 编写
- Writing a Loader
-
代码宰割的实质是什么?有什么意义呢
- 代码拆散
- 详解 webpack code splitting
-
说下 tree-shaking 的原理
- Webpack Tree shaking 深刻探索
-
babel 原理
- 一文彻底读懂 Babel
-
我的项目部署
- 你们公司我的项目公布流程是什么样的
-
前端资源公布门路怎么实现非笼罩式公布(平滑降级)?
- 前端开发体系建设日记
- SSR 我的项目是如何公布的
外部包
- 你有公布过本人的 npm 包吗?流程是怎么的?
-
介绍下 npm 模块装置机制,为什么输出 npm install 就能够主动装置对应的模块?
- 每一个前端工程师都应该把握的 npm install 原理
-
你会搭建公有的 npm 仓库吗?怎么搭建?
- 分分钟教会你搭建企业级的 npm 公有仓库
开发标准
- eslint
运维
- nginx
- cdn
git
构建优化
-
Webpack 为什么慢,如何进行优化
- 优化 Webpack 的构建速度
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- 监控
异样
-
我的项目中如何进行异样捕捉
- 前端开发不得不晓得的异样捕捉技巧
-
为什么会有那么多 Script Error 谬误
- Script error. 全面解析
性能
-
前端是如何监控性能的
- 腾讯前端团队是如何做 web 性能监控的?
- 蚂蚁金服如何把前端性能监控做到极致?
埋点
-
页面埋点怎么实现
- web 埋点实现原理理解一下
为什么通常在发送数据埋点申请的时候应用的是 1×1 像素的通明 gif 图片
- 为什么通常在发送数据埋点申请的时候应用的是 1×1 像素的通明 gif 图片?
sendbeacon
10- 平安
- [2020 全网最全前端平安综述](https://mp.weixin.qq.com/s/Qm_YI9pxfWQJpSLwbSFKbw)
xss
- 如何避免 XSS 攻打?
csrf
- 如何避免 CSRF 攻打?
网络传输平安
- 一次安全可靠的通信——HTTPS 原理 000046a5fdc7802a15f7508b556413
- HTTPS 中间人攻打实际(原理·实际)
接口加签
- API 接口的参数加密签名设计思路(参数加密 + 超时解决 + 私钥验证 +Https)
接口加密
接口防重放
- Api 接口平安 - 防篡改, 防重放了解总结
环境检测
代码加密混同
无处不在的验证码 s
- 验证码 WEB 端产品调研(一):Google reCAPTCHA
- 验证码 WEB 端产品调研(二):极限验证
浏览器为什么要阻止跨域申请?如何解决跨域?每次跨域申请都须要达到服务端吗?
- 为什么浏览器要限度跨域拜访?
11-Node
node 事件循环
- Node.js 事件循环 - 比官网更全面
谈谈 node 的内存透露
- 如何剖析 Node.js 中的内存透露
node 中间层怎么做的申请合并转发
pm2 怎么做过程治理,过程挂掉怎么解决
SSR
-
SSR 解决了什么问题?有做过 SSR 吗?你是怎么做的?
- 彻底了解服务端渲染 – SSR 原理
- SSR 这么好为啥不大规模应用了,根本公司我的项目还走的是前端渲染
GraphQL
- 应用过 GraphQL 么,解决了什么问题
-
和一般接口相比 GraphQL 有什么劣势呢
- GraphQL-BFF:微服务背景下的前后端数据交互计划
12- 跨端
Hybrid App
-
说一下 H5 和 native 之间是如何进行交互的,晓得 jsbridge 么
- 小白必看,JSBridge 初探
- Hybrid App 技术解析 — 原理篇
- Hybrid App 技术解析 — 实战篇
Weex
-
weex 实现大抵原理
- 深刻了解 weex 内核原理
RN
Flutter
13- 微信开发
公众号
-
微信受权流程
- 微信扫码登录的几秒钟里,到底产生了什么
小程序
-
理解微信小程序的底层实现吗
- 小程序简介
- h5 跟小程序有什么区别
-
形形色色的小程序框架实现原理晓得么
- 为何咱们要用 React 来写小程序 – Taro 诞生记
14- 新主题
微前端
-
你理解什么是微前端吗?说说你对它的了解?
- 可能是你见过最欠缺的微前端解决方案
serverless
-
说说你对 serverless 的了解,它对前端有什么影响?
- Serverless 掀起新的前端技术改革
边缘计算
-
你听过边缘计算吗?说说你对它的了解?
- 前端性能优化:当页面渲染遇上边缘计算
- 什么是边缘计算?一文读尽秒懂
WebAssembly
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- 高频算法
字符串
- 反转字符串
- 字符串中的第一个惟一字符
- 最长公共前缀
数组
- 合并两个有序数组
- 数组中反复的数字
- 两个数组的交加
- 旋转数组
- 两数之和
链表
- 合并两个有序链表
- 删除两头节点
- 移除链表元素
- 反转链表
- 删除链表的倒数第 N 个节点
- 环形链表
- 从尾到头打印链表
二叉树
- 二叉树的遍历 - 前序中序后序档次
- 二叉树的最大深度
- 二叉搜寻树
- BST 的查找
- 均衡二叉树
- 齐全二叉树
栈 / 队列
- 无效的括号
排序
- 冒泡排序
- 抉择排序
- 插入排序
- 希尔排序
- 归并排序
- 疾速排序
- 堆排序
递归
- 斐波那契数列
- 汉诺塔问题
二分法
- 爱吃香蕉的珂珂
- x 的平方根
- 寻找两个正序数组的中位数
- 搜寻旋转排序数组
- 搜寻插入地位
动静布局
- 最长回升子序列
- 爬楼梯
- 最大子序和
- 最小门路和
- 打家劫舍
- 交易股票的最佳时机
贪婪与分治
- 散发饼干
- 柠檬水找零
- 模仿行走机器人
滑动窗口
- 滑动窗口最大值
- 无反复字符的最长子串
- 盛最多水的容器
位运算
- N 皇后 II
- 颠倒二进制位
- 位 1 的个数
17- 我的项目 / 技术之外
我的项目开发中有遇到什么挑战没?
对哪个我的项目印象比拟粗浅粗浅,遇到最难的我的项目是啥?
我的项目研发流程中作为前端开发个别表演的啥角色?
当初有的我的项目中感觉哪些项目能够持续优化,为啥没有优化?
平时写我的项目总结么,个别总结哪些货色?
工作中可能继续学习么?
学习的能源怎么来的,如何维持?
将来会有什么样的布局?
对于加班你是怎么看的?
说下你学习前端的历程吧?
前端将来瞻望?
最初心愿大家都能找到好的工作
残缺思维导图切实太大,可关注公众号「前端温习课」回复“思维导图”获取高清大图,总共 18 张。