面试题库 词条目录
前端Wiki/词条/手写题集合

手写题集合

定义面试中要求现场手写实现的高频代码题集合,考察基本功与编码习惯

手写题高频清单:防抖节流、深拷贝、call/apply/bind、new、Promise 系列(all、race、重试)、发布订阅、数组扁平化、去重与排序、instanceof 等。答题套路是先确认输入输出与边界条件,写主流程,再补异常处理与测试用例,最后主动分析时间复杂度。

防抖与节流必须秒写:防抖是触发后延迟执行、期间再触发则重新计时;节流是固定时间间隔内最多执行一次。深拷贝要处理循环引用与特殊类型。写的时候注意变量命名清晰、边界判断完整,代码风格有时候比答案本身更影响面试官印象。

JavaScript
// 手写 call:把函数临时挂到传入对象上执行
Function.prototype.myCall = function (ctx, ...args) {
  ctx = ctx == null ? globalThis : Object(ctx);
  const key = Symbol('fn');
  ctx[key] = this;
  const ret = ctx[key](...args);
  delete ctx[key];
  return ret;
};

// 手写 bind:闭包保存 this 与参数
Function.prototype.myBind = function (ctx, ...args) {
  const fn = this;
  return function (...rest) { return fn.apply(ctx, [...args, ...rest]); };
};

function greet(g, name) { return g + ' ' + name + ' from ' + this.place; }
const host = { place: 'Beijing' };
console.log(greet.myCall(host, 'Hello', 'Lily'));   // Hello Lily from Beijing
console.log(greet.myBind(host, 'Hi')('Lucy'));      // Hi Lucy from Beijing
⚠ 常见误区
🔗 相关词条手写节流与防抖手写发布订阅与事件总线
← 返回来源章节手写节流与防抖