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
相关推荐
MomentYY3 分钟前
AI 到底是“懂”,还是在“猜”?
前端·人工智能·ai编程
鹏毓网络科技4 分钟前
Cursor Rules 文件配置实战:3 个隐藏参数让我每月少写 40% 样板代码
前端·github
没烦恼3016 分钟前
无痕模式下 HTTP\-First 拦截引发的“页面刷新”误判
前端
文心快码BaiduComate10 分钟前
从个人提效到组织提效:Comate辅助构建自我进化的AI研发系统
前端·程序员
hunterandroid1 小时前
Compose 状态管理:remember、rememberSaveable 与状态提升
前端
星栈1 小时前
Dioxus 接数据库最容易写歪的 3 个地方:sqlx + SQLite 怎么接才顺
前端·rust·前端框架
晴虹1 小时前
vue3-scroll-more:横向滚动条-元素或页签过多滚动显示处理的组件
前端·vue.js
代码搬运媛1 小时前
Claude 全栈开发专用 Rules 配置
前端
PedroQue991 小时前
uni-router v1.7.0重磅更新:守卫重定向自由掌控
前端·uni-app
逸铭1 小时前
Day 4:登录与 Token——桌面端怎么存密钥
前端·客户端