2025年前端高频面试题(含答案)_前端面试题2025及答案
一、HTML/CSS(10题)
- 盒模型与
box-sizing
的作用 - CSS绘制三角形与梯形原理
- BFC触发条件与应用场景(解决外边距重叠等)
- Flex布局与Grid布局的适用场景对比
- 圣杯布局/双飞翼布局的实现与差异
- CSS选择器优先级与权重计算规则
- 伪类与伪元素的区别(如
:before
vs::before
) - CSS动画性能优化(硬件加速与
will-change
) - 响应式设计实现方案(媒体查询、视口单位等)
- 移动端1像素边框问题的解决方案
二、JavaScript核心(10题)
- 防抖与节流的区别及实现
- 闭包应用场景与内存泄漏风险
[\'1\',\'2\',\'3\'].map(parseInt)
的结果及原因- JavaScript继承的多种实现方式(原型链、组合继承等)
- 事件循环机制与宏任务/微任务执行顺序
- Promise核心原理与手写实现
- ES6+新特性解析(如可选链、空值合并运算符等)
this
指向的四种绑定规则及优先级- 手写深拷贝函数(解决循环引用问题)
- JavaScript内存泄漏的常见场景及排查方法
三、框架与工程化(10题)
- React列表组件中
key
的作用与Diff算法优化 - Vue3 Composition API的优势与逻辑复用
- React Hooks的使用规则与自定义Hook设计
- Vue响应式原理(Proxy与Object.defineProperty对比)
- 微前端架构的核心挑战(样式隔离、状态共享)
- Webpack Tree Shaking原理与优化配置
- SSR与CSR的优缺点对比及实现方案
- React Fiber架构的设计目标与实现原理
- Vuex与Redux状态管理库的异同
- 前端工程化中的Monorepo实践(如Turborepo)
四、性能与安全(10题)
- 减少页面加载时间的优化策略(资源压缩、CDN等)
- XSS攻击防御措施(输入过滤、CSP策略)
- CSRF攻击原理与Token验证机制
- 浏览器渲染流程与重排/重绘优化
- 前端资源懒加载与预加载实现
- Webpack分包策略与代码分割优化
- HTTP/2协议对前端性能的提升
- 前端内存泄漏检测工具(Chrome DevTools)
- CDN动态加速与边缘计算的应用
- 安全头部配置(如CSP、HSTS)
五、进阶与前沿(10题)
- ECMAScript 2025新特性(顶层await、Record & Tuple)
- WebAssembly在前端的应用场景(高性能计算、跨语言开发)
- TypeScript类型体操与工具类型实现
- PWA核心技术(Service Worker、离线缓存)
- 前端低代码平台的架构设计思路
- Web Components的标准化与浏览器支持
- 前端测试策略(单元测试、E2E测试框架选型)
- Serverless在前端部署中的应用
- AI工程化在前端的落地(如TensorFlow.js)
- 跨端渲染方案对比(React Native vs Flutter)
答案解析:
一、HTML/CSS(10题)
1. 盒模型与box-sizing
的作用
盒模型组成:
每个HTML元素由4部分组成:内容(content)、内边距(padding)、边框(border)、外边距(margin)。默认情况下,width
和height
仅定义内容区的尺寸。
box-sizing
的作用:
content-box
(默认):元素总宽度 =width
+padding
+border
。border-box:元素总宽度 =
width
(包含padding
和border
),内容区自动缩小。
示例:
.box{width:200px;padding:10px;border:5px solid;box-sizing:border-box;/* 总宽度保持200px */}
应用场景:
border-box
常用于响应式布局,避免因
padding
和border
导致布局错位。
2. CSS绘制三角形与梯形原理
原理:
通过设置边框的透明属性,仅保留单边颜色,形成三角形。例如:
.triangle{width:0;height:0;border-left:50px solid transparent;border-right:50px solid transparent;border-bottom:100px solid #000;}
梯形:通过调整不同方向的边框宽度和颜色实现。
应用场景:
-
箭头指示、对话框尖角、装饰性图形。
3. BFC触发条件与应用场景
触发条件:
overflow: hidden、
float: left/right
、display: inline-block
、position: absolute/fixed
等。
应用场景:
- 防止外边距合并:两个相邻元素的垂直外边距会重叠,BFC容器可隔离此现象。
- 清除浮动:父元素触发BFC后,自动包含浮动子元素的高度。
- 避免元素被浮动覆盖:非浮动元素触发BFC后,不会与浮动元素重叠。
4. Flex布局与Grid布局的适用场景对比
Flex布局:
- 适用场景:一维布局(单行或单列排列),如导航栏、卡片列表、垂直居中。
- 核心属性:
flex-direction
、justify-content
、align-items
。
Grid布局:
- 适用场景:二维布局(多行多列),如复杂网格、仪表盘、响应式页面。
- 核心属性:
grid-template-columns
、grid-gap
、grid-area
。
对比:
-
Flex更灵活适合局部布局,Grid更适合整体页面结构。
5. 圣杯布局/双飞翼布局的实现与差异
圣杯布局:
- 实现:通过浮动、负边距和相对定位实现三栏布局,中间列优先加载。
- 特点:HTML结构为中间列在前,左右两列通过负边距调整位置。
双飞翼布局:
- 差异:中间列添加一个内层容器,通过内层容器的
margin
为左右栏留出空间。
共同目标:实现三栏自适应,优先渲染主要内容。
6. CSS选择器优先级与权重计算规则
权重规则:
- 内联样式(
style=\"\"
) >ID选择器>类/伪类/属性选择器>标签/伪元素选择器。 - 计算方式:
(0,0,0,0)
分别代表内联、ID、类、标签的计数,从左到右逐级比较。
示例:
.class
权重为
(0,0,1,0)
,#id
为(0,1,0,0)
,div:hover
为(0,0,2,0)
。
7. 伪类与伪元素的区别
- 伪类(如
:hover
):表示元素的动态状态(如悬停、聚焦)。 - 伪元素(如
::before
):创建虚拟元素(如添加图标、装饰线)。
语法区别:伪元素使用双冒号::
,伪类使用单冒号:
。
8. CSS动画性能优化
优化策略