跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScriptNode.js大前端算法

前端面试核心考点解析:JavaScript 原理、Vue 机制与性能优化

本文涵盖前端面试核心知识点,包括 JavaScript 闭包、事件循环、内存管理、Vue 响应式原理及虚拟 DOM 机制。内容涉及 CSS 布局技巧、网络请求状态码、性能优化策略如懒加载与缓存控制,以及常见安全问题防御。适合准备前端岗位的技术人员系统复习,掌握从基础语法到架构设计的实战要点。

星辰大海发布于 2026/4/6更新于 2026/5/2311 浏览
前端面试核心考点解析:JavaScript 原理、Vue 机制与性能优化

前端面试核心考点解析

JavaScript 基础与原理

闭包(Closure)

闭包是指函数能够访问并记住其外部作用域中的变量,即使外部函数已执行完毕。它由内部函数及其创建时的词法环境组成。

核心原理:

  • 作用域链:函数定义时记录词法环境,访问变量时沿链查找。
  • 变量持久化:闭包持有外部变量引用,阻止垃圾回收。
function outer() {
  let count = 0;
  function inner() {
    count++;
    console.log(count);
  }
  return inner;
}
const counter = outer();
counter(); // 输出 1
counter(); // 输出 2

常见用途:

  1. 私有变量封装:隐藏内部状态,仅暴露操作接口。
  2. 函数柯里化:将多参数函数转换为单参数链式调用。
  3. 事件处理:在回调中保留上下文变量。

陷阱与解决:

  • 循环问题:var 声明的变量在循环中共享同一引用。使用 let 或 IIFE 创建块级作用域可解决。
  • 内存泄漏:长期持有大对象引用。需及时解除引用或使用 WeakMap。

事件循环(Event Loop)

JavaScript 是单线程语言,通过事件循环机制处理异步任务。核心包括调用栈、宏任务队列和微任务队列。

执行流程:

  1. 同步任务进入调用栈执行。
  2. 调用栈清空后,执行所有微任务(如 Promise.then)。
  3. 执行一个宏任务(如 setTimeout),之后再次检查微任务。
  4. UI 渲染通常在宏任务之间进行。
console.log('1'); // 同步
setTimeout(() => console.(), ); 
.().( .()); 
.(); 

log
'2'
0
// 宏任务
Promise
resolve
then
() =>
console
log
'3'
// 微任务
console
log
'4'
// 同步
// 输出顺序:1 → 4 → 3 → 2

内存管理

内存泄漏指未使用的内存未被释放。常见原因包括全局变量污染、DOM 引用未清除、定时器未清理及闭包引用。

检测与排查:

  • 使用 Chrome DevTools Memory 面板分析 Heap Snapshot。
  • 避免意外全局变量,及时清除定时器和事件监听器。
  • 使用 WeakMap 存储临时数据。

Vue 框架机制

虚拟 DOM 与 Diff 算法

虚拟 DOM 是用 JS 对象描述真实 DOM 的技术。Vue 通过 Diff 算法对比新旧虚拟 DOM 树,最小化 DOM 操作。

Diff 策略:

  • 同层比较,不跨层级。
  • 利用 key 识别节点,优化列表更新。
  • 批量更新属性变化。

MVVM 模式

MVVM(Model-View-ViewModel)分离 UI 逻辑与业务逻辑。

  • Model:数据模型。
  • View:视图层。
  • ViewModel:连接 View 和 Model,处理双向绑定。

Vue2 与 Vue3 响应式原理

  • Vue2:基于 Object.defineProperty 劫持属性。无法检测新增/删除属性,数组修改需特殊处理。
  • Vue3:基于 Proxy 代理整个对象。支持全面拦截,性能更优,无需 Vue.set。
// Vue3 Proxy 示例
const data = { name: 'Vue3' };
const proxy = new Proxy(data, {
  get(target, key) {
    console.log('获取', key);
    return target[key];
  },
  set(target, key, newValue) {
    target[key] = newValue;
    return true;
  }
});

v-model 原理

v-model 是 v-bind 和 v-on 的语法糖,实现双向绑定。

<!-- 展开形式 -->
<input :value="message" @input="message = $event.target.value" />

组件通信

  • 父子:props 向下传递,$emit 向上触发。
  • 兄弟:Event Bus 或 Vuex。
  • 跨层级:provide / inject。
  • 全局:Vuex。

CSS 布局与样式

BFC(块级格式化上下文)

BFC 是独立的渲染区域,内部布局不影响外部。

触发条件:

  • 根元素。
  • float 不为 none。
  • position 为 absolute 或 fixed。
  • display 为 inline-block、flex、grid 等。
  • overflow 不为 visible。

应用场景:

  • 清除浮动。
  • 防止外边距重叠。
  • 自适应两栏布局。

盒模型

  • 标准盒模型:width 仅包含内容。
  • IE 盒模型:width 包含内容、padding 和 border。 建议统一使用 box-sizing: border-box。

选择器优先级

内联样式 > ID > 类/属性/伪类 > 元素/伪元素。注意 !important 会覆盖优先级规则。

工程化与网络

npm 依赖管理

  • dependencies:生产环境必需。
  • devDependencies:开发环境工具(如构建、测试)。
  • 版本控制:^ 允许次版本更新,~ 仅修订版本更新。

ES6 模块化

  • CommonJS:require/module.exports,同步加载,Node.js 原生。
  • ES Modules:import/export,静态加载,支持 Tree-shaking。

HTTP 缓存

  • 强缓存:Cache-Control、Expires,不请求服务器。
  • 协商缓存:ETag、Last-Modified,请求服务器验证。

跨域解决方案

  • CORS:服务器设置响应头。
  • JSONP:利用 script 标签(仅 GET)。
  • 代理:后端转发请求。
  • PostMessage:跨窗口通信。

性能优化

加载优化

  • 懒加载:图片、视频按需加载,减少初始体积。
  • 代码分割:动态导入,按需加载模块。
  • 资源压缩:Gzip/Brotli,WebP 图片格式。

运行时优化

  • 防抖节流:控制高频事件触发频率。
  • 虚拟列表:只渲染可视区域数据。
  • Web Workers:耗时任务后台执行,避免阻塞主线程。

关键指标

  • LCP:最大内容绘制。
  • FID:首次输入延迟。
  • CLS:累积布局偏移。

安全与兼容性

XSS 与 CSRF

  • XSS:注入恶意脚本。防御:输入过滤、输出编码、CSP 策略。
  • CSRF:伪造请求。防御:Token 验证、SameSite Cookie。

浏览器兼容

  • 使用 Babel 转译 ES6+。
  • 使用 Polyfill 补充新特性。
  • 使用 Autoprefixer 添加前缀。

本文涵盖前端面试核心知识点,包括 JavaScript 闭包、事件循环、内存管理、Vue 响应式原理及虚拟 DOM 机制。内容涉及 CSS 布局技巧、网络请求状态码、性能优化策略如懒加载与缓存控制,以及常见安全问题防御。适合准备前端岗位的技术人员系统复习,掌握从基础语法到架构设计的实战要点。

目录

  1. 前端面试核心考点解析
  2. JavaScript 基础与原理
  3. 闭包(Closure)
  4. 事件循环(Event Loop)
  5. 内存管理
  6. Vue 框架机制
  7. 虚拟 DOM 与 Diff 算法
  8. MVVM 模式
  9. Vue2 与 Vue3 响应式原理
  10. v-model 原理
  11. 组件通信
  12. CSS 布局与样式
  13. BFC(块级格式化上下文)
  14. 盒模型
  15. 选择器优先级
  16. 工程化与网络
  17. npm 依赖管理
  18. ES6 模块化
  19. HTTP 缓存
  20. 跨域解决方案
  21. 性能优化
  22. 加载优化
  23. 运行时优化
  24. 关键指标
  25. 安全与兼容性
  26. XSS 与 CSRF
  27. 浏览器兼容
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Java 二维数组按列排序及行列互换实现
  • Flutter 集成 Google 生成式 AI 适配鸿蒙 HarmonyOS 实战
  • DOM 详解:使用 JavaScript 操作网页元素的核心方法
  • 解决复杂查询难题:通过 Self-querying Prompting 优化 RAG 系统效率
  • Docker 安装指南与核心概念解析
  • 算法题讲解:位运算应用(两数之和、只出现一次的数字、消失的两个数字)
  • Axure 制作 AI 自动对话机器人原型教程
  • 前端首屏加载优化落地清单与实操指南
  • 智谱 GLM-5 与 MiniMax M2.5 深度对比评测
  • C/C++ 错误信息捕获与处理实战指南
  • Spring Web 模块核心概念与 RESTful API 调用详解
  • Python 启动器 py.exe 功能与使用指南
  • Flutter WebView 在 iOS 上点击失效问题的原因与解决方案
  • Java synchronized 全面解析:从入门使用到底层原理
  • C++ 核心基础特性详解:重载、引用、内联、auto 与 nullptr
  • Python 2026 发展趋势:AI 时代的通用基础设施语言
  • 字节 AI 战略深度解析与布局复盘
  • Visual C++运行库修复指南:解决程序启动失败问题
  • Dify 与 MySQL 深度整合:基于 MCP 协议的数据交互实践
  • C/C++ 错误处理机制与常用函数详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online