Appearance
2021年前端面试必读文章【超三百篇文章-赠复习导图】
本节目标:理解“2021年前端面试必读文章【超三百篇文章-赠复习导图】”的核心思路,并能把它用于实际开发或面试表达。
说明:原 OneNote 中有图片引用,但图片未包含在导出目录中;本页保留了可用的文字与代码内容。 2021年前端面试必读文章【超三百篇文章/赠复习导图】 转载请联系作者。原文链接 哈哈,之前是 2020 年必读文章,到了 2021 年了,感觉这些文章还都是经典,那就改个标题吧。[手动狗头] 前言 之前写过一篇 一年半经验如何准备阿里巴巴前端面试,给大家分享了一个面试复习导图,有很多朋友说希望能够针对每个 case 提供一个参考答案。
写答案就算了,一是精力有限,二是我觉得大家还是需要自己理解总结会比较好。 给大家整理了一下每个 case 一些还算不错的文章吧(还包括一些躺在我收藏夹里的好文章),大家可以自己看文章总结一下答案,这样也会理解更深刻。 并不是所有文章都需要看,希望是一个抛砖引玉的作用,大家也可以锻炼一下自己寻找有效资料的能力 ~ ( 文章排序不分前后,随机排序 ~
建议收藏文章,结合复习导图食用,效果更佳。 完整复习导图全展开太大了,可关注公众号「前端试炼」回复【面试】获取。
1. 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教程
asyncfunctionasync1() { console.log('async1 start'); awaitasync2(); console.log('async1 end');} // 相当于asyncfunctionasync1() { 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(constmacroTask ofmacroTaskQueue) { handleMacroTask(); for(constmicroTask ofmicroTaskQueue) { 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
3.2 生命周期
3.3 数据绑定
3.4 状态管理
3.5 组件通信
3.6 Virtual DOM
- Vue Virtual DOM 源码剖析
- 面试官: 你对虚拟DOM原理的理解?
- 让虚拟DOM和DOM-diff不再成为你的绊脚石
- 探索Virtual DOM的前世今生
- 虚拟 DOM 到底是什么?(长文建议收藏)
3.7 Diff
3.8 Vue 计算属性 VS 侦听属性
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
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
4.6 前端监控
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 来懒加载图片
欢迎关注公众号「前端试炼」,回复【面试】获取完整复习导图。公众号平时会分享一些实用或者有意思的东西,发现代码之美。专注深度和最佳实践,希望打造一个高质量的公众号。 > 来自 <https://juejin.cn/post/6844904116339261447>
