前端面试题

光影博客收录的前端面试题高频题与参考解析,搜索时也会写成前端面经、前端面试。下面是站内已有题目,可继续在面试题里按这个词刷。

在面试题中打开共 53 道,本页展示 12 道

  1. var、let、const 三者有什么区别?

    JavaScript · 简单

    var 函数作用域+变量提升+可重复声明;let 块级作用域+暂时性死区;const 块级作用域+不可重新赋值但引用类型内容可变。推荐 const 优先,需重新赋值用 let。

  2. 什么是闭包 (Closure)?有哪些应用场景?

    JavaScript · 中等

    闭包是内部函数引用外部函数变量的特性,即使外部函数已返回。应用:数据封装、柯里化、防抖节流、模块模式。注意避免内存泄漏。

  3. JavaScript 事件循环 (Event Loop) 的执行机制?

    JavaScript · 困难

    单线程通过事件循环处理异步:同步代码 → 微任务(Promise.then/MutationObserver)→ 宏任务(setTimeout/I/O)。每轮宏任务后清空所有微任务。

  4. Promise 与 async/await 的关系和区别?

    JavaScript · 中等

    Promise 用 then/catch 链式处理异步;async/await 是语法糖,让异步代码像同步编写。await 只能在 async 函数中使用,底层仍是 Promise。

  5. 原型链与继承是如何工作的?

    JavaScript · 中等

    每个对象有 __proto__ 指向构造函数的 prototype,形成原型链。属性查找沿链向上直到 null。ES6 class 本质是原型继承的语法糖。

  6. 深拷贝与浅拷贝有什么区别?

    JavaScript · 简单

    浅拷贝只复制第一层引用(Object.assign/展开运算符),深拷贝递归复制所有层级。方案:structuredClone()、JSON 序列化(有限制)、递归实现。

  7. this 的指向有哪些规则?

    JavaScript · 中等

    默认指向全局(严格模式 undefined);对象方法指向调用者;箭头函数继承外层 this;call/apply/bind 可显式绑定;new 指向新实例。

  8. 防抖 (Debounce) 与节流 (Throttle) 的区别?

    JavaScript · 简单

    防抖:事件停止触发后延迟执行(搜索框输入);节流:固定间隔内只执行一次(滚动事件)。防抖用 clearTimeout + setTimeout,节流用时间戳或定时器。

  9. type 与 interface 有什么区别?

    TypeScript · 简单

    interface 只能定义对象/函数类型,支持声明合并和 extends;type 可定义任意类型(联合/交叉/元组等),用 & 交叉。建议对象用 interface,联合类型用 type。

  10. 常用的工具类型 (Utility Types) 有哪些?

    TypeScript · 中等

    Partial<T> 全可选、Required<T> 全必填、Pick<T,K> 选取、Omit<T,K> 排除、Record<K,V> 键值映射、ReturnType<T> 返回类型、Parameters<T> 参数类型。

  11. 泛型 (Generics) 有哪些常见使用场景?

    TypeScript · 中等

    泛型是类型参数化,让函数/类/接口处理多种类型而不丢失类型信息。场景:API 响应封装 Response<T>、通用组件 Props、工具函数、状态管理。

  12. 类型守卫与类型收窄是什么?

    TypeScript · 中等

    typeof 判断基本类型、instanceof 判断实例、in 判断属性存在、自定义类型谓词 is。类型守卫在条件分支内自动收窄类型,避免不必要的类型断言。

主页
分类
资源
合作
关于