版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026Web前端开发高频面试题及详细答案(真实企业版)一、HTML核心面试题1、HTML5新增特性有哪些?日常开发常用哪些?HTML5是对传统HTML的升级,新增了语义化标签、媒体能力、本地存储、表单新特性、画布绘图等功能,日常开发高频使用的内容如下:1.语义化标签:header、nav、main、section、article、aside、footer。替代了传统div堆砌,代码结构更清晰,利于SEO和代码维护。2.媒体标签:audio音频、video视频,无需插件即可实现音视频播放,支持倍速、暂停、进度控制等原生能力。3.本地存储:localStorage、sessionStorage,弥补了cookie存储量小、携带请求头的缺陷,用于本地持久化缓存数据。4.表单新增:input新增tel、email、number、date、search等类型,自带原生校验规则,减少JS校验代码。5.图形绘制:canvas画布、svg矢量图,用于实现数据可视化、简单动画、图标绘制等场景。6.其他能力:拖拽API、全屏API、地理位置API、WebSocket长连接等,适配复杂交互场景。2、语义化标签的作用是什么?为什么不一直用div?语义化标签核心是让标签有明确的业务含义,而非单纯的容器。核心作用:1.结构清晰:代码可读性高,多人协作时能快速区分页面头部、导航、主体、侧边栏、底部等模块。2.利于SEO:搜索引擎爬虫可以精准识别页面结构和核心内容,提升网页收录和排名。3.适配无障碍:屏幕阅读器可以识别语义标签,辅助残障用户浏览页面。4.便于维护迭代:项目后期修改、重构时,语义化代码比纯div布局更容易定位模块。div是无语义容器,仅用于布局嵌套,大量使用会导致代码臃肿、结构混乱,不利于长期维护。3、Cookie、localStorage、sessionStorage的区别?三者均为前端本地存储方案,核心差异集中在存储大小、生命周期、请求携带、作用域:1.存储大小:Cookie最大4KB;localStorage、sessionStorage可达5MB左右。2.生命周期:Cookie可手动设置过期时间,默认关闭页面失效;localStorage永久存储,手动清除才会失效;sessionStorage仅当前会话有效,关闭标签页立即清空。3.请求携带:Cookie每次HTTP请求都会自动携带到服务端;localStorage和sessionStorage仅本地存储,不参与请求传输。4.作用域:Cookie同域名下所有页面共享;localStorage同域名共享;sessionStorage仅限当前标签页会话。5.使用场景:Cookie用于登录态、token、用户标识;localStorage用于长期缓存静态数据、配置信息;sessionStorage用于临时存储页面会话数据。二、CSS核心面试题1、CSS选择器优先级规则?如何计算?CSS优先级遵循权重叠加、高权重覆盖低权重规则,从高到低排序:!important(最高)>行内样式(style)>ID选择器>类/伪类/属性选择器>标签选择器>通配符>继承样式权重计算规则(不进位):1.行内样式:10002.ID选择器:01003.类、伪类、属性选择器:00104.标签、伪元素选择器:00015.通配符、继承:0000同级权重下,后写的样式覆盖先写的样式;!important优先级最高,开发中尽量少用,避免样式难以维护。2、Flex布局常用属性及实战用法Flex是移动端和后台系统最常用的弹性布局,适配各种自适应场景,分为容器属性和项目属性:容器属性(父元素):1.display:flex:开启弹性布局,子元素默认横向排列。2.flex-direction:设置主轴方向,row横向、column纵向。3.justify-content:主轴对齐方式,center居中、space-between两端对齐、space-around均分。4.align-items:侧轴对齐方式,center垂直居中、stretch拉伸。5.flex-wrap:是否自动换行,wrap自动换行,nowrap不换行。项目属性(子元素):1.flex:缩写属性,控制缩放比例,常用flex:1平分剩余空间。2.flex-grow:放大比例,默认0;flex-shrink:缩小比例,默认1;flex-basis:基础宽度。3.align-self:单独设置子元素侧轴对齐方式。实战场景:页面水平垂直居中、列表自适应布局、等分卡片、自适应导航栏。3、BFC是什么?触发条件及作用BFC即块级格式化上下文,是浏览器的独立渲染区域,区域内的元素布局不会影响外部元素,外部也不会影响内部。常见触发条件:1.根元素html2.overflow不为visible(hidden、auto、scroll)3.float不为none4.position为absolute、fixed5.display为inline-block、flex、gridBFC核心作用:1.解决浮动塌陷:父元素高度塌陷问题,触发BFC后父元素可自适应浮动子元素高度。2.解决外边距重叠:相邻块级元素margin上下重叠,BFC容器可隔离边距。3.实现自适应两栏、三栏布局。4、CSS如何实现水平垂直居中?(3种常用方案)1.Flex布局(最常用、兼容性好)父元素设置display:flex;justify-content:center;align-items:center;即可实现子元素居中,适配所有场景。2.定位+transform父元素相对定位,子元素绝对定位,top:50%;left:50%;transform:translate(-50%,-50%);无需固定宽高,自适应居中。3.定位+margin子元素固定宽高,绝对定位后top/left/right/bottom全部为0,margin:auto;实现居中。三、JavaScript核心面试题(重点)1、var、let、const的区别?1.变量提升:var存在变量提升,声明前调用会返回undefined;let、const无变量提升,存在暂时性死区,声明前调用直接报错。2.作用域:var是函数作用域;let、const是块级作用域({}、if、for内部有效)。3.重复声明:var允许重复声明;let、const禁止重复声明。4.赋值规则:var、let可修改赋值;const声明常量,禁止重新赋值,引用类型(对象、数组)可修改内部属性。开发规范:日常全部使用let、const,禁止使用var,避免变量污染和作用域混乱。2、闭包是什么?优缺点及使用场景闭包指内层函数可以访问外层函数的变量,且外层函数执行结束后,内层函数依然保留对外层变量的引用,这种组合就是闭包。形成条件:函数嵌套、内层访问外层变量、内层函数被外部调用。优点:1.保留私有变量,实现数据私有化,避免全局变量污染。2.可以缓存数据,延长变量生命周期。缺点:1.变量常驻内存,容易造成内存占用过高,使用不当会引发内存泄漏。2.过度使用会增加代码复杂度。使用场景:防抖节流、封装私有方法、定时器回调、模块化开发、柯里化函数。3、原型与原型链的理解JS中所有函数都有prototype(显式原型),所有对象都有__proto__(隐式原型),对象的__proto__指向构造函数的prototype。原型的作用:共享方法和属性,减少内存占用,所有实例可以共用原型上的方法,无需重复创建。原型链:当访问对象的属性或方法时,自身没有就会顺着__proto__向上查找,直到找到Ototype,最终指向null,这条查找链路就是原型链。核心特点:原型链上的属性、方法所有实例共享,子类可以继承父类原型的能力。4、this指向问题?不同场景下的this指向this的指向在函数执行时确定,和定义位置无关,核心规则如下:1.普通函数直接调用:this指向window(浏览器)/global(node)。2.对象方法调用:this指向调用该方法的对象。3.构造函数调用:this指向new出来的实例对象。4.箭头函数:没有自己的this,继承外层作用域的this,且无法被call、apply、bind修改。5.定时器、事件回调:默认this指向window。修改this指向:call(立即执行,传参列表)、apply(立即执行,传参数组)、bind(返回新函数,不立即执行)。5、异步JS宏任务、微任务执行顺序(必问)JS是单线程语言,通过事件循环处理异步任务,任务分为宏任务和微任务,执行优先级:同步代码>微任务>宏任务。微任务(优先级高):Promise.then/catch/finally、async/await、queueMicrotask、MutationObserver。宏任务(优先级低):setTimeout、setInterval、Ajax请求、DOM事件、script整体代码。完整执行流程:1.先执行所有同步代码,清空执行栈;2.执行所有微任务,清空微任务队列;3.执行一个宏任务,再次清空微任务;4.循环往复,完成事件循环。6、Promise是什么?常用方法及优缺点Promise是ES6解决异步回调地狱的方案,是一个异步容器,代表未来的异步操作结果,有三种状态:pending等待、fulfilled成功、rejected失败。状态一旦改变不可逆。常用API:1.then:处理成功结果,可链式调用;2.catch:捕获异步错误;3.finally:无论成功失败都会执行;4.Promise.all:全部成功才成功,一个失败直接失败;5.Promise.race:谁先执行完成就返回谁的结果;6.Promise.allSettled:等待所有任务完成,返回所有结果状态。优点:解决回调地狱,代码扁平化、可读性强,支持链式调用,方便统一异常处理。缺点:Promise一旦创建立即执行,无法取消;单纯Promise无法处理大量异步串行逻辑,需要搭配async/await。7、async/await原理及使用注意事项async/await是ES2017推出的异步语法糖,基于Promise实现,让异步代码写法同步化,极大提升可读性。核心规则:1.async修饰的函数,返回值自动包装为Promise;2.await只能在async函数内部使用,用于等待Promise执行完成;3.await会阻塞当前代码执行,直到异步完成。注意事项:1.多个无依赖的异步请求不要串行await,会浪费时间,推荐用Promise.all并行执行;2.await报错会阻断代码,需要用try/catch捕获异常。8、防抖和节流的区别及实战场景两者都是高频事件优化方案,核心是限制函数执行次数,提升页面性能。防抖:触发事件后,延迟n秒执行,若期间再次触发,重置延迟时间。多次触发,只执行最后一次。场景:搜索框输入联想、窗口resize、表单输入校验。节流:固定时间内只执行一次,无论触发多少次。固定频率执行。场景:滚动加载、鼠标移动、按钮高频点击、页面拖拽。四、Vue3核心面试题(2026主流)1、Vue2和Vue3的核心区别?1.底层原理:Vue2基于Object.defineProperty实现响应式,无法监听新增、删除属性和数组下标修改;Vue3基于Proxy代理,完美支持全量数据监听。2.编程方式:Vue2选项式API;Vue3支持选项式+组合式API,代码聚合性更强,适合大型项目。3.性能优化:Vue3重写虚拟DOM,编译阶段做静态提升、补丁标记,渲染速度更快;打包体积更小。4.生命周期:Vue3移除beforeCreate、created,用setup替代;生命周期钩子全部改为onXXX形式。5.数据定义:Vue2data是对象;Vue3组合式API用ref、reactive定义响应式数据。2、ref和reactive的区别?1.适用类型:ref支持基本数据类型(字符串、数字、布尔)和引用类型;reactive仅支持对象、数组、Map、Set等引用类型。2.底层实现:ref底层是对value属性做响应式处理;reactive基于Proxy代理整个对象。3.取值方式:ref数据需要通过.value取值,模板中可省略;reactive直接取值。4.使用场景:简单基础数据用ref,复杂对象、表单、列表数据用reactive。3、Vue3组合式API优势是什么?1.代码聚合:按功能逻辑组织代码,不再按选项(data、methods、watch)拆分,大型项目可读性、维护性更高。2.逻辑复用:可通过自定义hooks抽离通用逻辑,替代Vue2的mixin,避免命名冲突、逻辑混乱问题。3.类型支持更好:完美适配TS,类型推导更精准。4.按需引入:API可按需导入,减少冗余代码,减小项目体积。4、Vue双向绑定原理Vue3双向绑定核心:Proxy数据劫持+视图更新+事件监听。1.通过Proxy劫持数据的读取、修改操作,数据变化时触发视图更新;2.视图输入时,通过input事件监听用户输入,实时修改数据;3.数据驱动视图、视图反馈数据,实现双向同步。5、Vue生命周期及常用场景Vue3常用生命周期:1.setup:组件创建阶段,初始化数据、定义方法、调用接口;2.onMounted:DOM挂载完成,操作DOM、初始化图表、绑定全局事件;3.onUpdated:数据更新、DOM重新渲染后执行;4.onUnmounted:组件销毁,清除定时器、解绑事件、销毁实例,防止内存泄漏。五、前端工程化&性能优化(面试高频压轴)1、Webpack/Vite的区别?为什么现在多用Vite?1.构建原理:Webpack基于打包构建,启动时需要编译打包所有文件,启动速度慢;Vite基于原生ESModule,启动时不打包,按需加载文件,启动极速。2.热更新:Webpack热更新需要重新编译模块;Vite精准更新对应模块,速度更快。3.适用场景:Webpack生态成熟,兼容老项目、复杂项目;Vite轻量化、速度快,适配Vue3、React新项目。4.打包产物:生产环境Vite依然基于Rollup打包,打包质量和Webpack持平。2、前端页面性能优化方案(最全实战版)1.加载优化:静态资源CDN加速、图片压缩/懒加载/webp格式、路由懒加载、组件按需引入、大文件分割打包、去除冗余依赖。2.代码优化:减少DOM操作、避免频繁重排重绘、使用防抖节流优化高频事件、合理使用缓存(本地缓存、接口缓存)。3.网络优化:接口请求合并、开启gzip压缩、HTTP缓存(强缓存、协商缓存)、避免无效请求。4.渲染优化:开启硬件加速、合理使用CSS3属性、避免布局抖动、虚拟列表处理长列表数据。5.工程化优化:代码压缩、Tree-shaking去除无用代码、环境分离、移除console、按需导入组件库。3、HTTP缓存机制(强缓存、协商缓存)HTTP缓存是前端性能优化核心,用于减少重复请求,提升页面加载速度。1.强缓存(无需请求服务器,状态码200frommemory/diskcache)响应头:Cache-Control(max-age)、Expires(过期时间),优先级Cache-Control更高。2.协商缓存(需要请求服务器,状态码304)响应头:Last-Modified/If-Modified-Since(文件修改时间)、ETag/If-None-Match(文件唯一标识)。服务器对比资源是否更新,未更新则返回304,使用本地缓存;更新则返回新资源。六、浏览器原理&网络面试题1、从输入URL到页面渲染完成的全过程1.DNS解析:将域名解析为服务器IP地址;2.TCP三次握手:建立可靠传输连接;3.发送HTTP请求:携带请求头、参数、Cookie等信息;4.服务器处理请求:后端接口处理,返回HTTP响应数据;5.浏览器接收响应:解析HTML、CSS、JS;6.构建DOM树、CSSOM树,生成渲染树;7.布局(重排)、绘制(重绘)、合成图层;8.页面渲染完成,加载静态资源、执行异步JS。2、重排和重绘的区别?如何优化?重排(回流):元素布局、尺寸、位置发生变化,浏览器重新计算页面布局,消耗性能极高。重绘:元素样式、颜色、透明度变化,不改变布局,仅重新绘制,性能消耗较低。优化方案:1.批量修改DOM,避免频繁读写DOM;2.使用文档碎片、虚拟DOM减少真实DOM操作;3.频繁操作元素脱离文档流,修改完成再归位;4.开启GPU硬件加速,提升渲染效率。3、HTTP1.1、HTTP2、HTTP3区别1.HTTP1.1:支持长连接、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险企业风险管理实践备考习题
- 全国执业兽医考试畜牧兽医法规复习题附答案详解(综合卷)
- 2026年医保政策知识培训试题及答案
- 卫生法律法规的试题及答案
- 硬式内镜清洗消毒设备考试题库及答案
- 商超消防安全知识竞赛题库及参考答案
- 四川省南充市2026年第三期住房和城乡建设领域现场专业人员培训考试(装饰装修施工员)复习题库
- 燃气抢修技术员岗位面试题及答案
- 2026年院前急救医护人员考核题库(含答案)
- 司磅试题及答案
- 2025~2026学年七年级上学期第一次月考数学试卷2【附解析】
- 河南省郑州市实验中学2026-2027学年高二上学期第一次月考英语试卷
- 加入保险行业的十五大理由
- 酮症酸中毒指南2025版
- 2026年河南省高考物理试卷(含答案及解析)
- TAVR麻醉管理策略
- 泥结石路面施工方案
- 创面修复技术
- 2026年国家电网招聘之电网计算机考试题库500道(精练)
- 雨课堂学堂在线学堂云《研究生学术规范与学术诚信》单元测试考核答案
- 凤仙花花果实种子课件
评论
0/150
提交评论