2.5年经验前端
- 美团
- 一面
- 自我介绍
- 项目简单问了下
- webpack插件了解多少,用过哪些,自己写过吗。
- 实现hook useRef
`
import { useEffect, useRef } from 'react'; function usePrev<T>(value: T): T | undefined { const ref = useRef<T>(); useEffect(() => { ref.current = value; }, [value]); return ref.current; } export default usePrev;
` 2. 二面
- 自我介绍
- 项目细节和架构问的比较细
- koa2的洋葱模型是怎么实现的
- 功能:在 Koa2 中,
koa - compose用于将多个中间件函数组合成一个单一的函数,使得请求在这些中间件之间依次传递,形成一个类似洋葱模型的处理流程。 - 原理:它接受一个中间件函数数组,然后返回一个新的函数。这个新函数在执行时,会按照数组中的顺序依次调用中间件函数,每个中间件函数可以访问到请求对象(
ctx)和下一个中间件函数(next),并且可以对请求和响应进行处理。 - 最后在提示下勉强写出来了 `
- 功能:在 Koa2 中,
function compose(middlewares) {
return function (ctx) {
// 初始索引为 - 1
let index = -1;
function dispatch(i) {
if (i <= index) {
return Promise.reject(new Error('next() called multiple times'));
}
index = i;
let fn = middlewares[i];
if (i === middlewares.length) {
fn = () => Promise.resolve();
}
if (!fn) {
return Promise.resolve();
}
try {
// 调用中间件并传递下一个中间件函数(dispatch)
return Promise.resolve(fn(ctx, () => dispatch(i + 1)));
} catch (e) {
return Promise.reject(e);
}
}
return dispatch(0);
};
}
3. 三面
- 业务leader看着比较忙一直在回信息。 算法题 接雨水 因为刷过 10分钟内就写出来,面试官还有点没缓过来
- 接主要问了项目里的角色和承担职责。项目遇到的困难和这么解决的(非代码层面)