2025年前端面试题汇总
2025年的前端面试越来越注重实际应用、性能优化、安全性和新兴技术如PWA(渐进式Web应用)、Vue3/React Hooks以及AI辅助开发。基于最新搜索结果,我从可靠来源(如CSDN、GeeksforGeeks、GitHub前端手册等)汇总了高频面试题,按类别分类。每个类别选10-15道经典题,提供简要答案解析。建议结合项目经验练习,面试时强调“STAR法则”(情境-任务-行动-结果)来回答行为题。
1. HTML & CSS 基础(占比约20%,考察布局与响应式)
这些题常用于初筛,重点测试语义化和现代CSS。
| 题号 | 面试题 | 简要答案解析 |
|---|---|---|
| 1 | 什么是语义化HTML?为什么重要? | 语义化HTML使用如<header>、<article>等标签描述内容含义,而非纯样式(如<div>)。重要性:提升SEO、可访问性(屏幕阅读器支持)和代码维护性。示例:<nav>用于导航栏。 |
| 2 | CSS盒模型(Box Model)有何区别?IE vs W3C? | 标准W3C盒模型:width/height只算内容,边距/边框/内边距外加。IE旧版:width/height包含边框和内边距。使用box-sizing: border-box统一计算。 |
| 3 | Flexbox 和 Grid 的区别?何时使用? | Flexbox:一维布局,适合导航栏/居中。Grid:二维布局,适合复杂网格如仪表盘。示例:Flexbox display: flex; justify-content: center;;Grid display: grid; grid-template-columns: repeat(3, 1fr);。 |
| 4 | 如何实现响应式布局? | 使用媒体查询(@media (max-width: 768px) { ... })、相对单位(rem/em/vw)、图片自适应(max-width: 100%; height: auto;)。结合Viewport元标签:<meta name="viewport" content="width=device-width, initial-scale=1">。 |
| 5 | CSS预处理器如Sass的优点? | 支持变量($primary-color: #007bff;)、嵌套、mixin,提高复用性和维护性。缺点:需编译。 |
| 6 | 什么是CSS-in-JS?如styled-components。 | 在JS中编写CSS,避免全局冲突,支持动态样式。示例:const Button = styled.buttonbackground: ${props => props.primary ? ‘blue’ : ‘gray’};“。 |
| 7 | 如何优化CSS性能? | 减少选择器深度、使用BEM命名、压缩CSS、关键CSS内联(Critical CSS)。避免!important滥用。 |
| 8 | 实现圣杯布局(Holy Grail Layout)。 | 三栏布局(头-主-侧-尾),主栏自适应。使用Flexbox:.container { display: flex; } .main { flex: 1; }。 |
| 9 | CSS动画 vs JavaScript动画? | CSS:硬件加速,适合简单变换(如transition: all 0.3s;)。JS:复杂交互,精确控制(如GSAP库)。 |
| 10 | 什么是CSS变量(Custom Properties)? | 动态样式,如--main-color: red; color: var(--main-color);。支持主题切换。 |
2. JavaScript 核心(占比约30%,考察异步与ES6+)
JS是重头戏,2025年强调ES2023/2024新特性如Temporal API。
| 题号 | 面试题 | 简要答案解析 |
|---|---|---|
| 1 | JS基本数据类型有哪些? | 7种:Number, String, Boolean, Null, Undefined, Symbol, BigInt。引用类型:Object(包括Array, Function)。使用typeof检查。 |
| 2 | 闭包(Closure)是什么?利弊? | 内层函数访问外层变量,形成独立作用域。利:数据私有(如计数器)。弊:内存泄漏。解决:及时释放引用。示例:function outer() { let x=1; return function inner(){return x++;} }。 |
| 3 | 解释事件循环(Event Loop)。 | JS单线程:调用栈执行同步代码,微任务(Promise.then)优先宏任务(setTimeout)。示例:console.log(1); setTimeout(()=>console.log(2)); Promise.resolve().then(()=>console.log(3)); 输出1-3-2。 |
| 4 | Promise vs async/await? | Promise:链式处理异步(如.then().catch())。async/await:语法糖,简化代码(如async function fetchData(){const res=await fetch(url);})。错误用try-catch。 |
| 5 | 防抖(Debounce)和节流(Throttle)区别? | 防抖:事件触发后延迟执行(如搜索输入)。节流:固定间隔执行(如滚动)。实现:let timer; function debounce(fn, delay){clearTimeout(timer); timer=setTimeout(fn,delay);}。 |
| 6 | 什么是this?如何绑定? | this指向调用者。bind/call/apply改变:fn.call(obj, arg)。箭头函数:this继承外层。 |
| 7 | 深拷贝 vs 浅拷贝?如何实现深拷贝? | 浅拷贝:只复制一层(如Object.assign)。深拷贝:递归复制(如JSON.parse(JSON.stringify(obj)),但注意循环引用用Lodash深克隆)。 |
| 8 | let/const/var区别? | var:函数作用域,可重复声明。let/const:块级,const不可变。TDZ(Temporal Dead Zone):let在声明前访问报错。 |
| 9 | Map/Set vs Object/Array? | Map:键值对,支持任何键。Set:唯一值集合。性能:O(1)查找。示例:new Map().set(key, value)。 |
| 10 | Proxy和Reflect的应用? | Proxy:拦截操作(如响应式数据)。Reflect:标准API调用(如Reflect.get(target, prop))。Vue3 Composition API常用。 |
| 11 | 2025新特性:Temporal API? | 处理日期时间,避免Date痛点。如Temporal.Now.zonedDateTimeISO(),支持时区计算。 |
3. 框架与库(占比约25%,React/Vue/Angular高频)
2025年Vue3转型加速,React Hooks是必考。
| 题号 | 面试题 | 简要答案解析 |
|---|---|---|
| 1 | React Hooks vs Class组件? | Hooks:函数式,简化状态管理(如useState、useEffect)。Class:生命周期复杂。Hooks规则:顶层调用,不可条件。 |
| 2 | Vue3 Composition API vs Options API? | Composition:逻辑复用(如setup()函数)。Options:data/methods分隔。Vue3默认Composition,支持<script setup>。 |
| 3 | React Fiber是什么? | 虚拟DOM可中断渲染算法,提升响应性。支持并发模式(如Suspense)。 |
| 4 | Redux/Pinia状态管理原理? | 单向数据流:Action -> Reducer -> Store。React用Context+useReducer简化。 |
| 5 | 虚拟DOM diff算法? | React/Vue:树diff,key优化列表。O(n^3)降到O(n)。 |
| 6 | SSR(服务端渲染)优势? | SEO友好、首屏快(如Next.js)。缺点:复杂。 |
| 7 | React Router vs Vue Router? | 声明式路由:<Route path="/home" component={Home}/>。懒加载:React.lazy()。 |
| 8 | 组件通信方式? | 父子:props/emit。兄弟:EventBus/Context。跨层:Zustand。 |
| 9 | 什么是HOC(高阶组件)? | 复用逻辑:function withAuth(Wrapped){return props=><Wrapped {...props} />;}。 |
| 10 | Angular依赖注入? | 服务注入:@Injectable() class Service{},组件constructor(private service: Service)。 |
4. 性能优化与安全(占比15%,新兴热点)
PWA和安全是2025趋势。
| 题号 | 面试题 | 简要答案解析 |
|---|---|---|
| 1 | 页面加载优化? | 减少JS/CSS体积(Tree Shaking)、懒加载(React.lazy)、CDN、Service Worker缓存。指标:FCP、LCP。 |
| 2 | 什么是PWA?核心特性? | 渐进式Web App:离线支持(Cache API)、安装图标、推送通知。manifest.json + sw.js。 |
| 3 | XSS/CSRF攻击及防范? | XSS:脚本注入,防范:转义输出(innerText)、CSP头。CSRF:伪造请求,防范:token验证。 |
| 4 | Webpack优化? | 代码分割(SplitChunks)、热重载(HMR)、babel转译ES6+。 |
| 5 | 浏览器渲染过程? | 解析HTML/CSS -> 计算样式 -> 布局 -> 绘制 -> 合成。阻塞:同步JS。 |
5. 其他高级题(占比10%,考察综合)
| 题号 | 面试题 | 简要答案解析 |
|---|---|---|
| 1 | TypeScript优点? | 类型安全、接口定义。示例:interface User { name: string; }。 |
| 2 | 跨域问题解决方案? | JSONP(script标签)、CORS(后端头)、代理(Webpack devServer)。 |
| 3 | 浏览器缓存策略? | Cache-Control、ETag、服务端缓存。强缓存 vs 协商缓存。 |
| 4 | Git工作流? | Feature Branch:git checkout -b feature; git merge main。 |
| 5 | 单元测试工具? | Jest + React Testing Library:render(<Component />); expect(screen.getByText('text')).toBeInTheDocument();。 |
准备建议
- 资源:GitHub Front-End-Interview-Handbook(200+题)、GreatFrontEnd平台练习。
- 实践:LeetCode前端题、构建PWA项目。
- 行为题:如“描述优化项目经验”,用数据量化(如“加载时间从5s降到1s”)。
- 趋势:关注AI工具(如Copilot for Web)和WebAssembly。
这份汇总覆盖80%高频题,建议刷题+项目。祝面试顺利!如果需特定框架扩展,随时问。