17张思维导图,2021年作为一名前端开发者需要掌握这些,前端面试复习资料参考大纲
前言
2020年最后一个月了,熬夜多天整理出17张思维导图,对前端面试复习知识点进行了最全的总结,分享给大家。每个知识点都尽量找到最好的文章来解释,通过思维导图的形式进行展示。
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-项目/技术之外
项目开发中有遇到什么挑战没?
对哪个项目印象比较深刻深刻,遇到最难的项目是啥?
项目研发流程中作为前端开发一般扮演的啥角色?
现在有的项目中觉得哪些项目可以继续优化,为啥没有优化?
平时写项目总结么,一般总结哪些东西?
工作中能够持续学习么?
学习的动力怎么来的,如何维持?
未来会有什么样的规划?
对于加班你是怎么看的?
说下你学习前端的历程吧?
前端未来展望?
给大家准备了高清的思维导图和食用更加方便的PDF文档,全部聚合思维导图一张,分类思维导图17张,涉及前端开发的方方面面面,JS基础,工程化,性能优化,安全,框架等。如果您是准备面试,或者享扩展前端知识,都可以通过这个目录进行学习。
完整思维导图实在太大,可关注公众号「前端复习课」回复“思维导图”获取高清大图,总共18张,还有整理好的PDF哦。
本文首发于17张思维导图,2021年作为一名前端开发者需要掌握这些,前端面试复习资料参考大纲,转载请联系作者