
前端面试题
文章平均质量分 78
前端常见面试题
liuchuan__9527
前端开发工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
vue2和vue3的区别
Vue3相较Vue2在架构、性能和开发体验上有显著革新。核心改进包括:1) 采用Composition API替代Options API,解决逻辑碎片化问题;2) 性能优化:虚拟DOM采用静态提升和PatchFlag技术,响应式系统改用Proxy;3) 引入组合式函数、Teleport和Suspense等新特性;4) 生态系统升级,推荐Pinia替代Vuex,工具链转向Vite。Vue3特别适合TypeScript项目和大型应用开发,建议新项目优先选用,旧项目可逐步升级。原创 2025-06-19 17:19:38 · 609 阅读 · 0 评论 -
宏任务与微任务
摘要:宏任务(如setTimeout)和微任务(如Promise.then)是JavaScript异步机制的核心概念。宏任务在事件循环开始时执行,微任务则在当前宏任务结束后立即执行。执行顺序遵循同步代码→微任务→宏任务的规律。合理使用两者能优化DOM操作、避免UI卡顿,在浏览器和Node.js环境中存在执行差异。掌握宏微任务机制对编写高性能前端应用和应对技术面试至关重要,其本质在于理解事件循环中不同任务的优先级和执行时机。原创 2025-06-17 08:13:33 · 790 阅读 · 0 评论 -
同步任务与异步任务
同步任务按顺序执行会阻塞后续代码,适合简单逻辑但可能导致性能问题。异步任务非阻塞执行,适用于耗时操作和保持响应性,需要处理回调或Promise。核心区别在于执行方式和线程影响,异步能避免阻塞主线程。开发中应根据任务特性选择同步或异步方式,耗时操作必须用异步。JavaScript中实现异步的方式包括回调、Promise和async/await等。原创 2025-06-17 08:06:27 · 696 阅读 · 0 评论 -
Pinia 相比 Vuex 有哪些改进?为什么推荐使用 Pinia?
Pinia作为Vue3官方推荐的状态管理库,在API简洁性、TypeScript支持、模块化设计和性能方面显著优于Vuex。它采用单一函数定义Store,统一同步/异步操作,自动类型推导,支持组合式API开发模式。相比Vuex,Pinia体积减少50%以上,使用ES6 Proxy实现高效响应式,并提供更好的DevTools支持和热更新功能。特别适合大型Vue3项目,通过模块化Store设计和组合式API,提升代码可维护性和开发体验,是Vue3时代状态管理的首选方案。原创 2025-06-17 07:54:08 · 671 阅读 · 0 评论 -
Vue 3 响应式系统如何通过 Proxy 替代 Object.defineProperty
Vue3通过Proxy实现高效数据代理,相比Vue2的Object.defineProperty具有更全面的拦截能力。其核心机制包括:1)使用reactive函数创建Proxy代理,通过get/set拦截器实现依赖收集和更新通知;2)引入track/trigger机制管理副作用函数;3)采用懒代理按需创建响应式对象,优化性能。Vue3还支持浅层响应式(shallowReactive)和基本类型处理(ref),在处理复杂数据结构和大型应用时更高效。这种实现方式使Vue3的响应式系统更灵活、性能更好。原创 2025-06-17 07:47:12 · 411 阅读 · 0 评论 -
为什么 Composition API 比 Options API 更适合大型项目
CompositionAPI在大项目中优于OptionsAPI主要体现在:1)功能模块化组织,避免代码分散;2)自定义Hook实现高效复用,解决Mixin的命名冲突问题;3)更好的TypeScript支持,简化类型推导;4)更优的打包性能和TreeShaking支持;5)明确的代码边界,提升团队协作效率。这些特性使其成为大型Vue项目的首选架构方案,适合复杂业务逻辑和长期维护场景。原创 2025-06-17 07:44:18 · 753 阅读 · 0 评论 -
JS的预解析
JavaScript 的 "预解析"(Hoisting)是语言引擎在代码执行前的准备阶段,对变量和函数声明进行特殊处理的机制。理解这一机制是掌握 JS 变量作用域、提升代码健壮性的关键。掌握预解析机制,能帮助开发者写出更安全、更易维护的代码,同时在面试中展现对语言底层原理的深刻理解。(函数声明优先于变量声明被提升)原创 2025-06-16 13:53:13 · 826 阅读 · 0 评论 -
Webpack的理解
Webpack是现代前端核心打包工具,其核心功能是将JS、CSS、图片等资源模块化处理,通过Loader转换模块、Plugin扩展功能,最终打包为优化后的静态资源。主要特性包括:模块化支持多种规范、资源整合减少请求、代码分割等性能优化。关键配置涵盖Entry入口、Output输出、Loader处理非JS模块、Plugin功能扩展等。高级功能包含TreeShaking、代码分割、环境变量等优化策略。与Vite相比,Webpack更适合复杂项目和生产环境优化。掌握Webpack原理和配置是成为高级前端工程师的必原创 2025-06-16 13:43:01 · 756 阅读 · 0 评论 -
原型链的理解
JavaScript原型链机制解析:核心是通过[[Prototype]]属性实现对象间的继承关系。当访问属性时,引擎会沿原型链向上查找,直到Object.prototype或找到该属性。关键点包括:1)构造函数prototype指向实例原型;2)原型链终点为null;3)ES6类语法是原型继承的语法糖。实际应用中可实现方法继承和混合模式,但需注意原型共享问题和性能影响。常见解决方案包括构造函数初始化引用属性、组合继承等。理解原型链有助于掌握JS继承本质,优化代码结构,面试常涉及属性判断、拷贝方法等。建议优先原创 2025-06-16 11:23:53 · 502 阅读 · 0 评论 -
BFC模式的理解
理解 BFC 是掌握 CSS 布局的关键之一,它能帮助解决浮动、margin 重叠等常见布局问题,同时也是理解更现代布局技术的基础。BFC 是一个独立的渲染区域,规定了内部的块级元素如何布局,并且与外部元素相互隔离。原创 2025-06-16 11:05:56 · 469 阅读 · 0 评论 -
Vue中data为什么是个函数
Vue组件中的data必须是函数而非对象的原因在于:对象是引用类型,若直接使用会导致多个组件实例共享同一数据状态(如在v-for中渲染时),造成状态污染;而通过函数返回对象的方式,每次实例化都会生成独立的数据副本,确保组件状态隔离。这种设计体现了Vue组件复用性和安全性原则,而根实例因全局唯一可例外使用对象。Vue3的组合式API通过setup()函数自动实现状态隔离,无需此限制。这一机制是Vue实现组件化的重要基础。原创 2025-06-16 10:49:45 · 328 阅读 · 0 评论 -
Vuex的使用
Vuex是Vue.js的状态管理解决方案,适用于多组件共享状态和复杂通信场景。其核心包括:state(状态存储)、getters(计算属性)、mutations(同步修改)、actions(异步操作)和modules(模块化)。使用时需遵循单向数据流原则,通过mapState/mapActions辅助函数简化组件访问。最佳实践包括模块化组织状态、避免mutation异步操作、使用插件持久化状态等。Vue3中通过useStore组合式API集成,TypeScript支持更佳。相比Pinia(Vuex替代方案)原创 2025-06-16 10:47:45 · 550 阅读 · 0 评论 -
$router和$route
Vue Router中$router与$route的核心区别: $router是全局路由实例,负责导航控制(push/replace/go)和路由配置;$route是当前路由状态对象,包含路径、参数等实时信息。关键差异包括: $router用于编程导航,$route用于读取路由信息 $route响应式更新,$router为全局单例 典型应用:$router处理跳转/守卫,$route获取参数/query Vue3需通过useRouter/useRoute获取 理解两者分工(控制器vs状态机)是高效使用Vue原创 2025-06-16 10:43:38 · 743 阅读 · 0 评论 -
V-model语法糖
Vue的v-model是实现双向数据绑定的语法糖,其本质是通过绑定value属性与input事件(或其他事件)来实现双向通信。对于表单元素,v-model会根据不同类型自动适配对应属性和事件;对于自定义组件,则通过modelValue prop和update:modelValue事件实现。Vue3支持多v-model绑定,并提供了.lazy、.number、.trim等修饰符来优化交互体验。在组件设计中,应遵循单向数据流原则,将复杂表单封装为统一接口的组件,必要时可使用computed处理异步更新。v-mo原创 2025-06-16 10:28:34 · 835 阅读 · 0 评论 -
浏览器的垃圾回收机制
浏览器内存管理采用垃圾回收(GC)机制自动回收内存,核心包括标记-清除、分代回收等算法。内存泄漏常见于全局变量、未清除的定时器/事件、闭包和循环引用等场景。GC可能造成主线程阻塞,可通过减少大对象分配、主动断开引用、利用弱引用等优化手段提升性能。开发者应使用堆快照分析和GC日志监控工具,配合现代浏览器(如V8)的并发标记和增量优化策略,实现高效内存管理。合理的内存管理策略对提升Web应用性能至关重要。原创 2025-06-16 08:12:27 · 689 阅读 · 0 评论 -
Vue中的自定义指令
Vue自定义指令指南:DOM操作复用方案 摘要:Vue自定义指令是封装DOM操作的复用机制,提供5个生命周期钩子(bind/inserted/update/componentUpdated/unbind)。支持全局/局部注册,通过binding对象获取参数和修饰符。典型应用包括权限控制(v-permission)、图片懒加载(v-lazy)和防抖处理(v-debounce)。指令适用于单一DOM行为,复杂场景建议使用组件。开发时需注意:保持单一职责、清理资源、命名规范(kebab-case)。与组件不同,指原创 2025-06-16 08:05:23 · 424 阅读 · 0 评论 -
地址栏敲回车会发生什么
浏览器从输入URL到页面展示经历了复杂流程:解析URL后发起DNS查询获取IP地址;通过TCP三次握手和TLS加密建立安全连接;发送HTTP请求到服务器,服务器处理请求后返回响应;浏览器解析HTML构建DOM树,结合CSS生成渲染树,最终完成布局绘制。整个过程涉及网络协议、安全机制和渲染引擎的协同工作,理解该流程对优化性能和解决问题至关重要。原创 2025-06-16 07:59:47 · 805 阅读 · 0 评论 -
RBAC权限控制模型
摘要: RBAC(基于角色的访问控制)通过角色解耦用户与权限的关联,核心包括用户、角色、权限三要素,支持多对多关联。其层级演进涵盖基础模型(RBAC0)、角色继承(RBAC1)、约束规则(RBAC2)及组合模型(RBAC3)。RBAC简化权限管理,适应组织变化,支持最小权限原则,适用于企业OA、电商后台等场景。后端实现需设计关联表并校验权限,前端则需控制路由、组件及操作权限。局限性包括动态权限处理困难,可通过结合ABAC或细化权限粒度解决。面试中需区分RBAC与ACL,明确前后端权限边界,并处理权限动态更新原创 2025-06-16 07:53:58 · 898 阅读 · 0 评论 -
项目中的权限控制
前端权限控制体系需分层构建:1)架构设计包括认证、授权、资源访问和数据过滤四层,微服务架构需统一认证中心;2)模型选择RBAC适合角色清晰场景,ABAC适合动态复杂场景,权限数据可采用扁平列表或树形结构;3)实现方法包含路由守卫、权限组件封装、自定义指令和状态管理集成,需动态更新权限数据。核心原则强调前端仅为体验层,需后端最终校验,权限规则应动态下发,保证可测试性。通过架构、模型与实现的协同,形成全链路权限控制闭环。原创 2025-06-16 07:49:00 · 364 阅读 · 0 评论 -
正向代理和反向代理
方向不同:正向代理 "代 client 求 server",反向代理 "代 server 接 client"用户视角:正向代理需用户主动配置,反向代理对用户完全透明技术价值正向代理解决客户端访问限制问题反向代理解决服务器端性能、安全、扩展性问题理解两者的本质差异,有助于在前端架构设计中合理运用代理技术,例如:通过反向代理实现 API 网关统一处理跨域,通过正向代理优化开发环境请求转发,或利用 CDN(反向代理的一种)加速静态资源加载。原创 2025-06-16 07:29:44 · 816 阅读 · 0 评论 -
浏览器的缓存机制
浏览器缓存通过存储资源避免重复请求,提升加载速度。主要分为强缓存(直接读取本地)和协商缓存(服务器验证有效性),由HTTP头部字段控制。不同资源类型应采用不同缓存策略,如HTML禁用强缓存,静态资源长期存储。更新资源可通过添加版本号避免缓存延迟。调试时可使用开发者工具检查缓存状态。合理配置缓存策略是前端性能优化的关键,需结合业务需求平衡缓存效果与更新需求。原创 2025-06-16 07:26:52 · 463 阅读 · 0 评论 -
浏览器的渲染机制
浏览器渲染机制解析:从解析HTML到最终合成图像的完整流程。首先解析HTML构建DOM树,CSS构建CSSOM树,JS执行会阻塞渲染;然后合并DOM和CSSOM生成渲染树;接着计算布局(回流)和绘制(重绘);最后通过合成层合并提升性能。优化建议包括减少渲染阻塞、避免频繁布局操作、利用合成层优化动画等。理解流程能有效定位性能瓶颈,如白屏(阻塞渲染)或卡顿(频繁回流)。原创 2025-06-15 16:35:37 · 843 阅读 · 0 评论 -
defer 和 async 的区别
<script>标签的defer和async属性控制脚本加载和执行时机,主要区别在于加载过程和执行顺序。defer脚本并行加载但不阻塞HTML解析,延迟到DOM解析完成后按顺序执行,适合依赖DOM的脚本;async脚本同样并行加载,但加载完成后立即执行,顺序不确定,适合独立功能的第三方脚本。defer保证执行顺序,async优先加载速度。选择时需考虑脚本依赖关系和DOM操作需求。原创 2025-06-15 16:22:46 · 305 阅读 · 0 评论 -
前端 SEO 优化
本文详细介绍了前端SEO优化的核心方法与技术实践。主要内容包括:语义化HTML结构优化、页面加载性能提升、JavaScript与SPA场景处理、Meta标签与内容可见性、移动端适配等关键方面。文章强调使用语义化标签、优化资源加载、解决JS渲染问题、合理设置Meta标签等技术手段,同时提供工具监控建议,并提醒避免黑帽技术等SEO陷阱。这些优化措施旨在提升页面可抓取性、加载速度和用户体验,进而改善搜索引擎排名。最后指出SEO需要长期持续优化,并需结合后端策略综合实施。原创 2025-06-15 16:16:41 · 973 阅读 · 0 评论 -
HTTP协议中的请求方法
HTTP协议提供了多种请求方法,用于不同操作场景:GET用于获取资源,数据通过URL传递,安全且幂等;POST用于提交数据创建资源,数据在请求体中,非幂等;PUT用于更新完整资源,幂等;DELETE用于删除资源,幂等;HEAD仅获取资源元数据;OPTIONS查询支持的请求方法,常用于跨域预检;PATCH用于部分更新资源,非幂等。每种方法各有特点,适用不同需求。原创 2025-06-15 15:09:30 · 267 阅读 · 0 评论 -
对HTML语义化的理解
HTML语义化是指使用具有明确含义的标签(如<nav>、<article>)来组织页面结构,而非仅依赖<div>和类名。其优势包括:提升无障碍访问(辅助工具精准识别内容)、优化SEO(搜索引擎更好理解页面)、增强代码可读性(标签自解释结构)以及改善浏览器渲染性能。HTML5提供了丰富的语义化标签,涵盖页眉页脚、导航、主要内容区等场景,是现代Web开发的核心实践。原创 2025-06-15 14:31:43 · 314 阅读 · 0 评论 -
页面导入样式时,使用link和@import有什么区别
所属层面加载时机兼容性动态操作linkHTML标签并行加载,不会阻塞页面渲染无兼容性问题支持动态操作@importCSS语法串行加载,会影响页面渲染、影响性能IE5以下可能会有兼容性问题不支持动态操作。原创 2025-06-15 12:35:29 · 167 阅读 · 0 评论 -
两个行内块元素的空白间隙问题
空白间隙的本质是空白字符的渲染结果,因此解决方案的核心是消除或覆盖这些字符的影响优先使用和属性进行解决。原创 2025-06-15 11:24:37 · 279 阅读 · 0 评论 -
行内元素、块级元素和空元素
在HTML中,元素根据其。原创 2025-06-15 10:42:52 · 187 阅读 · 0 评论 -
前端页面的三个逻辑层
因为清晰的逻辑层面划分是前端工程化的基础,也是理解复杂前端架构(MVVM、微前端)的核心切入点。,三者分别承担不同的职能、并且相互配合,共同构建出用户页面。理想情况下:三层应该是解耦实现的(例如:Vue中。分别对应三个逻辑层面)。原创 2025-06-15 10:10:26 · 185 阅读 · 0 评论