Web3前端一面

时间:2026.06.05

  1. 项目中最复杂的点
  2. 人生中做到极致的事情
  3. 项目追问
  4. 项目中组件+业务逻辑的设计
  5. React状态管理,怎么选择最优,遇到过什么坑(Redux, context, mobx, hooks)
  6. setState执行过程
  7. React Fiber机制
  8. js事件循环
  9. url输入到页面展示发生了什么
  10. 浏览器性能优化策略
  11. monorepo的使用场景、优势
  12. 算法:memoizeOne
javascript 复制代码
/**
 * 题目:实现 memoizeOne
 *
 * 请实现一个函数 memoizeOne(fn),返回一个新函数
 *
 * 要求:
 * 1. 相同参数调用时返回缓存结果
 * 2. 只缓存最近一次调用
 * 3. 参数采用浅比较
 * 4. 保留 this
 */

/**
 * @param {Function} fn
 * @returns {Function}
 */
function memoizeOne(fn) {
  // TODO: 请在这里实现
  const map = new Map();
  return function(...args) {
    const _this = this;
    const key = JSON.stringify(args);
    if (map.has(key)) {
        return map.get(key);
    }
    else {
        const res = fn.apply(_this, args)
        map.set(key, res);
        return res;
    }
  }
}



/***********************
 * 以下为测试代码(可用于验证)
 ***********************/

function add(a, b) {
  console.log("computed");
  return a + b;
}

const memoAdd = memoizeOne(add);

console.log(memoAdd(1, 2)); // computed -> 3
console.log(memoAdd(1, 2)); // 3

console.log(memoAdd(2, 3)); // computed -> 5
console.log(memoAdd(2, 3)); // 5


// this 测试
const obj = {
  base: 10,
  calc(a, b) {
    console.log("run");
    return this.base + a + b;
  }
};

obj.memoCalc = memoizeOne(obj.calc);

console.log(obj.memoCalc(1, 2)); // run -> 13
console.log(obj.memoCalc(1, 2)); // 13
相关推荐
古韵4 小时前
告别手写分页逻辑:usePagination 从 50 行到 3 行
java·前端
小村儿4 小时前
连载12- Cluade code 的MCP 到底还用不用
前端·后端·ai编程
IT_陈寒4 小时前
Vite静态资源引用差点把我逼疯,原来要这样处理
前端·人工智能·后端
子兮曰4 小时前
WSL 配 GPU 用 Docker 的折腾指南(2026 年版)
linux·前端·后端
lantian4 小时前
TypeScript 三斜线指令完全指南:从入门到理解为什么不再需要它
前端·javascript·vue.js
鹏多多4 小时前
锐评CSDN最近上线的AI数字营销:烂完之前最后再捞一笔
前端·后端·程序员
先吃饱再说4 小时前
从 WeUI 按钮组件学 BEM 命名规范:让 CSS 不再难维护
前端·代码规范
槑有老呆5 小时前
从前端 HTTP 请求到 LLM 接口调用:一篇文章带你彻底搞懂
前端
陈_杨5 小时前
鸿蒙APP开发-带你走进旧物集的时间线与收藏管理
前端·javascript