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
相关推荐
仿生狮子2 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
kyriewen2 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
Highcharts.js2 小时前
软件开发公司为什么选择 Highcharts?
前端·前端框架·echarts·数据可视化·技术选型·highcharts·图表工具
阿祖zu3 小时前
企业 AI 转型之痛,个人提效十倍不止,组织效率仍止步不前?
前端·aigc·agent
摇滚侠4 小时前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
酸梅果茶4 小时前
【6】lightning_lm项目-LIO 前端 -点云预处理模块
前端·slam
Hilaku4 小时前
前端大裁员背后的恐慌:我们还剩什么底牌?
前端·javascript·程序员
咖啡无伴侣5 小时前
unplugin-auto-import 使用详解+面试高频考点
前端·架构
搬砖记录员5 小时前
录屏文件打不开?H.265兼容性踩坑与4种实战方案
前端
明月_清风5 小时前
SEO 完全指南:从底层原理到实战应用场景
前端·seo