关于面试:2021届秋招哈啰出行前端面经一面

1次阅读

共计 2103 个字符,预计需要花费 6 分钟才能阅读完成。

面试过程

  1. 简略做个自我介绍吧。
  • 面试官您好。。。
  1. 看到了你的我的项目教训,简略介绍一下你的我的项目吧。
  • 。。。
  1. 你的我的项目中用到了 React,用的是那个版本呢?
  • 用的 React 16.5(记错了,应该是 16.8)
  1. React 16.5 曾经有 Hooks 了吗?
  • 没有(局面一度非常难堪,React 16.8.0 是第一个反对 Hook 的版本)。
  1. Hooks 和 class 有哪些劣势?
  • 有时 class 里不必的生命周期函数中会呈现雷同的逻辑,应用 Hooks 使得代码更易保护。

lucifer 注: hooks 带来的劣势一方面是赋予了函数式组件更多功能,使得其从性能上可齐全代替 class 组件。另一方面 hooks 发明了一种新的代码组织形式,和以前的 mixin 以及 render props 的出发点是相似的,但其重视雷同性能的代码放到一起,使得代码逻辑复用多了一种抉择。当然这其中有利有弊,因为篇幅限度,不在这里开展。

  1. 你用过 Hooks 的哪些办法?哪些函数?
  • 用过 useEffect。

lucifer 注: 倡议大家多讲几种,比方 useState, useCallback 等。

  1. useEffect 有什么特点?
  • 应用 useEffect 能够模仿一些生命周期函数,比方 componentDidMount,componentDidUpdate,componentWillUnmount。
  1. react 的生命周期有哪些?
  • 挂载时有 componentDidMount,更新的时候有 componentDidUpdate,shouldcomponentUpdate,卸载的时候有 componentWillUnmount 等。
  1. componentWillReceiveProps() 你理解过吗?
  • 没有理解过。起初查文档说 componentWillReceiveProps() 不太罕用。
  1. 当 Redux 中的数据发生变化时,哪几个生命周期会发生变化?或者解释一下 Redux 的运行机制?
  • 乱答了一通……答得不好。其中谈到了 redux 次要用于简单的数据流。

lucifer 注:举荐大家浏览 深刻了解 redux

  1. 简单的数据流是指什么样的?
  • 给本人挖了个坑,没太说明确,起因在于不理解 Redux 的利用场景,即为什么要应用 Redux。这篇文章 讲得挺好的,意思就是当咱们的状态散布在多个组件中,跟踪这些组件的状态变得繁琐时,就能够应用 Redux 来对立治理了。
  1. webpack 平时做过哪些配置?
  • 平时会设置 loader 和 plugin,用过插件 commonChunks 等。
  1. plugin 和 loader 有什么区别?
  • loader 相当于一个模块转化器,比方将 less 文件转化为 css 文件,plugin 反对一些拓展的插件,比方 HTMLWebpackplugin,commonChunks 等。
  1. loader 如何将 less 文件转化为 css 文件?
  • 这里没搞清楚是问具体配置还是问原理,后果面试官就换下一个话题了。

lucifer 注:其实就是 ast 的解析和转化,具体内容大家能够搜寻下相干文章。

  1. loader 的执行程序是什么样的?
  • 从右往左、从下往上。

lucifer 注:没看到从下到上什么意思。不过 loader 的执行程序是借鉴了 compose,函数式编程中的 compose 的联合程序就是从右向左,而性能相似的 pipe 则是从左到右,大家常见的 linux 管道(pipe)就是从左到右。

  1. 我想配置一个单页利用,如何配置 entry 局部?
entry: {// 这里写什么}
  1. ES6 理解吗?let, const, Map, Set, 箭头函数等等。
  2. 上面的代码 b 等于什么?
let a = [1, 2, 4]
let b = a.map(v => { v= v*2})

我先答复了 b = [1, 4, 8](脑子抽了,小学数学都算错),面试官问为什么不是 [2, 4, 8],我说说错了????

而后又说这样不对,因为箭头左边有个大括号。

其实下面代码中 b 是 [undefined, undefined, undefined],面试官疏导该怎么解决能力使 b 为 [2, 4, 8]。

答案就是如果箭头左边是打括号,须要在大括号内加一个 return 返回就行了。即上面的代码:


let a = [1, 2, 4]
let b = a.map(v => { v= v*2; return v;})

平时写 map 始终都没用过大括号,面试的时候才明确,我炸了!

  1. 理解事件循环吗?

lucifer 注:举荐浏览我之前写的《一文看懂浏览器事件循环》

  1. 有什么问题?

具体工作地点看本人安顿。杭州和上海。杭州次要负责算法平台的搭建和地图相干。技术栈是 React。

感触

面试官很和善,因为堵车来的较晚,还示意不好意思,面试时的感觉本人较长时间没有面试程度下滑,菜得一批,map 中如果是大括号应该加上 return 都不晓得,纠结了半天。总体还是依据简历来发问的,所以一个好的我的项目至关重要,我的项目不在于如许巨大,而是本人真正独立做了哪些局部,有播种才是最重要的。

lucifer 总结

因为是秋招,总体面试难度偏低。可能是一面的起因,就连编程和算法题也没有。面试中的大多数问题都是常见的问题,中规中矩。大家查缺补漏即可。之后会给大家带来更多面经。

大家也能够关注我的公众号《脑洞前端》获取更多更陈腐的前端硬核文章,带你意识你不晓得的前端。

正文完
 0