2021届秋招哈啰出行前端面经(一面)
Posted lucifer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021届秋招哈啰出行前端面经(一面)相关的知识,希望对你有一定的参考价值。
面试过程
- 简单做个自我介绍吧。
- 面试官您好。。。
- 看到了你的项目经验,简单介绍一下你的项目吧。
- 。。。
- 你的项目中用到了 React,用的是那个版本呢?
- 用的 React 16.5(记错了,应该是 16.8)
- React 16.5 已经有 Hooks 了吗?
- 没有(场面一度十分尴尬,React 16.8.0 是第一个支持Hook 的版本)。
- Hooks 和 class 有哪些优势?
- 有时 class 里不用的生命周期函数中会出现相同的逻辑,使用 Hooks 使得代码更易维护。
lucifer 注: hooks 带来的优势一方面是赋予了函数式组件更多功能,使得其从功能上可完全替代 class 组件。 另一方面 hooks 创造了一种新的代码组织方式,和以前的 mixin 以及 render props 的出发点是类似的,但其注重相同功能的代码放到一起,使得代码逻辑复用多了一种选择。当然这其中有利有弊,由于篇幅限制,不在这里展开。
- 你用过 Hooks 的哪些方法?哪些函数?
- 用过 useEffect。
lucifer 注: 建议大家多讲几种,比如 useState, useCallback 等。
- useEffect 有什么特点?
- 使用 useEffect 可以模拟一些生命周期函数,比如 componentDidMount,componentDidUpdate,componentWillUnmount。
- react 的生命周期有哪些?
- 挂载时有 componentDidMount,更新的时候有 componentDidUpdate,shouldcomponentUpdate,卸载的时候有 componentWillUnmount 等。
- componentWillReceiveProps() 你了解过吗?
- 没有了解过。后来查文档说 componentWillReceiveProps() 不太常用。
- 当 Redux 中的数据发生变化时,哪几个生命周期会发生变化?或者解释一下 Redux 的运行机制?
- 乱答了一通……答得不好。其中谈到了 redux 主要用于复杂的数据流。
lucifer 注:推荐大家阅读 深入理解redux
- 复杂的数据流是指什么样的?
- 给自己挖了个坑,没太说明白,原因在于不了解 Redux 的应用场景,即为什么要使用 Redux。这篇文章 讲得挺好的,意思就是当我们的状态分布在多个组件中,跟踪这些组件的状态变得繁琐时,就可以使用 Redux 来统一管理了。
- webpack 平时做过哪些配置?
- 平时会设置 loader 和 plugin,用过插件 commonChunks 等。
- plugin 和 loader 有什么区别?
- loader 相当于一个模块转化器,比如将 less 文件转化为 css 文件,plugin 支持一些拓展的插件,比如 htmlWebpackplugin,commonChunks 等。
- loader 如何将 less 文件转化为 css 文件?
- 这里没搞清楚是问具体配置还是问原理,结果面试官就换下一个话题了。
lucifer 注:其实就是 ast 的解析和转化,具体内容大家可以搜索下相关文章。
- loader 的执行顺序是什么样的?
- 从右往左、从下往上。
lucifer 注:没看到从下到上什么意思。 不过 loader 的执行顺序是借鉴了 compose,函数式编程中的 compose 的结合顺序就是从右向左,而功能类似的 pipe 则是从左到右,大家常见的 linux 管道(pipe)就是从左到右。
- 我想配置一个单页应用,如何配置 entry 部分?
entry: {
// 这里写什么
}
- ES6 了解吗?let, const, Map, Set, 箭头函数等等。
- 下面的代码 b 等于什么?
let a = [1, 2, 4]
let b = a.map(v => { v= v*2 })
我先回答了 b = [1, 4, 8](脑子抽了,小学数学都算错),面试官问为什么不是 [2, 4, 8],我说说错了
以上是关于2021届秋招哈啰出行前端面经(一面)的主要内容,如果未能解决你的问题,请参考以下文章
2022届秋招,从被拒到上岸 | 谈谈YK菌在2021年的经历与收获
2022届秋招,从被拒到SP+ | 谈谈YK菌在2021年的经历与收获