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
相关推荐
志尊宝15 小时前
Vue3 零基础每日笔记(027):组件上的 v-model——让自定义组件也能双向绑定
前端·javascript·vue.js·笔记·html5
萧行之17 小时前
可视化技术复盘:从图形语法看 D3、Vega-Lite、ECharts、Observable Plot
前端·学习·数据可视化
尾善爱看海1 天前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
驳是1 天前
一个组件,提升 react-router 开发的幸福感
前端·preact
GreenTea1 天前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
星云API技术支持1 天前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
京东云开发者1 天前
81.8 秒的视频,我们改了 15 个版本:一次纯 Codex 驱动的 AI-native 视频实践
前端·aigc
Csvn1 天前
TypeScript 大型项目架构:从单体 tsconfig 到分层可扩展的工程
前端
计算机魔术师1 天前
Dario Amodei 发文呼吁为前沿 AI 降速并提出三点计划
前端
计算机魔术师1 天前
OpenAI的AI代理偷偷给RubyGems下毒,我们却毫无察觉
前端