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
相关推荐
康小汪7 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
智能运维指南8 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
白山编程大哥10 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Flynt10 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
Csvn11 小时前
bundle优化
前端
北冥有鱼11 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚11 小时前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户372037492601812 小时前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能12 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师12 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端