2020年前端面试复习必读

建议收藏文章,结合复习导图食用,效果更佳。

整理了网上的一些相关文章还需要持续学习呀 ~

放弃了假期快落的岛上生活(动森),吐血整理这份资料,希望对大家有所帮助~

欢迎访问「「www.aeui.cn」资源喵」,获取最新IT学习资料。助力你技能提升~

1. JavaScript 基础

JavaScript 常面问题

1.1 执行上下文/作用域链/闭包

理解 JavaScript 中的执行上下文和执行栈

JavaScript深入之执行上下文栈

一道js面试题引发的思考

JavaScript深入之词法作用域和动态作用域

JavaScript深入之作用域链

发现 JavaScript 中闭包的强大威力

JavaScript闭包的底层运行机制

我从来不理解JavaScript闭包,直到有人这样向我解释它...

破解前端面试(80% 应聘者不及格系列):从闭包说起

1.2 this/call/apply/bind

JavaScript基础心法——this

JavaScript深入之从ECMAScript规范解读this

前端基础进阶(七):全方位解读this

面试官问:JS的this指向

JavaScript深入之call和apply的模拟实现

JavaScript基础心法—— call apply bind

面试官问:能否模拟实现JS的call和apply方法

回味JS基础:call apply 与 bind

面试官问:能否模拟实现JS的bind方法

不用call和apply方法模拟实现ES5的bind方法

1.3 原型/继承

深入理解 JavaScript 原型

【THE LAST TIME】一文吃透所有JS原型相关知识点

重新认识构造函数、原型和原型链

JavaScript深入之从原型到原型链

最详尽的 JS 原型与原型链终极详解,没有「可能是」。(一)

最详尽的 JS 原型与原型链终极详解,没有「可能是」。(二)

最详尽的 JS 原型与原型链终极详解,没有「可能是」。(三)

JavaScript 引擎基础:原型优化

Prototypes in JavaScript

JavaScript深入之创建对象的多种方式以及优缺点

详解JS原型链与继承

从__proto__和prototype来深入理解JS对象和原型链

代码复用模式

JavaScript 中的继承:ES3、ES5 和 ES6

1.4 Promise

100 行代码实现 Promises/A+ 规范

你好,JavaScript异步编程---- 理解JavaScript异步的美妙

Promise不会??看这里!!!史上最通俗易懂的Promise!!!

一起学习造轮子(一):从零开始写一个符合Promises/A+规范的promise

Promise实现原理(附源码)

当 async/await 遇上 forEach

Promise 必知必会(十道题)

BAT前端经典面试问题:史上最最最详细的手写Promise教程

async function async1() {

console.log('async1 start');

await async2();

console.log('async1 end');

}

// 相当于

async function async1() {

console.log('async1 start');

Promise.resolve(async2()).then(() => {

console.log('async1 end');

})

}

复制代码

1.5 深浅拷贝

JavaScript基础心法——深浅拷贝

深拷贝的终极探索(90%的人都不知道)

JavaScript专题之深浅拷贝

javaScript中浅拷贝和深拷贝的实现

深入剖析 JavaScript 的深复制

「JavaScript」带你彻底搞清楚深拷贝、浅拷贝和循环引用

面试题之如何实现一个深拷贝

1.6 事件机制/Event Loop

Tasks, microtasks, queues and schedules

How JavaScript works

从event loop规范探究javaScript异步及浏览器更新渲染时机

这一次,彻底弄懂 JavaScript 执行机制

【THE LAST TIME】彻底吃透 JavaScript 执行机制

一次弄懂Event Loop(彻底解决此类面试问题)

浏览器与Node的事件循环(Event Loop)有何区别?

深入理解 JavaScript Event Loop

The Node.js Event Loop, Timers, and process.nextTick()

这个知识点真的是重在理解,一定要理解彻底

for (const macroTask of macroTaskQueue) {

handleMacroTask();

for (const microTask of microTaskQueue) {

handleMicroTask(microTask);

}

}

复制代码

1.7 函数式编程

函数式编程指北

JavaScript专题之函数柯里化

Understanding Functional Programming in Javascript

What is Functional Programming?

简明 JavaScript 函数式编程——入门篇

You Should Learn Functional Programming

JavaScript 函数式编程到底是个啥

JavaScript-函数式编程

1.8 Service Worker / PWA

Service Worker:简介

JavaScript 是如何工作的:Service Worker 的生命周期及使用场景

借助Service Worker和cacheStorage缓存及离线开发

PWA Lavas 文档

PWA 学习手册

面试官:请你实现一个PWA

1.9 Web Worker

浅谈HTML5 Web Worker

JavaScript 中的多线程 -- Web Worker

JavaScript 性能利器 —— Web Worker

A Simple Introduction to Web Workers in JavaScript

Speedy Introduction to Web Workers

1.10 常用方法

太多了... 总的来说就是 API 一定要熟悉...

近一万字的ES6语法知识点补充

ES6、ES7、ES8特性一锅炖(ES6、ES7、ES8学习指南)

解锁多种JavaScript数组去重姿势

Here’s how you can make better use of JavaScript arrays

一个合格的中级前端工程师需要掌握的 28 个 JavaScript 技巧

1.5万字概括ES6全部特性(已更新ES2020)

2. CSS 基础

position - CSS: Cascading Style Sheets | MDN

position | CSS Tricks

杀了个回马枪,还是说说position:sticky吧

30 分钟学会 Flex 布局

css行高line-height的一些深入理解及应用

A Complete Guide to Flexbox

写给自己看的display: flex布局教程

从网易与淘宝的font-size思考前端设计稿与工作流

细说移动端 经典的REM布局 与 新秀VW布局

移动端1px解决方案

Retina屏的移动设备如何实现真正1px的线?

CSS retina hairline, the easy way.

浏览器的回流与重绘 (Reflow & Repaint)

回流与重绘:CSS性能让JavaScript变慢?

CSS实现水平垂直居中的1010种方式(史上最全)

干货!各种常见布局实现

CSS 常见布局方式

彻底搞懂CSS层叠上下文、层叠等级、层叠顺序、z-index

深入理解CSS中的层叠上下文和层叠顺序

Sass vs. Less

2019年,你是否可以抛弃 CSS 预处理器?

浅谈 CSS 预处理器(一):为什么要使用预处理器?

浏览器将rem转成px时有精度误差怎么办?

Fighting the Space Between Inline Block Elements

3. 框架(Vue 为主)

3.1 MVVM

50行代码的MVVM,感受闭包的艺术

不好意思!耽误你的十分钟,让MVVM原理还给你

基于Vue实现一个简易MVVM

剖析Vue实现原理 - 如何实现双向绑定mvvm

3.2 生命周期

Vue 生命周期源码剖析

你真的理解$nextTick么

React 源码剖析系列 - 生命周期的管理艺术

3.3 数据绑定

Vue 深入响应式原理

面试官: 实现双向绑定Proxy比defineproperty优劣如何?

为什么Vue3.0不再使用defineProperty实现数据监听?

3.4 状态管理

Vuex、Flux、Redux、Redux-saga、Dva、MobX

10行代码看尽redux实现

Mobx 思想的实现原理,及与 Redux 对比

使用原生 JavaScript 构建状态管理系统

3.5 组件通信

vue中8种组件通信方式, 值得收藏!

Vue 组件间通信六种方式(完整版)

Vue组件间通信

3.6 Virtual DOM

Vue Virtual DOM 源码剖析

面试官: 你对虚拟DOM原理的理解?

让虚拟DOM和DOM-diff不再成为你的绊脚石

探索Virtual DOM的前世今生

虚拟 DOM 到底是什么?(长文建议收藏)

3.7 Diff

详解vue的diff算法

Deep In React 之详谈 React 16 Diff 策略(二)

React 源码剖析系列 - 不可思议的 react diff

浅入浅出图解 Dom Diff

3.8 Vue 计算属性 VS 侦听属性

Vue 计算属性 VS 侦听属性源码剖析

Vue.js的computed和watch是如何工作的?

3.9 React Hooks

React Hooks 原理

React hooks: not magic, just arrays

Deep dive: How do React hooks really work?

【React深入】从Mixin到HOC再到Hook

React Hooks 详解 【近 1W 字】+ 项目实战

30分钟精通React今年最劲爆的新特性——React Hooks

React Hooks 详解(一)

3.10 React Hoc/Vue mixin

探索Vue高阶组件

React 高阶组件(HOC)入门指南

深入理解 React 高阶组件

3.11 Vue 和 React 有什么不同

从思想、生态、语法、数据、通信、diff等角度自己总结一下吧。

4. 工程化

4.1 Webpack

前端工程师都得掌握的 webpack Loader

webpack loader 从上手到理解系列:vue-loader

webpack loader 从上手到理解系列:style-loader

一文掌握Webpack编译流程

手把手教你撸一个简易的 webpack

带你走进webpack世界,成为webpack头号玩家。

关于webpack4的14个知识点,童叟无欺

手把手教你撸一个 Webpack Loader

webpack 如何通过作用域分析消除无用代码

【webpack进阶】你真的掌握了loader么?- loader十问

Webpack小书

聊一聊webpack-dev-server和其中socket,HMR的实现

使用webpack4提升180%编译速度

Webpack 大法之 Code Splitting

轻松理解webpack热更新原理

轻松理解webpack热更新原理

揭秘webpack plugin

4.2 Babel

一篇文章了解前端开发必须懂的 Babel

不容错过的 Babel7 知识

前端工程师需要了解的 Babel 知识

深入浅出 Babel 上篇:架构和原理 + 实战

深入浅出 Babel 下篇:既生 Plugin 何生 Macros

前端工程师的自我修养-关于 Babel 那些事儿

前端与编译原理——用JS写一个JS解释器

4.3 模板引擎

编写一个简单的JavaScript模板引擎

JavaScript模板引擎原理,几行代码的事儿

Vue 模板编译原理

JavaScript template engine in just 20 lines

Understanding JavaScript Micro-Templating

4.4 前端发布

大公司里怎样开发和部署前端代码?

前端高级进阶:前端部署的发展历程

4.5 weex

深入了解 Weex

Weex原理概述

Weex 是如何在 iOS 客户端上跑起来的

详解 Weex 页面的渲染过程

JSBridge 介绍及实现原理

移动混合开发中的 JSBridge

4.6 前端监控

5 分钟撸一个前端性能监控工具

把前端监控做到极致

GMTC 大前端时代前端监控的最佳实践

前端监控和前端埋点方案设计

腾讯CDC团队:前端异常监控解决方案

5. 性能优化

5.1 打包阶段

Webpack优化——将你的构建效率提速翻倍

性能优化篇---Webpack构建速度优化

webpack构建速度与结果优化

让你的Webpack起飞—考拉会员后台Webpack优化实战

webpack dllPlugin打包体积和速度优化

使用webpack4提升180%编译速度

Webpack 打包优化之速度篇

多进程并行压缩代码

Tree-Shaking性能优化实践 - 原理篇

体积减少80%!释放webpack tree-shaking的真正潜力

你的Tree-Shaking并没什么卵用

webpack 如何通过作用域分析消除无用代码

加速Webpack-缩小文件搜索范围

Brief introduction to scope hoisting in Webpack

通过Scope Hoisting优化Webpack输出

webpack 的 scope hoisting 是什么?

webpack优化之code splitting

webpack 4: Code Splitting和chunks切分优化

Webpack 大法之 Code Splitting

Better tree shaking with deep scope analysis

Front-End Performance Checklist 2020

(译)2019年前端性能优化清单 — 上篇

5.2 其它优化

网站性能优化实战——从12.67s到1.06s的故事

浏览器页面资源加载过程与优化

聊聊前端开发中的长列表

再谈前端虚拟列表的实现

浅说虚拟列表的实现原理

浏览器IMG图片原生懒加载loading=”lazy”实践指南

用 preload 预加载页面资源

App内网页启动加速实践:静态资源预加载视角

腾讯HTTPS性能优化实践

Preload, Prefetch And Priorities in Chrome

Front-End Performance Checklist

图片与视频懒加载的详细指南

使用 Intersection Observer 来懒加载图片

6. TypeScript

TypeScript 是什么

为什么要在javascript中进行静态类型检查

TypeScript Start: 基础类型

TypeScript真香系列——接口篇

TypeScript 中高级应用与最佳实践

typescript 高级技巧

可能是你需要的 React + TypeScript 50 条规范和经验

从 JavaScript 到 TypeScript

TypeScript + 大型项目实战

TypeScript - 一种思维方式

如何编写一个d.ts文件

TypeScript 的声明文件的使用与编写

TypeScript 进阶:给第三方库编写声明文件

TypeScript泛型

TypeScript 重构 Axios 经验分享

手把手教写 TypeScript Transformer Plugin

7. 网络

7.1 HTTP

听说『99% 的人都理解错了 HTTP 中 GET 与 POST 的区别』??

前端基础篇之HTTP协议

都9102年了,还问GET和POST的区别

HTTP 响应代码 | MDN

如何理解HTTP响应的状态码?

你所知道的3xx状态码

关于浏览器缓存你知道多少

浏览器缓存

HTTP协议头部与Keep-Alive模式详解

HTTP keep-alive 二三事

7.2 HTTPS/HTTP2

深入理解HTTPS工作原理

九个问题从入门到熟悉HTTPS

谈谈 HTTPS

看图学HTTPS

分分钟让你理解HTTPS

解密HTTP/2与HTTP/3 的新特性

浅谈 HTTP/2 Server Push

HTTP2基本概念学习笔记

7.3 DNS

写给前端工程师的DNS基础知识

前端优化: DNS预解析提升页面速度

DNS解析

7.4 TCP

通俗大白话来理解TCP协议的三次握手和四次分手

就是要你懂 TCP

TCP协议详解

面试时,你被问到过 TCP/IP 协议吗?

“三次握手,四次挥手”你真的懂吗?

7.5 CDN

五分钟了解CDN

漫话:如何给女朋友解释什么是CDN?

关于 cdn、回源等问题一网打尽

CDN是什么?使用CDN有什么优势?

7.6 经典题

从输入URL到页面展示,这中间发生了什么?

前端经典面试题: 从输入URL到页面加载发生了什么?

8. 设计模式

Javascript常用的设计模式详解

JavaScript设计模式

JavaScript 中常见设计模式整理

JavaScript 常见设计模式解析

深入 JavaScript 设计模式,从此有了优化代码的理论依据

设计模式之美-前端

9. 数据结构/算法

Linked Lists in JavaScript (ES6 code)

DS with JS — Linked Lists — II

LeetCode List

JS中的算法与数据结构——链表(Linked-list)

前端笔试&面试爬坑系列---算法

漫画:什么是红黑树?

前端你应该了解的数据结构与算法

数据结构和算法在前端领域的应用(前菜)

数据结构与算法在前端领域的应用 - 第二篇

JavaScript 数据结构与算法之美

10. 安全

前端安全系列(一):如何防止XSS攻击?

前端安全系列(二):如何防止CSRF攻击?

Security

前端也需要了解的 JSONP 安全

【面试篇】寒冬求职之你必须要懂的Web安全

谈谈对 Web 安全的理解

程序员必须要了解的web安全

可信前端之路:代码保护

前端如何给 JavaScript 加密(不是混淆)?

常见 Web 安全攻防总结

11. Node

一篇文章构建你的 NodeJS 知识体系

真-Node多线程

浏览器与Node的事件循环(Event Loop)有何区别?

聊聊 Node.js RPC

Understanding Streams in Node.js

深入理解 Node.js 进程与线程

如何通过饿了么 Node.js 面试

字节跳动面试官:请你实现一个大文件上传和断点续传

12. 项目/业务

思考题,自由发挥

13. 其它

深入浅出浏览器渲染原理

前端开发如何独立解决跨域问题

探索 Serverless 中的前端开发模式

「NGW」前端新技术赛场:Serverless SSR 技术内幕

JavaScript与Unicode

九种跨域方式实现原理(完整版)

7分钟理解JS的节流、防抖及使用场景

浏览器的工作原理:新式网络浏览器幕后揭秘

Different Types Of Observers Supported By Modern Browsers

浏览器同源策略与ajax跨域方法汇总

14. 面试

一年半经验如何准备阿里巴巴 P6 前端面试

面试分享:两年工作经验成功面试阿里P6总结

总结了17年初到18年初百场前端面试的面试经验(含答案)

2018春招前端面试: 闯关记(精排精校) | 掘金技术征文

20道JS原理题助你面试一臂之力!

一年半经验,百度、有赞、阿里前端面试总结

22 道高频 JavaScript 手写面试题及答案

面试分享:专科半年经验面试阿里前端P6+总结(附面试真题及答案)

写给女朋友的中级前端面试秘籍

阿里前端攻城狮们写了一份前端面试题答案,请查收

字节跳动今日头条前端面经(4轮技术面+hr面)

「面试题」20+Vue面试题整理(持续更新)

「吐血整理」再来一打Webpack面试题(持续更新)

高级前端开发者必会的34道Vue面试题系列

15. 书单

推荐一些值得看的书,基本都是我看完或者有翻过几页觉得不错但是还没时间看的书。

15.1 JavaScript

JavaScript 高级程序设计(高程就不多说了,第四版有英文版)

JavaScript 设计模式

你不知道的 JavaScript

JavaScript 语言精粹

高性能 JavaScript

Learning TypeScript 中文版

深入理解 ES6

ES6 标准入门

深入理解 JavaScript 特性

15.2 CSS

CSS 权威指南(建议看英文版)

精通 CSS 高级 Web 标准解决方案

CSS 世界(张鑫旭老师的大作,但是建议需要有一定 CSS 实践后再看)

15.3 Node

Node.js 实战

了不起的 Node.js

15.4 计算机基础

大话数据结构

图解 HTTP

计算机/程序是怎样跑起来的

学习 JavaScript 数据结构与算法

15.5 工程化/浏览器/软技能

前端工程化体系设计与实践

webpack 实战:入门、进阶与优化(了解一下 webpack 的所有会涉及到的知识点)

WebKit 技术内幕(讲浏览器的,挺好的)

重构:改善既有代码的涉及

码农翻身

程序员思维修炼

编码:隐匿在计算机软硬件背后的语言

写给大家看的设计书

技术之瞳:阿里巴巴技术笔试心得

你可能感兴趣的:(2020年前端面试复习必读)