前言
笔试时间:2024-1-20 周六
面试时间:2024-1-25 周四
面试题
-
自我介绍
5mins -
项目经历介绍
40mins这么久面试以来,这位面试官是最特别的,他似乎真的对你的项目很感兴趣,我猜他会代入你的角色去思考这个项目如何进行,面试官会刨根问底问你这个地方如何实现的,遇到困难团队又是如何沟通的,真的会问的非常细致,这是我在别的公司面试从没见过的现象
-
笔试题回顾
20mins第一题是实现模板编译(html转AST)
现场提问: 1.状态机是什么? 2.如果我需要你处理className类名怎么做? 在处理标签名的函数中补充逻辑第二题是实现webpack底层算法的依赖循环构建(算法:处理依赖循环)
现场提问: 1.说一下你的思路 -
综合场景题
30mins用React实现瀑布流布局,在header中有个input框,搜索返回的卡片数据在body的瀑布流中三栏渲染。
1. input的监听事件是 onChange 这里提问了事件机制、合成事件、事件委托的绑定位置 2. onChange需要防抖,手写了debounce函数 3. onChange = debounce( (event) => {}, 1000 ) 我直接这样写,event能拿到是合成事件, 但是解构的写法拿不到 onChange = debounce( ({ target: { value } }) => {}, 1000 ) 我不知道为什么 4. 还是上面这个写法,里面有个setData(),会导致rerender,然后debounce会被重新创建导致节流失效 不过复现需要在某个契机,我不知道是什么契机? 让我写个react版本的debounce,我说要用useMemo/useCallback,然后不会写,到这里放弃了。 -
反问
5mins1. 您对中级工程师的定位是怎样的?怎么样去突破? 中级工程师需要在某个细化的领域沉淀,要有自己的突出亮点,比如你做的音视频方向。 在前两三年可以多接触一些,然后就必须要在某个细化的领域内有所成就了。 (通过这里可以看出,其实中级工程师一般对标3-5年经验) 2.
总计时长:100mins
总结
这是一次失败的面试经历,瀑布流布局是我曾实现过的业务,但是放在React中就不会了,这说明我对React的实践经验还严重不足
笔试题写的也非常痛苦,但最后写出来后也收益良多,这也表示我们其实很有必要看一看偏底层的实现方法
面试过程中,面试官的情绪和反馈都非常积极,你能够明显的感受到一种正向的能量场,无论是我的hr还是面试官,他们的情绪都非常饱满。这也是为什么我非常期望能够加入到这个团队。
以后面试的过程中,或许也能从对方的状态管中窥豹,以此来推测团队中的氛围。