├── README.md
└── datum
└── summary.md
/README.md:
--------------------------------------------------------------------------------
1 | # Daily-Interview-Question
2 |
3 | 工作日每天一道前端大厂面试题,祝大家天天进步,一年后会看到不一样的自己。
4 |
5 | 欢迎 PR 你认为不错的面试题,欢迎在 Issue 区留下你的答案,共同参与这个伟大的项目。
6 |
7 |
8 |
9 |
10 | ## 今日面试题
11 |
12 | 2019-04-19
13 |
14 | > 第 58 题:箭头函数与普通函数(function)的区别是什么?构造函数(function)可以使用 new 生成实例,那么箭头函数可以吗?为什么?
15 |
16 | 欢迎在 Issue 区留下你的答案
17 |
18 |
19 |
20 |
21 | ## 本周汇总
22 |
23 | 2019-04-18
24 |
25 | > 第 57 题:分析比较 opacity: 0、visibility: hidden、display: none 优劣和适用场景。
26 |
27 | 解析:[第 57 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/100)
28 |
29 |
30 |
31 |
32 | 2019-04-17
33 |
34 | > 第 56 题:要求设计 LazyMan 类,实现以下功能。
35 |
36 | ```js
37 | LazyMan('Tony');
38 | // Hi I am Tony
39 |
40 | LazyMan('Tony').sleep(10).eat('lunch');
41 | // Hi I am Tony
42 | // 等待了10秒...
43 | // I am eating lunch
44 |
45 | LazyMan('Tony').eat('lunch').sleep(10).eat('dinner');
46 | // Hi I am Tony
47 | // I am eating lunch
48 | // 等待了10秒...
49 | // I am eating diner
50 |
51 | LazyMan('Tony').eat('lunch').eat('dinner').sleepFirst(5).sleep(10).eat('junk food');
52 | // Hi I am Tony
53 | // 等待了5秒...
54 | // I am eating lunch
55 | // I am eating dinner
56 | // 等待了10秒...
57 | // I am eating junk food
58 | ```
59 |
60 | 解析:[第 56 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/98)
61 |
62 |
63 |
64 |
65 |
66 | 2019-04-16
67 |
68 | > 第 55 题:某公司 1 到 12 月份的销售额存在一个对象里面,如下:{1:222, 2:123, 5:888},请把数据处理为如下结构:[222, 123, null, null, 888, null, null, null, null, null, null, null]。
69 |
70 | 解析:[第 55 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/96)
71 |
72 |
73 |
74 |
75 |
76 | 2019-04-15
77 |
78 | > 第 54 题:冒泡排序如何实现,时间复杂度是多少, 还可以如何改进?
79 |
80 | 解析:[第 54 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/94)
81 |
82 |
83 |
84 |
85 |
86 | ## 历史汇总
87 |
88 | - [前端面试题及答案汇总](https://github.com/Advanced-Frontend/Daily-Interview-Question/blob/master/datum/summary.md)
89 |
90 |
91 |
92 |
93 |
94 | ## 半月刊
95 |
96 | - [【半月刊 1】前端高频面试题及答案汇总](https://juejin.im/post/5c6977e46fb9a049fd1063dc)
97 | - [【半月刊 2】前端高频面试题及答案汇总](https://juejin.im/post/5c7bd72ef265da2de80f7f17)
98 | - [【半月刊 3】前端高频面试题及答案汇总](https://juejin.im/post/5c9ac3f66fb9a070e056718f)
99 | - [【半月刊 4】前端高频面试题及答案汇总](https://juejin.im/post/5cb3376bf265da039c0543da)
100 |
101 |
102 |
103 |
104 |
105 | ## 交流
106 |
107 | 进阶系列文章汇总如下,觉得不错点个 star,欢迎 **加群** 互相学习。
108 |
109 | > [https://github.com/yygmind/blog](https://github.com/yygmind/blog)
110 |
111 | 我是木易杨,公众号「高级前端进阶」作者,跟着我**每周重点攻克一个前端面试重难点**。接下来让我带你走进高级前端的世界,在进阶的路上,共勉!
112 |
113 | 
114 |
--------------------------------------------------------------------------------
/datum/summary.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - [前端面试题及答案汇总](#%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%8A%E7%AD%94%E6%A1%88%E6%B1%87%E6%80%BB)
6 | - [第 1 题:写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?](#%E7%AC%AC-1-%E9%A2%98%E5%86%99-react--vue-%E9%A1%B9%E7%9B%AE%E6%97%B6%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%9C%A8%E5%88%97%E8%A1%A8%E7%BB%84%E4%BB%B6%E4%B8%AD%E5%86%99-key%E5%85%B6%E4%BD%9C%E7%94%A8%E6%98%AF%E4%BB%80%E4%B9%88)
7 | - [第 2 题:`['1', '2', '3'].map(parseInt)` what & why ?](#%E7%AC%AC-2-%E9%A2%981-2-3mapparseint-what--why-)
8 | - [第 3 题:什么是防抖和节流?有什么区别?如何实现?](#%E7%AC%AC-3-%E9%A2%98%E4%BB%80%E4%B9%88%E6%98%AF%E9%98%B2%E6%8A%96%E5%92%8C%E8%8A%82%E6%B5%81%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0)
9 | - [第 4 题:介绍下 Set、Map、WeakSet 和 WeakMap 的区别?](#%E7%AC%AC-4-%E9%A2%98%E4%BB%8B%E7%BB%8D%E4%B8%8B-setmapweakset-%E5%92%8C-weakmap-%E7%9A%84%E5%8C%BA%E5%88%AB)
10 | - [第 5 题:介绍下深度优先遍历和广度优先遍历,如何实现?](#%E7%AC%AC-5-%E9%A2%98%E4%BB%8B%E7%BB%8D%E4%B8%8B%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E9%81%8D%E5%8E%86%E5%92%8C%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E9%81%8D%E5%8E%86%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0)
11 | - [第 6 题:请分别用深度优先思想和广度优先思想实现一个拷贝函数?](#%E7%AC%AC-6-%E9%A2%98%E8%AF%B7%E5%88%86%E5%88%AB%E7%94%A8%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%80%9D%E6%83%B3%E5%92%8C%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%80%9D%E6%83%B3%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E6%8B%B7%E8%B4%9D%E5%87%BD%E6%95%B0)
12 | - [第 7 题:ES5/ES6 的继承除了写法以外还有什么区别?](#%E7%AC%AC-7-%E9%A2%98es5es6-%E7%9A%84%E7%BB%A7%E6%89%BF%E9%99%A4%E4%BA%86%E5%86%99%E6%B3%95%E4%BB%A5%E5%A4%96%E8%BF%98%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB)
13 | - [第 8 题:setTimeout、Promise、Async/Await 的区别](#%E7%AC%AC-8-%E9%A2%98settimeoutpromiseasyncawait-%E7%9A%84%E5%8C%BA%E5%88%AB)
14 | - [第 9 题:Async/Await 如何通过同步的方式实现异步](#%E7%AC%AC-9-%E9%A2%98asyncawait-%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%90%8C%E6%AD%A5%E7%9A%84%E6%96%B9%E5%BC%8F%E5%AE%9E%E7%8E%B0%E5%BC%82%E6%AD%A5)
15 | - [第 10 题:异步笔试题](#%E7%AC%AC-10-%E9%A2%98%E5%BC%82%E6%AD%A5%E7%AC%94%E8%AF%95%E9%A2%98)
16 | - [第 11 题:算法手写题](#%E7%AC%AC-11-%E9%A2%98%E7%AE%97%E6%B3%95%E6%89%8B%E5%86%99%E9%A2%98)
17 | - [第 12 题:JS 异步解决方案的发展历程以及优缺点。](#%E7%AC%AC-12-%E9%A2%98js-%E5%BC%82%E6%AD%A5%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E7%9A%84%E5%8F%91%E5%B1%95%E5%8E%86%E7%A8%8B%E4%BB%A5%E5%8F%8A%E4%BC%98%E7%BC%BA%E7%82%B9)
18 | - [第 13 题:Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?](#%E7%AC%AC-13-%E9%A2%98promise-%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E6%98%AF%E5%90%8C%E6%AD%A5%E6%89%A7%E8%A1%8C%E8%BF%98%E6%98%AF%E5%BC%82%E6%AD%A5%E6%89%A7%E8%A1%8C%E9%82%A3%E4%B9%88-then-%E6%96%B9%E6%B3%95%E5%91%A2)
19 | - [第 14 题:情人节福利题,如何实现一个 new](#%E7%AC%AC-14-%E9%A2%98%E6%83%85%E4%BA%BA%E8%8A%82%E7%A6%8F%E5%88%A9%E9%A2%98%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA-new)
20 | - [第 15 题:简单讲解一下http2的多路复用](#%E7%AC%AC-15-%E9%A2%98%E7%AE%80%E5%8D%95%E8%AE%B2%E8%A7%A3%E4%B8%80%E4%B8%8Bhttp2%E7%9A%84%E5%A4%9A%E8%B7%AF%E5%A4%8D%E7%94%A8)
21 | - [第 16 题:谈谈你对TCP三次握手和四次挥手的理解](#%E7%AC%AC-16-%E9%A2%98%E8%B0%88%E8%B0%88%E4%BD%A0%E5%AF%B9tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B%E7%9A%84%E7%90%86%E8%A7%A3)
22 | - [第 17 题:A、B 机器正常连接后,B 机器突然重启,问 A 此时处于 TCP 什么状态](#%E7%AC%AC-17-%E9%A2%98ab-%E6%9C%BA%E5%99%A8%E6%AD%A3%E5%B8%B8%E8%BF%9E%E6%8E%A5%E5%90%8Eb-%E6%9C%BA%E5%99%A8%E7%AA%81%E7%84%B6%E9%87%8D%E5%90%AF%E9%97%AE-a-%E6%AD%A4%E6%97%B6%E5%A4%84%E4%BA%8E-tcp-%E4%BB%80%E4%B9%88%E7%8A%B6%E6%80%81)
23 | - [第 18 题:React 中 setState 什么时候是同步的,什么时候是异步的?](#%E7%AC%AC-18-%E9%A2%98react-%E4%B8%AD-setstate-%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E6%98%AF%E5%90%8C%E6%AD%A5%E7%9A%84%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E6%98%AF%E5%BC%82%E6%AD%A5%E7%9A%84)
24 | - [第 19 题:React setState 笔试题,下面的代码输出什么?](#%E7%AC%AC-19-%E9%A2%98react-setstate-%E7%AC%94%E8%AF%95%E9%A2%98%E4%B8%8B%E9%9D%A2%E7%9A%84%E4%BB%A3%E7%A0%81%E8%BE%93%E5%87%BA%E4%BB%80%E4%B9%88)
25 | - [第 20 题:介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块?](#%E7%AC%AC-20-%E9%A2%98%E4%BB%8B%E7%BB%8D%E4%B8%8B-npm-%E6%A8%A1%E5%9D%97%E5%AE%89%E8%A3%85%E6%9C%BA%E5%88%B6%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BE%93%E5%85%A5-npm-install-%E5%B0%B1%E5%8F%AF%E4%BB%A5%E8%87%AA%E5%8A%A8%E5%AE%89%E8%A3%85%E5%AF%B9%E5%BA%94%E7%9A%84%E6%A8%A1%E5%9D%97)
26 | - [第 21 题:有以下 3 个判断数组的方法,请分别介绍它们之间的区别和优劣](#%E7%AC%AC-21-%E9%A2%98%E6%9C%89%E4%BB%A5%E4%B8%8B-3-%E4%B8%AA%E5%88%A4%E6%96%AD%E6%95%B0%E7%BB%84%E7%9A%84%E6%96%B9%E6%B3%95%E8%AF%B7%E5%88%86%E5%88%AB%E4%BB%8B%E7%BB%8D%E5%AE%83%E4%BB%AC%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB%E5%92%8C%E4%BC%98%E5%8A%A3)
27 | - [第 22 题:介绍下重绘和回流(Repaint & Reflow),以及如何进行优化](#%E7%AC%AC-22-%E9%A2%98%E4%BB%8B%E7%BB%8D%E4%B8%8B%E9%87%8D%E7%BB%98%E5%92%8C%E5%9B%9E%E6%B5%81repaint--reflow%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96)
28 | - [第 23 题:介绍下观察者模式和订阅-发布模式的区别,各自适用于什么场景](#%E7%AC%AC-23-%E9%A2%98%E4%BB%8B%E7%BB%8D%E4%B8%8B%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F%E5%92%8C%E8%AE%A2%E9%98%85-%E5%8F%91%E5%B8%83%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%8C%BA%E5%88%AB%E5%90%84%E8%87%AA%E9%80%82%E7%94%A8%E4%BA%8E%E4%BB%80%E4%B9%88%E5%9C%BA%E6%99%AF)
29 | - [第 24 题:聊聊 Redux 和 Vuex 的设计思想](#%E7%AC%AC-24-%E9%A2%98%E8%81%8A%E8%81%8A-redux-%E5%92%8C-vuex-%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%80%9D%E6%83%B3)
30 | - [第 25 题:说说浏览器和 Node 事件循环的区别](#%E7%AC%AC-25-%E9%A2%98%E8%AF%B4%E8%AF%B4%E6%B5%8F%E8%A7%88%E5%99%A8%E5%92%8C-node-%E4%BA%8B%E4%BB%B6%E5%BE%AA%E7%8E%AF%E7%9A%84%E5%8C%BA%E5%88%AB)
31 | - [第 26 题:介绍模块化发展历程](#%E7%AC%AC-26-%E9%A2%98%E4%BB%8B%E7%BB%8D%E6%A8%A1%E5%9D%97%E5%8C%96%E5%8F%91%E5%B1%95%E5%8E%86%E7%A8%8B)
32 | - [第 27 题:全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?。](#%E7%AC%AC-27-%E9%A2%98%E5%85%A8%E5%B1%80%E4%BD%9C%E7%94%A8%E5%9F%9F%E4%B8%AD%E7%94%A8-const-%E5%92%8C-let-%E5%A3%B0%E6%98%8E%E7%9A%84%E5%8F%98%E9%87%8F%E4%B8%8D%E5%9C%A8-window-%E4%B8%8A%E9%82%A3%E5%88%B0%E5%BA%95%E5%9C%A8%E5%93%AA%E9%87%8C%E5%A6%82%E4%BD%95%E5%8E%BB%E8%8E%B7%E5%8F%96)
33 | - [第 28 题:cookie 和 token 都存放在 header 中,为什么不会劫持 token?](#%E7%AC%AC-28-%E9%A2%98cookie-%E5%92%8C-token-%E9%83%BD%E5%AD%98%E6%94%BE%E5%9C%A8-header-%E4%B8%AD%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E4%BC%9A%E5%8A%AB%E6%8C%81-token)
34 | - [第 29 题:聊聊 Vue 的双向数据绑定,Model 如何改变 View,View 又是如何改变 Model 的](#%E7%AC%AC-29-%E9%A2%98%E8%81%8A%E8%81%8A-vue-%E7%9A%84%E5%8F%8C%E5%90%91%E6%95%B0%E6%8D%AE%E7%BB%91%E5%AE%9Amodel-%E5%A6%82%E4%BD%95%E6%94%B9%E5%8F%98-viewview-%E5%8F%88%E6%98%AF%E5%A6%82%E4%BD%95%E6%94%B9%E5%8F%98-model-%E7%9A%84)
35 | - [第 30 题:两个数组合并成一个数组](#%E7%AC%AC-30-%E9%A2%98%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E5%90%88%E5%B9%B6%E6%88%90%E4%B8%80%E4%B8%AA%E6%95%B0%E7%BB%84)
36 | - [第 31 题:改造下面的代码,使之输出0 - 9,写出你能想到的所有解法。](#%E7%AC%AC-31-%E9%A2%98%E6%94%B9%E9%80%A0%E4%B8%8B%E9%9D%A2%E7%9A%84%E4%BB%A3%E7%A0%81%E4%BD%BF%E4%B9%8B%E8%BE%93%E5%87%BA0---9%E5%86%99%E5%87%BA%E4%BD%A0%E8%83%BD%E6%83%B3%E5%88%B0%E7%9A%84%E6%89%80%E6%9C%89%E8%A7%A3%E6%B3%95)
37 | - [第 32 题:Virtual DOM 真的比操作原生 DOM 快吗?谈谈你的想法。](#%E7%AC%AC-32-%E9%A2%98virtual-dom-%E7%9C%9F%E7%9A%84%E6%AF%94%E6%93%8D%E4%BD%9C%E5%8E%9F%E7%94%9F-dom-%E5%BF%AB%E5%90%97%E8%B0%88%E8%B0%88%E4%BD%A0%E7%9A%84%E6%83%B3%E6%B3%95)
38 | - [第 33 题:下面的代码打印什么内容,为什么?](#%E7%AC%AC-33-%E9%A2%98%E4%B8%8B%E9%9D%A2%E7%9A%84%E4%BB%A3%E7%A0%81%E6%89%93%E5%8D%B0%E4%BB%80%E4%B9%88%E5%86%85%E5%AE%B9%E4%B8%BA%E4%BB%80%E4%B9%88)
39 | - [第 34 题:简单改造下面的代码,使之分别打印 10 和 20。](#%E7%AC%AC-34-%E9%A2%98%E7%AE%80%E5%8D%95%E6%94%B9%E9%80%A0%E4%B8%8B%E9%9D%A2%E7%9A%84%E4%BB%A3%E7%A0%81%E4%BD%BF%E4%B9%8B%E5%88%86%E5%88%AB%E6%89%93%E5%8D%B0-10-%E5%92%8C-20)
40 | - [第 35 题:浏览器缓存读取规则](#%E7%AC%AC-35-%E9%A2%98%E6%B5%8F%E8%A7%88%E5%99%A8%E7%BC%93%E5%AD%98%E8%AF%BB%E5%8F%96%E8%A7%84%E5%88%99)
41 | - [第 36 题:使用迭代的方式实现 flatten 函数。](#%E7%AC%AC-36-%E9%A2%98%E4%BD%BF%E7%94%A8%E8%BF%AD%E4%BB%A3%E7%9A%84%E6%96%B9%E5%BC%8F%E5%AE%9E%E7%8E%B0-flatten-%E5%87%BD%E6%95%B0)
42 | - [第 37 题:为什么 Vuex 的 mutation 和 Redux 的 reducer 中不能做异步操作?](#%E7%AC%AC-37-%E9%A2%98%E4%B8%BA%E4%BB%80%E4%B9%88-vuex-%E7%9A%84-mutation-%E5%92%8C-redux-%E7%9A%84-reducer-%E4%B8%AD%E4%B8%8D%E8%83%BD%E5%81%9A%E5%BC%82%E6%AD%A5%E6%93%8D%E4%BD%9C)
43 | - [第 38 题:下面代码中 a 在什么情况下会打印 1?](#%E7%AC%AC-38-%E9%A2%98%E4%B8%8B%E9%9D%A2%E4%BB%A3%E7%A0%81%E4%B8%AD-a-%E5%9C%A8%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%E4%B8%8B%E4%BC%9A%E6%89%93%E5%8D%B0-1)
44 | - [第 39 题:介绍下 BFC 及其应用。](#%E7%AC%AC-39-%E9%A2%98%E4%BB%8B%E7%BB%8D%E4%B8%8B-bfc-%E5%8F%8A%E5%85%B6%E5%BA%94%E7%94%A8)
45 | - [第 40 题:在 Vue 中,子组件为何不可以修改父组件传递的 Prop](#%E7%AC%AC-40-%E9%A2%98%E5%9C%A8-vue-%E4%B8%AD%E5%AD%90%E7%BB%84%E4%BB%B6%E4%B8%BA%E4%BD%95%E4%B8%8D%E5%8F%AF%E4%BB%A5%E4%BF%AE%E6%94%B9%E7%88%B6%E7%BB%84%E4%BB%B6%E4%BC%A0%E9%80%92%E7%9A%84-prop)
46 | - [第 41 题:下面代码输出什么](#%E7%AC%AC-41-%E9%A2%98%E4%B8%8B%E9%9D%A2%E4%BB%A3%E7%A0%81%E8%BE%93%E5%87%BA%E4%BB%80%E4%B9%88)
47 | - [第 42 题:实现一个 sleep 函数](#%E7%AC%AC-42-%E9%A2%98%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA-sleep-%E5%87%BD%E6%95%B0)
48 | - [第 43 题:使用 sort() 对数组 [3, 15, 8, 29, 102, 22] 进行排序,输出结果](#%E7%AC%AC-43-%E9%A2%98%E4%BD%BF%E7%94%A8-sort-%E5%AF%B9%E6%95%B0%E7%BB%84-3-15-8-29-102-22-%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C)
49 | - [第 44 题:介绍 HTTPS 握手过程](#%E7%AC%AC-44-%E9%A2%98%E4%BB%8B%E7%BB%8D-https-%E6%8F%A1%E6%89%8B%E8%BF%87%E7%A8%8B)
50 | - [第 45 题:HTTPS 握手过程中,客户端如何验证证书的合法性](#%E7%AC%AC-45-%E9%A2%98https-%E6%8F%A1%E6%89%8B%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%E8%AF%81%E4%B9%A6%E7%9A%84%E5%90%88%E6%B3%95%E6%80%A7)
51 | - [第 46 题:输出以下代码执行的结果并解释为什么](#%E7%AC%AC-46-%E9%A2%98%E8%BE%93%E5%87%BA%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E7%9A%84%E7%BB%93%E6%9E%9C%E5%B9%B6%E8%A7%A3%E9%87%8A%E4%B8%BA%E4%BB%80%E4%B9%88)
52 | - [第 47 题:双向绑定和 vuex 是否冲突](#%E7%AC%AC-47-%E9%A2%98%E5%8F%8C%E5%90%91%E7%BB%91%E5%AE%9A%E5%92%8C-vuex-%E6%98%AF%E5%90%A6%E5%86%B2%E7%AA%81)
53 | - [第 48 题:call 和 apply 的区别是什么,哪个性能更好一些](#%E7%AC%AC-48-%E9%A2%98call-%E5%92%8C-apply-%E7%9A%84%E5%8C%BA%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88%E5%93%AA%E4%B8%AA%E6%80%A7%E8%83%BD%E6%9B%B4%E5%A5%BD%E4%B8%80%E4%BA%9B)
54 | - [第 49 题:为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片?](#%E7%AC%AC-49-%E9%A2%98%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%9A%E5%B8%B8%E5%9C%A8%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%E5%9F%8B%E7%82%B9%E8%AF%B7%E6%B1%82%E7%9A%84%E6%97%B6%E5%80%99%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF-1x1-%E5%83%8F%E7%B4%A0%E7%9A%84%E9%80%8F%E6%98%8E-gif-%E5%9B%BE%E7%89%87)
55 | - [第 50 题:实现 (5).add(3).minus(2) 功能。](#%E7%AC%AC-50-%E9%A2%98%E5%AE%9E%E7%8E%B0-5add3minus2-%E5%8A%9F%E8%83%BD)
56 | - [第 51 题:Vue 的响应式原理中 Object.defineProperty 有什么缺陷?](#%E7%AC%AC-51-%E9%A2%98vue-%E7%9A%84%E5%93%8D%E5%BA%94%E5%BC%8F%E5%8E%9F%E7%90%86%E4%B8%AD-objectdefineproperty-%E6%9C%89%E4%BB%80%E4%B9%88%E7%BC%BA%E9%99%B7)
57 | - [第 52 题:怎么让一个 div 水平垂直居中](#%E7%AC%AC-52-%E9%A2%98%E6%80%8E%E4%B9%88%E8%AE%A9%E4%B8%80%E4%B8%AA-div-%E6%B0%B4%E5%B9%B3%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD)
58 | - [第 53 题:输出以下代码的执行结果并解释为什么](#%E7%AC%AC-53-%E9%A2%98%E8%BE%93%E5%87%BA%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%E7%9A%84%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C%E5%B9%B6%E8%A7%A3%E9%87%8A%E4%B8%BA%E4%BB%80%E4%B9%88)
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | ## 前端面试题及答案汇总
67 |
68 |
69 |
70 | ### 第 1 题:写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?
71 |
72 | 解析:[第 1 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/1)
73 |
74 |
75 |
76 |
77 |
78 | ### 第 2 题:`['1', '2', '3'].map(parseInt)` what & why ?
79 |
80 | 解析:[第 2 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/4)
81 |
82 |
83 |
84 |
85 |
86 | ### 第 3 题:什么是防抖和节流?有什么区别?如何实现?
87 |
88 | 解析:[第 3 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/5)
89 |
90 |
91 |
92 |
93 |
94 | ### 第 4 题:介绍下 Set、Map、WeakSet 和 WeakMap 的区别?
95 |
96 | 解析:[第 4 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/6)
97 |
98 |
99 |
100 |
101 |
102 | ### 第 5 题:介绍下深度优先遍历和广度优先遍历,如何实现?
103 |
104 | 解析:[第 5 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/9)
105 |
106 |
107 |
108 |
109 |
110 | ### 第 6 题:请分别用深度优先思想和广度优先思想实现一个拷贝函数?
111 |
112 | 解析:[第 6 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/10)
113 |
114 |
115 |
116 |
117 |
118 | ### 第 7 题:ES5/ES6 的继承除了写法以外还有什么区别?
119 |
120 | 解析:[第 7 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/20)
121 |
122 |
123 |
124 |
125 |
126 | ### 第 8 题:setTimeout、Promise、Async/Await 的区别
127 |
128 | 解析:[第 8 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/33)
129 |
130 |
131 |
132 |
133 |
134 | ### 第 9 题:Async/Await 如何通过同步的方式实现异步
135 |
136 | 欢迎在 Issue 区留下你的答案。
137 |
138 |
139 |
140 |
141 |
142 | ### 第 10 题:异步笔试题
143 |
144 | > 请写出下面代码的运行结果
145 |
146 | ```js
147 | async function async1() {
148 | console.log('async1 start');
149 | await async2();
150 | console.log('async1 end');
151 | }
152 | async function async2() {
153 | console.log('async2');
154 | }
155 | console.log('script start');
156 | setTimeout(function() {
157 | console.log('setTimeout');
158 | }, 0)
159 | async1();
160 | new Promise(function(resolve) {
161 | console.log('promise1');
162 | resolve();
163 | }).then(function() {
164 | console.log('promise2');
165 | });
166 | console.log('script end');
167 | ```
168 |
169 | 解析:[第 10 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/7)
170 |
171 |
172 |
173 |
174 |
175 | ### 第 11 题:算法手写题
176 |
177 | > 已知如下数组:
178 | >
179 | > var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
180 | >
181 | > 编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
182 |
183 | 解析:[第 11 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/8)
184 |
185 |
186 |
187 |
188 |
189 | ### 第 12 题:JS 异步解决方案的发展历程以及优缺点。
190 |
191 | 解析:[第 12 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/11)
192 |
193 |
194 |
195 |
196 |
197 | ### 第 13 题:Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?
198 |
199 | 解析:[第 13 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/19)
200 |
201 |
202 |
203 |
204 |
205 | ### 第 14 题:情人节福利题,如何实现一个 new
206 |
207 | 解析:[第 14 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/12)
208 |
209 |
210 |
211 |
212 |
213 | ### 第 15 题:简单讲解一下http2的多路复用
214 |
215 | 解析:[第 15 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/14)
216 |
217 |
218 |
219 |
220 |
221 | ### 第 16 题:谈谈你对TCP三次握手和四次挥手的理解
222 |
223 | 解析:[第 16 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/15)
224 |
225 |
226 |
227 |
228 |
229 | ### 第 17 题:A、B 机器正常连接后,B 机器突然重启,问 A 此时处于 TCP 什么状态
230 |
231 | > 如果A 与 B 建立了正常连接后,从未相互发过数据,这个时候 B 突然机器重启,问 A 此时处于 TCP 什么状态?如何消除服务器程序中的这个状态?(超纲题,了解即可)
232 |
233 | 解析:[第 17 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/21)
234 |
235 |
236 |
237 |
238 |
239 | ### 第 18 题:React 中 setState 什么时候是同步的,什么时候是异步的?
240 |
241 | 解析:[第 18 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/17)
242 |
243 |
244 |
245 |
246 |
247 | ### 第 19 题:React setState 笔试题,下面的代码输出什么?
248 |
249 | ```js
250 | class Example extends React.Component {
251 | constructor() {
252 | super();
253 | this.state = {
254 | val: 0
255 | };
256 | }
257 |
258 | componentDidMount() {
259 | this.setState({val: this.state.val + 1});
260 | console.log(this.state.val); // 第 1 次 log
261 |
262 | this.setState({val: this.state.val + 1});
263 | console.log(this.state.val); // 第 2 次 log
264 |
265 | setTimeout(() => {
266 | this.setState({val: this.state.val + 1});
267 | console.log(this.state.val); // 第 3 次 log
268 |
269 | this.setState({val: this.state.val + 1});
270 | console.log(this.state.val); // 第 4 次 log
271 | }, 0);
272 | }
273 |
274 | render() {
275 | return null;
276 | }
277 | };
278 | ```
279 |
280 | 解析:[第 19 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/18)
281 |
282 |
283 |
284 |
285 |
286 | ### 第 20 题:介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块?
287 |
288 | 解析:[第 20 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/22)
289 |
290 |
291 |
292 |
293 |
294 | ### 第 21 题:有以下 3 个判断数组的方法,请分别介绍它们之间的区别和优劣
295 |
296 | > Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()
297 |
298 | 解析:[第 21 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/23)
299 |
300 |
301 |
302 |
303 |
304 | ### 第 22 题:介绍下重绘和回流(Repaint & Reflow),以及如何进行优化
305 |
306 | 解析:[第 22 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/24)
307 |
308 |
309 |
310 |
311 |
312 | ### 第 23 题:介绍下观察者模式和订阅-发布模式的区别,各自适用于什么场景
313 |
314 | 解析:[第 23 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/25)
315 |
316 |
317 |
318 |
319 |
320 | ### 第 24 题:聊聊 Redux 和 Vuex 的设计思想
321 |
322 | 解析:[第 24 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/45)
323 |
324 |
325 |
326 |
327 |
328 | ### 第 25 题:说说浏览器和 Node 事件循环的区别
329 |
330 | 解析:[第 25 题](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/26)
331 |
332 |
333 |
334 | ### 第 26 题:介绍模块化发展历程
335 |
336 | 可从IIFE、AMD、CMD、CommonJS、UMD、webpack(require.ensure)、ES Module、`