本文首发于17张思维导图,2021年作为一名前端开发者需要掌握这些,前端面试复习资料参考大纲,转载请联系作者
前言
2020年最后一个月了,熬夜多天整理出17张思维导图,对前端面试复习知识点进行了最全的总结,分享给大家。每个知识点都尽量找到最好的文章来解释,通过思维导图的形式进行展示。
给大家准备了高清的思维导图和食用更加方便的PDF文档,全部聚合思维导图一张,分类思维导图17张,涉及前端开发的方方面面面,JS基础,工程化,性能优化,安全,框架等。如果您是准备面试,或者享扩展前端知识,都可以通过这个目录进行学习。
废话不多说,下面分类展开来说,收藏起来吧
完整思维导图实在太大,可关注公众号「前端复习课」回复“思维导图”获取高清大图,总共18张。
1-Javascript
内置类型
介绍一下JS内置类型有哪些
介绍一下typeof区分类型的原理
介绍一下类型转换
作用域
说说你对javascript的作用域的理解
什么是作用域链
解释下 let 和 const 的块级作用域
执行上下文
说说你对执行上下文的理解
闭包
对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
闭包问题及优化
this指向
如何确定this指向
- 改变 this 指向的方式都有哪些
介绍箭头函数的 this
原型/继承
说一下对原型链的理解,画一个经典的原型链图示
举例说明js如何实现继承
ES5/ES6 的继承除了写法以外还有什么区别
事件循环
你对事件循环有了解吗?说说看!
- 微任务和宏任务有什么区别
浏览器和Node 事件循环的区别
异步编程
异步解决方案有哪些
Promise
- 实现一个Promise
- 实现Promise.all,race,allSeleted等
- async/await
2-DOM
事件
事件冒泡、捕获等理解
介绍下浏览器事件委托
实现一个自定义事件
dom操作
位置与大小
JavaScript获取DOM元素位置和尺寸大小
3-CSS
BFC
BFC 是什么?触发 BFC 的条件是什么?有哪些应用场景?
1px
如何解决移动端 Retina 屏 1px 像素问题
position
- position 有哪些属性
position: sticky 用过没,有啥效果
flex
flex:1 的完整写法是?分别是什么意思?
重绘回流
介绍下重绘和回流(Repaint & Reflow),以及如何进行优化
说说你对GPU的理解,举例说明哪些元素能触发GPU硬件加速?
常见布局
居中
- 单列布局
- 两列自适应布局
- 三栏布局
粘连布局
动画实现
css 如何实现动画
使用纯CSS代码实现动画的暂停与播放
使用css3动画代替js的动画有什么好处?
盒模型
4-浏览器
跨域
跨域通信有哪些方式
表单可以跨域吗
从输入URL到页面展示,这中间发生了什么?
- 一文摸透从输入URL到页面渲染的过程
- 从输入 URL 到页面展示到底发生了什么?看完吊打面试官!
- 从输入 URL 到页面展示,这中间发生了什么?
- 从输入URL到页面展示,这中间发生了什么?
- 前端经典面试题: 从输入URL到页面加载发生了什么?
HTML、CSS和JavaScript,是如何变成页面的?
chrome仅仅打开了1个页面,为什么有4个进程?
localstorage
cookie
5-网络
HTTP
你知道哪些http头部
说一下 Http 缓存策略,有什么区别,分别解决了什么问题
TCP
请描述处TCP的三次握手和四次挥手
为什么浏览器要限制tcp的连接最大个数?
HTTP2
HTTP2.0 特点
说一下 HTTP2.0 多路复用原理,多路复⽤有哪些优势?
HTTPS
简述https原理,以及与http的区别
CDN
CDN 是什么?描述下 CDN 原理?为什么要用 CDN?
DNS
DNS 查询的过程,分为哪两种,是怎么一个过程
6-框架
vue
你知道Vue响应式数据原理吗?Proxy 与 Object.defineProperty 优劣对比
Vue2.x组件通信有哪些方式
Vue 中的 computed 和 watch 的区别在哪里
组件中的data为什么是一个函数
nextTick的实现原理是什么
说说你对keep-alive组件的了解
你都做过哪些Vue的性能优化
vue3.0介绍
Composition API 的出现带来哪些新的开发体验,为啥需要这个
vuex
什么情况下使用 Vuex
可以直接修改state的值么
为什么 Vuex 的 mutation 中不能做异步操作
v-model和vuex有冲突么
router
路由懒加载是什么意思?如何实现路由懒加载
Vue-router 导航守卫有哪些
vue路由hash模式和history模式实现原理分别是什么,他们的区别是什么
react
React 事件绑定原理
- React中的setState缺点是什么呢
React组件通信如何实现
类组件和函数组件的区别
请你说说React的路由是什么
React有哪些性能优化的手段
React hooks用过吗,为什么要用
vue/react
虚拟DOM的优劣如何
v-for循环中key有什么作用?
React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的
聊聊 Redux 和 Vuex 的设计思想
7-工程化
脚手架
你知道什么是脚手架吗?
- 你们公司有自己的脚手架工具么,他是怎么工作的
构建工具
webpack
webpack的核心思想是什么
Loader和Plugin的区别
有哪些常见的Loader和Plugin,简单聊一聊各自的作用
说一下 Webpack 的热更新原理吧
如何优化 Webpack 的构建速度
自己写过Loader和Plugin么
代码分割的本质是什么?有什么意义呢
说下 tree-shaking 的原理
babel原理
项目部署
- 你们公司项目发布流程是什么样的
前端资源发布路径怎么实现非覆盖式发布(平滑升级)?
- SSR项目是如何发布的
内部包
- 你有发布过自己的npm包吗?流程是怎样的?
介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块?
你会搭建私有的npm仓库吗?怎么搭建?
开发规范
- eslint
运维
- nginx
- cdn
git
构建优化
Webpack 为什么慢,如何进行优化
8-性能
页面是否可以快速加载
网络优化
- http2
- CDN
代码大小
- 代码分割
- 代码压缩
- tree-shaking
SSR
离线
缓存
是否允许用户快速开始与之交互
渲染优化
web worker
滚动和动画是否流畅
如何优化大数据列表(10万+)的性能?说说你的方案
- requestAnimationFrame
- 动画性能如何检测
- js动画和css动画有什么区别
分离图层做动画有什么好处呢
重绘重排
图片优化
- 图片压缩
图片懒加载
骨架屏+合理的loading
9-监控
异常
项目中如何进行异常捕获
为什么会有那么多Script Error错误
性能
前端是如何监控性能的
埋点
页面埋点怎么实现
为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片
sendbeacon
10-安全
- [2020全网最全前端安全综述](https://mp.weixin.qq.com/s/Qm_YI9pxfWQJpSLwbSFKbw)
xss
csrf
网络传输安全
- 一次安全可靠的通信——HTTPS原理000046a5fdc7802a15f7508b556413
- HTTPS中间人攻击实践(原理·实践)
接口加签
接口加密
接口防重放
环境检测
代码加密混淆
无处不在的验证码s
浏览器为什么要阻止跨域请求?如何解决跨域?每次跨域请求都需要到达服务端吗?
11-Node
node 事件循环
谈谈 node 的内存泄漏
node 中间层怎样做的请求合并转发
pm2 怎么做进程管理,进程挂掉怎么处理
SSR
SSR解决了什么问题?有做过SSR吗?你是怎么做的?
- SSR这么好为啥不大规模使用了,基本公司项目还走的是前端渲染
GraphQL
- 使用过GraphQL么,解决了什么问题
和普通接口相比GraphQL有什么优势呢
12-跨端
Hybrid App
说一下H5和native之间是如何进行交互的,知道jsbridge么
Weex
weex实现大致原理
RN
Flutter
13-微信开发
公众号
微信授权流程
小程序
了解微信小程序的底层实现吗
- h5跟小程序有什么区别
五花八门的小程序框架实现原理知道么
14-新主题
微前端
你了解什么是微前端吗?说说你对它的理解?
serverless
说说你对serverless的理解,它对前端有什么影响?
边缘计算
你听过边缘计算吗?说说你对它的理解?
WebAssembly
15-手写
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多次,要求输出显示结果时,按照用户点击的顺序显示
this
- call/apply
bind
new
- 链式调用4.add(1).add(2).add(3)
原型链
instanceof
各种继承
闭包
- 修改函数正确执行
柯里化
防抖节流
debounce
throttle
网络请求
手写AJAX
手写JSONP
设计模式
eventEmiter
- singleton
深拷贝
16-高频算法
字符串
数组
链表
二叉树
栈/队列
排序
- 冒泡排序
- 选择排序
- 插入排序
- 希尔排序
- 归并排序
- 快速排序
- 堆排序
递归
二分法
动态规划
贪心与分治
滑动窗口
位运算
17-项目/技术之外
项目开发中有遇到什么挑战没?
对哪个项目印象比较深刻深刻,遇到最难的项目是啥?
项目研发流程中作为前端开发一般扮演的啥角色?
现在有的项目中觉得哪些项目可以继续优化,为啥没有优化?
平时写项目总结么,一般总结哪些东西?
工作中能够持续学习么?
学习的动力怎么来的,如何维持?
未来会有什么样的规划?
对于加班你是怎么看的?
说下你学习前端的历程吧?
前端未来展望?
最后希望大家都能找到好的工作
完整思维导图实在太大,可关注公众号「前端复习课」回复“思维导图”获取高清大图,总共18张。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。