一面
面试类型 | 面试时长 |
---|---|
技术面 | 1.5 小时 |
- 说出你知道的所有的 HTTP 协议的状态码;
- 浏览器缓存机制、强缓存、协商缓存等;
- Promise 有几种状态;
- Promise 有什么优缺点;
- 为什么要使用 redux 进行状态管理,你在哪些业务中使用了 redux ;
- 不使用状态管理的话,还可以通过什么方式去实现组件的状态共享;
- Context 及 use Context 的使用;
- react 中你用过哪些 hooks ;
- useEffect 有哪些参数,如何使用 useEffect 去实现类组件的部分生命周期方法;
- Hooks 执行顺序问题(不要在条件语句里使用 hooks );
- webpack 你用过哪些插件,介绍一下各个插件;
- 编程题:
- 编写一个函数,将给定数组中的对象
[{ a: 1 }, { b: 2 }, ....
合并成{ a: 1, b: 2, ... }
; - 能不能用一些原生的方法去实现呢?
- 编写一个函数,将给定数组中的对象
- 编程题:
- 实现函数
removeElement( arr, target )
将数组arr
中的target
元素全部移除; - 要求使用原地算法;
- 实现函数
二面
面试类型 | 面试时长 |
---|---|
技术面 | 2 小时 |
- 主要是业务面试相关问题:
- 你在开发中遇到了哪些问题,你是怎么查找原因的,最后用了什么方式去解决的;
- 涉及了 webpack 打包效率提升、打包结果优化等;
- 再就是对前端行业的一些看法,为啥选择做前端等问题;
- 编程题:
- 给定数组
arr = [ [ 2, 6, -1 ], [ 1, 5 ], [ 7, 7, [ 2, 3 ] ] ]
; - 调用
sum(arr)
返回结果为32
,即将给定数组完全拍扁平并求和; - 请实现该
sum()
函数;
- 给定数组
- 编程题:
- 已提供一个方法
function add(a, b, callback) {}
,该方法接收三个参数; - 第三个参数
callback
中传入的回调函数可以拿到前两个参数a
和b
的和; - 即
add(3, 5, (result) => { console.log(result) })
最终会在控制台输出 8 ; - 并不是要求你实现
add
方法,要求调用sum(1, 2, 3, 4).then(result => { console.log(result) })
最终在控制台打印1 + 2 + 3 + 4
的结果,即打印10
; - 限制条件:
add
始终都只能计算两个数的和,并作为第三个参数回调函数的参数;sum
方法参数接收到的参数个数是不固定的;sum
方法的方法体内必须使用前面提供的add
方法来实现求和;sum
方法最终会返回一个Promise
对象,最终要在返回的这个Promise
的then
方法的resolve
回调中接收到计算结果;
- 已提供一个方法
三面
面试类型 | 面试时长 |
---|---|
Leader 面 | 0.5 小时 |