前端面经经典Top100

81 阅读7分钟

一、网络与浏览器原理

1.1 HTTP相关

  • HTTP状态码详解 :301/302/304/401/403/404/500等状态码的含义及适用场景
  • GET与POST的区别 :从语义、安全性、参数传递、缓存机制等多维度分析
  • HTTP/1.1、HTTP/2、HTTP/3的演进 :多路复用、头部压缩、服务器推送、QUIC协议等
  • HTTPS的加密原理 :TLS/SSL握手过程、证书体系、中间人攻击防护
  • 浏览器的同源策略 :定义、目的及如何处理跨域问题
  • tcp三次握手,四次挥手
  • dns解析过程大概是什么样的
  • 请问什么是跨域?跨域请求资源有几哪种方式?
  • cookie 和 session的概念(cookie怎么防止CSRF攻击)

1.2 浏览器原理

  • 浏览器的事件循环机制 :宏任务与微任务的执行顺序、异步编程模型
  • 浏览器缓存策略 :强制缓存、协商缓存、Service Worker缓存
  • 浏览器存储机制比较 :Cookie、LocalStorage、SessionStorage、IndexedDB
  • 浏览器的多进程架构 :渲染进程、浏览器进程、GPU进程等职责分工
  • Web Worker与Service Worker :使用场景与区别
  • 输入url 到渲染的过程(有什么手段可以缩短这整个过程吗)
  • 盒模型
  • 重绘重排区别,什么情况引起?
  • 浏览器请求数量限制了解吗?

二、JavaScript核心

2.1 基础概念

  • 闭包的原理与应用 :定义、内存泄漏问题、实际应用场景
  • 原型与原型链 :原型对象、继承机制、__proto__prototype区别
  • this指向问题 :普通函数、箭头函数、构造函数中的this指向
  • Promise的实现原理 :状态管理、链式调用、错误处理
  • ES6新特性 :let/const、解构赋值、箭头函数、async/await等
  • js基本数据类型有哪些(基本不问)
  • == 和 ===的区别,分别在什么情况下使用(基本不问)
  • typeof 与 instanceof 区别(基本不问)
  • 如何判断一个对象是否是数组(基本不问)
  • 普通函数和箭头函数区别有哪些(基本不问)
  • 事件委托(事件冒泡和捕获)(基本不问)

2.2 高级特性

  • 深浅拷贝的实现 :深拷贝与浅拷贝的区别、实现方法及性能考量
  • 防抖与节流 :实现原理、区别及应用场景
  • 垃圾回收机制 :标记清除、引用计数、内存泄漏防范
  • 模块化开发 :CommonJS、ES Module、AMD/CMD的区别
  • 设计模式在前端的应用 :单例模式、工厂模式、观察者模式等
  • 什么是闭包,解决什么问题
  • js垃圾回收机制大概是什么样的(大概了解就行)
  • 前端常见的内存泄露有哪些

2.3 异步编程(高频)

  • Promise执行顺序分析 :async、await执行机制
  • promise限制并发数和promise串行请求题目

三、CSS与布局

3.1 布局技术

  • Flexbox布局详解 :容器属性与项目属性、常见布局实现
  • Grid布局 :二维网格系统、区域划分、响应式设计
  • 盒模型 :标准盒模型与IE盒模型、box-sizing属性
  • BFC(块级格式化上下文) :触发条件、应用场景
  • 响应式设计 :媒体查询、rem/em单位、视口设置

3.2 样式与动画

  • CSS选择器优先级 :计算规则、权重比较
  • CSS动画原理 :transition、animation、性能优化
  • CSS预处理器 :Sass/Less的特性、嵌套、变量、混合等
  • CSS Modules与CSS-in-JS :组件化样式解决方案

四、前端框架(必问)

4.1 React相关

  • React Hooks原理 :闭包陷阱、依赖数组、自定义Hook
  • React Fiber架构 :协调算法、时间切片、优先级调度
  • Redux状态管理 :单向数据流、中间件、异步处理
  • 虚拟DOM与Diff算法 :实现原理、优化策略

4.2 Vue相关

  • Vue响应式原理 :Object.defineProperty与Proxy的区别、依赖收集
  • Vue3的Composition API :与Options API的区别、逻辑复用
  • Vue Router路由机制 :前端路由原理、动态路由、导航守卫
  • Vuex状态管理 :核心概念、模块化、持久化
  • vue3和vue2区别,Vue3的新特性
  • vue的生命周期
  • vue双向绑定原理
  • 为什么渲染列表要加key
  • vue常见的优化手段有哪些
  • Vue的路由 router 大概通过什么实现的
  • Vue nextTick 的作用和实现
  • Vue 如何检测数组变化?为什么没有对每一项进行拦截?

4.3 跨框架

  • MVVM架构模式 :与MVC/MVP的区别
  • 组件设计原则 :高内聚低耦合、可复用性、可维护性
  • 服务端渲染(SSR) :Next.js、Nuxt.js的原理与应用
  • 如何从Vue2升级到Vue3 :迁移指南、新特性介绍、注意事项
  • vue和react有哪些区别(双向数据流和单向数据流、模板语法和jsx、上手性等等)

五、前端工程化

5.1 构建工具

  • Webpack核心概念 :Entry、Output、Loader、Plugin、优化策略
  • Vite的工作原理 :ESM、依赖预构建、热模块替换
  • 构建工具比较 :Webpack、Vite、Rollup、Parcel的优缺点
  • 如何从Webpack迁移到Vite :优势、迁移步骤、注意事项,如何评估从Webpack迁移到Vite的可行性和收益?
  • webpack 的loader 和 plugin 的区别
  • webpack打包慢如何优化
  • treeShaking是什么(树摇)

5.2 微前端

  • 微前端架构模式 :qiankun、single-spa等框架对比
  • 微前端的原理大概是什么,css和js如何隔离的,主应用和子应用如何通信

六、性能优化(必问)

6.1 性能指标与监控

  • 前端性能指标 :FCP、LCP、FID、CLS等Web Vitals
  • 性能监控方案 :Performance API、埋点、监控平台

6.2 优化策略

  • 首屏加载优化 :资源压缩、懒加载、CDN、SSR等
  • 运行时性能优化 :减少重排重绘、使用requestAnimationFrame
  • 前端有哪些性能优化 :回流重绘、防抖节流、路由懒加载、图片懒加载、webpack打包等等
  • 项目中页面加载比较慢、卡顿有哪些优化手段 (前端性能优化)
  • 强缓存与协商缓存分别是什么 (HTTP缓存协议)

七、前端安全

7.1 常见攻击

  • XSS攻击 :类型、防范措施、内容安全策略
  • CSRF攻击 :原理、防护方法、SameSite Cookie
  • 点击劫持 :iframe嵌套攻击、防御策略
  • SQL注入 :防范措施、参数化查询
  • 前端的安全问题可能存在哪些?可以怎么防范(XSS和csrf)

7.2 安全实践

  • HTTPS部署 :证书配置、HSTS、OCSP Stapling
  • 前端加密 :敏感数据处理、加密算法选择
  • 权限控制 :前端权限管理、JWT认证机制

八、算法与编程题(高频)

8.1 常见算法

  • 排序算法 :快速排序、归并排序、插入排序的时间复杂度与实现
  • 查找算法 :二分查找、哈希表查找
  • 前端常用算法 :防抖节流、深拷贝、数组去重、LRU缓存等

8.2 数据结构

  • 链表 :单向链表、双向链表的实现与操作
  • 栈与队列 :应用场景、实现方式
  • 树结构 :二叉树、DOM树遍历算法
  • 求两个链表相交节点
  • 二叉树深度和广度遍历
  • 将一个一维数组转换成树结构(一维数组用pid标识父级id)
  • 二路归并

8.3 工具函数实现

  • 实现repeat函数
  • 写一个防抖和节流函数
  • 写一个函数实现apply或call的功能
  • 实现一个深拷贝函数deepClone

九、面试准备建议

9.1 复习策略

  • 系统化学习 :按照知识体系进行复习,避免碎片化
  • 代码实践 :动手实现关键算法和功能,加深理解
  • 模拟面试 :准备常见问题的回答,练习表达清晰度
  • 关注前沿 :了解前端最新技术趋势和最佳实践

9.2 大厂面试特点

  • 字节跳动 :注重算法与编码能力、性能优化、React生态
  • 阿里巴巴 :重视工程化、Node.js、全链路性能优化
  • 腾讯 :关注基础扎实度、框架原理、安全意识
  • 百度 :侧重算法、数据结构、技术深度
  • 美团/滴滴 :注重业务场景应用、性能优化实战经验

9.3 面试技巧

  • 结构化回答 :使用STAR法则描述项目经验
  • 主动思考 :面对问题先思考再回答,展示思维过程
  • 技术深度 :不仅知其然,还要知其所以然
  • 团队协作 :体现沟通能力和团队协作经验