首页/文章/八股文

前端题目

2025-02-10
2702 字约 10 分钟
...

1. JavaScript 基础与深入


  • 闭包是什么?它有什么作用?

闭包是指一个函数可以“记住”并访问它定义时的作用域,而不是调用时的作用域。简单来说,就是函数与其外部作用域的变量一起形成的一个“封闭”环境。

作用:

• 闭包能够保存外部函数的局部变量,即使外部函数已经返回。

• 可以通过闭包来实现数据封装和私有变量


  • 解释 this 在不同情况下的含义,并举例说明。

  • 全局环境:this 指向全局对象(浏览器中为 window,Node.js 中为 global)。

  • 函数调用:普通函数中 this 指向全局对象(严格模式下为 undefined)。

  • 方法调用:this 指向调用该方法的对象。

  • 构造函数:this 指向新创建的实例。

  • 箭头函数:this 继承自外层函数的 this。


• JavaScript 的原型链是什么?它是如何工作的?

JavaScript 的原型链是一种对象间继承的机制。每个对象都有一个内部属性 [[Prototype]](可以通过 proto 或 Object.getPrototypeOf 访问),指向另一个对象。当访问对象的属性或方法时,JavaScript 引擎会沿着原型链查找,如果找不到就会继续查找父对象,直到查找到 null 为止。


• 事件冒泡与事件捕获的区别是什么?

事件冒泡(Bubbling)和事件捕获(Capturing)是 DOM 事件流中的两种传播模式:

• 事件捕获:事件从根元素开始向目标元素传递,先触发父元素的事件。

• 事件冒泡:事件从目标元素开始向根元素传递,先触发目标元素的事件。

==默认情况下,事件是冒泡的==,除非显式指定为捕获。


• 如何实现一个深拷贝?请给出代码实现。

function deepClone(obj) {
  if (obj === null || typeof obj !== 'object') return obj;
  let clone = Array.isArray(obj) ? [] : {};
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      clone[key] = deepClone(obj[key]);
    }
  }
  return clone;
}

• 解释 Promise 和 async/await 的区别,并举例说明。

• Promise:用于处理异步操作,通过 then 和 catch 链接回调函数来处理异步结果。

• async/await:是基于 Promise 的语法糖,使异步代码看起来像同步代码,更加简洁。


• bind、call、apply 三者的区别与应用场景。

• bind:返回一个新的函数,绑定 this。

• call:立即执行函数并绑定 this,可以传入参数。

• apply:与 call 类似,唯一的区别是 apply 接收一个数组作为参数。


• 如何优化 JavaScript 中的性能问题?举例说明。

• 避免频繁的 DOM 操作:批量修改 DOM 或使用 documentFragment。

• 事件委托:避免在多个子元素上绑定事件,可以将事件绑定到父元素。

• 防抖和节流:在频繁触发事件时,使用防抖和节流来减少函数调用次数。

• 懒加载:仅在需要时加载资源,例如图片和模块。

• 缓存机制:缓存计算结果或请求数据,减少重复计算或请求。


2. React 与 Vue


• React 中的 虚拟 DOM 是什么?它如何提高性能?

虚拟 DOM 是 React 的核心特性,它是对真实 DOM 的一种抽象表示。每当组件的状态或数据变化时,React 会首先在虚拟 DOM 中更新,然后与真实 DOM 进行比对,找出差异并只更新那些变化的部分。这样可以避免直接对真实 DOM 的频繁操作,从而提高性能。


• React 中的 setState 是同步的还是异步的?

在react合成事件和声明周期中是表现为异步

在原生事件和setTimeout中表现为同步


• 在 React 中,如何优化组件的渲染性能?

• Vue 中的响应式原理是什么?Vue 是如何检测数据变化的?

• 如何在 React 中实现父子组件之间的数据传递?

• React 中的 Hooks 与传统的类组件相比有什么优势?

• Vue 的生命周期函数有哪些,如何使用它们?

• 你如何理解 React 中的 Context API?何时需要使用它?

• React 中的 useEffect 使用场景及常见问题。

3. 前端性能优化

• 前端性能优化的常见手段有哪些?请简要描述并给出实例。

• 如何避免页面卡顿?哪些是会引起卡顿的常见原因?

• 什么是懒加载?如何实现图片和组件的懒加载?

• Web 页面如何进行代码拆分?如何通过动态 import 实现按需加载?

• 什么是浏览器的重排与重绘?如何减少它们的影响?

• 如何优化 Web 页面的首屏加载速度?

• 如何利用浏览器缓存来优化前端性能?

4. 前端工程化与构建工具

• Webpack 的工作原理是什么?如何优化构建性能?

• 如何使用 Babel 进行代码转换,Babel 的插件和 preset 有哪些?

• 前端模块化的实现方式有哪些?分别有什么特点?

• 你在项目中使用过哪些构建工具(如 Webpack、Vite、Parcel 等),它们的优缺点是什么?

• 如何使用 PostCSS 来优化 CSS 代码?

• 请解释一下 tree shaking 是什么?如何实现代码的 tree shaking?

5. CSS

• CSS 选择器的优先级是如何计算的?

• Flexbox 与 Grid 布局的区别是什么?

• 如何实现响应式设计?使用哪些 CSS 技巧或工具来实现?

• 请说出你常用的 CSS 预处理器和框架,以及它们的优缺点。

• 什么是 BEM 规范?你如何理解并在项目中应用它?

• CSS 动画和过渡的区别,以及使用场景。

• 如何避免 CSS 样式的冲突和层叠问题?

6. 版本控制与团队协作

• 你在项目中如何使用 Git 进行版本控制?请描述常用的 Git 操作。

• 如何解决 Git 冲突?如何使用 Git 进行团队协作?

• 你如何管理和处理 Git 中的分支?解释一下常见的 Git 工作流(如 Git Flow)。

• 你有没有使用过 CI/CD 流水线?它在前端开发中的作用是什么?

7. 项目管理与架构

• 如何设计一个大规模的前端项目架构?你会考虑哪些因素?

• 如何将前端代码模块化和组件化?

• 在团队协作中,你如何保证代码质量?如何进行代码审查?

• 你是如何进行单元测试的?使用了哪些工具或框架?

• 如何处理前端与后端的接口文档和协作?

• 如何处理跨浏览器兼容性问题?

8. Web 安全

• 你了解哪些常见的 Web 安全漏洞?例如 XSS 和 CSRF。

• 如何防止跨站脚本攻击(XSS)?

• 如何防止跨站请求伪造(CSRF)攻击?

• 如何处理用户敏感信息的加密与传输安全问题?

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
八股文2026-09-15
SSE 长链接频繁断连怎么处理
场景 AI 流式问答、实时通知、大模型 token 推送等场景下,前端通过 SSE(Server Sent Events)建立长链接接收服务端持续推送。但生产环境经常遇到: 用户网络切换(4G → WiFi、VPN 进出、地铁进隧道) Nginx 反代默认 60s 超时主动断开 云厂商负载均衡器(ALB、SLB)空闲连接清理 服务端网关 / 反代默认无 keep alive 优化 浏览器后台标签节流导致连接被回收 接口返回的事件流被中间...
面试
八股文2026-08-27
定时器按顺序播放多个音频,切后台音频会乱
本身不会补触发,但 它会被系统级冻结 ——iOS Safari 后台完全停止计时,切回前台后 只补执行一次 (不是不补,而是"缺失的中间状态补不上")。间隔短的不会出大问题, 间隔长的会出现"音频流被压缩" ——切回来后本该播 5 分钟的间隙,实际只过了 3 分钟,结果整段对不上。 核心原则 :定时器只能用来"提醒一次", 真正决定"该不该播"的是绝对时间戳 。 setTimeout 在后台会发生什么(按平台) | 平台 | 后台行为...
面试
八股文2026-08-27
线上项目白屏的原因
白屏的本质是 渲染管线某一环断了 ——可能是资源、JS、接口、路由、样式、兼容性任一环节出问题。排查按"控制台 → 网络 → DOM → 环境"四步定位。 本质(前端类比) 把网页想成一栋楼: 白屏 ≠ 一定是同一种原因——这是面试想听的层次。 六大类原因(按出现频率) | 类别 | 典型表现 | 真实案例 | | : | : | : | | ① 资源加载失败 | DOM 是空的 | 入口 JS 404、CDN 挂了、CSS 阻塞 |...
面试
八股文2026-08-27
背景图就是 1MB 大图,怎么优化
1MB 大背景图优化分 三步 :压缩体积(10 30x)、按需加载(按设备/视口/网速)、渲染期优化(GPU 合成)。背景图跟 不同——它是 CSS,不走浏览器的原生懒加载机制,得手动处理。 背景图 vs 的关键区别(先讲清楚这个) 这是面试官想听的"针对性认知"——背景图不是普通图片,不能套通用方案。 三步优化(按优先级) 第 1 步:压缩体积(最重要,立竿见影) 1MB 的来源一般是这几种 ,对应解决方案: | 原始问题 | 体积来...
面试
八股文2026-08-27
项目里很多图片和视频,怎么优化
图片视频优化分 四层 :网络层(CDN/格式)、加载层(懒加载/预加载)、渲染层(解码/缓存)、业务层(按需/降级)。面试要把这四层都讲到位才算有体系。 四层优化模型 第 1 层:网络层(省钱、省时间) 核心目标:让资源体积小、让用户拿到资源快 | 手段 | 作用 | 关键点 | | : | : | : | | 图片格式 | WebP/AVIF 比 JPEG 小 25 50% | 兼容 fallback | | 视频格式 | H.265...
面试
八股文2026-08-20
Embedding 向量模型:从语义表示到相似度计算
前言 大模型「读懂」文字靠的是 token,但 token 之间只有离散的编号关系,模型并不知道「苹果」和「李子」在语义上很近。要让程序能「理解」两段文字的相似程度,必须先把文本映射成一个 高维向量 ,再用几何方法比较。这一步就是 Embedding。 本篇基于我本地 今天的真实代码,从语义表示讲到余弦相似度,并复盘几个踩过的真实坑。 一、为什么需要 Embedding 传统关键词检索是「字面匹配」: Embedding 做的是「语义匹...
面试

评论

请登录后发表评论

去登录
加载评论中...