版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年前端开发工程师高级面试题集一、JavaScript核心基础(共5题,每题8分)1.题目:javascriptleta={x:1};letb=a;b.x=2;console.log(a.x);//输出什么?为什么?答案与解析:输出`2`。因为`a`和`b`指向同一个对象,修改`b.x`会直接改变对象的`x`属性,所以`a.x`也会变成`2`。2.题目:javascriptasyncfunctionasync1(){console.log('async1start');awaitasync2();console.log('async1end');}asyncfunctionasync2(){console.log('async2start');console.log('async2end');}console.log('scriptstart');async1();console.log('scriptend');输出顺序是什么?解释`await`的原理。答案与解析:输出顺序:1.`scriptstart`2.`async1start`3.`async2start`4.`async2end`5.`async1end`6.`scriptend``await`会暂停当前异步函数的执行,直到Promise解决后再继续。但`async`函数本身仍是同步执行,所以`async1`和`async2`会按顺序执行。3.题目:javascriptconstobj={a:1};functiontest(){obj.a=2;obj={b:3};}test();console.log(obj.a);//输出什么?为什么?答案与解析:输出`1`。在函数`test`中,`obj={b:3}`是重新赋值了`obj`变量,而不是修改原对象的`a`属性。外部的`obj`仍然是`{a:1}`。4.题目:javascriptconstarr=[1,2,3];arr.forEach(item=>item++);console.log(arr);//输出什么?为什么?答案与解析:输出`[1,2,3]`。`forEach`的回调函数是`item++`,但不会修改原数组,因为回调函数中的`item`是浅拷贝,不是引用。5.题目:javascriptfunctionA(){this.x=1;}functionB(){this.y=2;}A.prototype=newB();constinstance=newA();console.log(instance.x,instance.y);//输出什么?为什么?答案与解析:输出`1undefined`。`A`的原型指向`B`的实例,所以`instance.x=1`。但`instance.y`不存在,因为`B`的构造函数没有被显式调用。二、React与Vue框架(共5题,每题8分)1.题目:React中,`React.memo`和`PureComponent`的区别是什么?何时使用?答案与解析:`React.memo`是高阶组件,用于包装函数组件,仅在props变化时重新渲染。`PureComponent`是类组件的优化,通过`shouldComponentUpdate`实现浅比较。两者核心相同,但`memo`更灵活(可自定义比较函数)。适用于props变化不频繁的场景。2.题目:Vue3的`ref`和`reactive`的区别是什么?如何选择?答案与解析:`ref`用于单个值(自动转为响应式),`reactive`用于对象/数组(深度响应式)。选择:-单个数据用`ref`,如`ref(count)`。-对象用`reactive`,如`reactive({obj:{a:1}})`。3.题目:React中,如何优化组件性能?列举3种方法。答案与解析:1.`React.memo`避免不必要的渲染。2.`useCallback`缓存回调函数。3.`useMemo`缓存计算结果。4.题目:Vue3中,`v-memo`指令的作用是什么?答案与解析:`v-memo`是Vue3新增的memoization指令,用于缓存子组件渲染结果,减少重复渲染。适用于计算密集型子组件。5.题目:React中,`useEffect`的依赖项为空数组`[]`时,有什么特点?答案与解析:组件挂载后执行一次,且仅执行一次。适用于副作用操作(如设置定时器),不会在更新时重复执行。三、CSS与布局(共5题,每题8分)1.题目:如何实现一个100%宽的固定高度导航栏,在移动端自适应?答案与解析:css.navbar{width:100%;height:50px;background:#333;position:fixed;top:0;left:0;}注意`z-index`和`overflow:hidden`避免内容被遮挡。2.题目:Flexbox和Grid的区别是什么?何时使用?答案与解析:-Flexbox:一维布局(行/列),适合组件对齐。-Grid:二维布局(行/列/交叉轴),适合整体页面布局。选择:Flexbox用于列表或组件,Grid用于复杂网格。3.题目:如何实现一个水平居中且等宽的无限轮播图?答案与解析:css.carousel{display:flex;justify-content:space-around;overflow:hidden;}结合`transform`实现平滑滚动。4.题目:CSS变量和传统变量的区别是什么?答案与解析:-CSS变量:`var(--name)`,支持嵌套和计算,适合主题切换。-传统变量:`#color`,仅单一值,不支持计算。5.题目:如何实现一个响应式水滴形按钮?答案与解析:css.button{border-radius:50%;transition:all0.3s;}.button:hover{border-radius:20%;}利用`border-radius`和`:hover`实现变形。四、性能优化(共5题,每题8分)1.题目:前端性能优化的关键指标有哪些?如何提升?答案与解析:指标:LCP、FID、CLS。优化:-LCP:优化图片大小和格式(WebP),使用`loading="lazy"`。-FID:减少重排重绘(`transform`代替`margin`),使用`requestAnimationFrame`。-CLS:避免`layoutshift`(固定高度占位)。2.题目:如何实现图片懒加载?答案与解析:html<imgsrc="placeholder.jpg"data-src="real.jpg"loading="lazy">或使用`IntersectionObserver`监听进入视口。3.题目:Webpack的`CodeSplitting`如何实现?答案与解析:js//entry.jsimport('lodash').thenlodash=>{console.log(lodash);};或配置`optimization.splitChunks`。4.题目:如何减少HTTP请求?答案与解析:-合并JS/CSS文件。-使用雪碧图或SVG。-CDN加速。5.题目:如何优化长列表滚动性能?答案与解析:-使用`requestAnimationFrame`分帧渲染。-`IntersectionObserver`懒加载子项。-`transform`代替`margin`。五、跨端与工程化(共5题,每题8分)1.题目:Vite和Webpack的区别是什么?Vite的优势是什么?答案与解析:-Vite:基于ES模块预构建,热更新更快。-优势:开发环境启动快,按需编译。2.题目:如何实现PWA(ProgressiveWebApp)?答案与解析:-`manifest.json`:定义应用图标。-`serviceworker`:离线缓存。-`localStorage`:本地数据存储。3.题目:如何实现Web组件(CustomElements)?答案与解析:javascriptclassMyElementextendsHTMLElement{constructor(){super();this.attachShadow({mode:'open'});this.shadowRoot.innerHTML='<p>Hello</p>';}}customElements.define('my-element',MyElement);注册自定义标签。4.题目:微前端(MicroFrontends)的优缺点是什么?答案与解析:优点:-模块化开发。-多团队协作。缺点:-通信复杂。-构建配置高。5.题目:如何实现跨浏览器兼容性?答案与解析:-使用`autoprefixer`自动添加前缀。-标准化API(如`Promise`代替`window.onload`)。-测试工具:`Babel`、`CanIUse`。六、安全与网络(共5题,每题8分)1.题目:XSS攻击的原理是什么?如何防御?答案与解析:原理:注入恶意脚本。防御:-输入过滤(`textContent`代替`innerHTML`)。-CSP(`Content-Security-Policy`)。2.题目:CSRF攻击的原理是什么?如何防御?答案与解析:原理:伪装用户请求。防御:-Token验证(`CSRFtoken`)。-SameSiteCookie。3.题目:HTTP和HTTPS的区别是什么?答案与解析:-HTTP:明文传输。-HTTPS:加密传输(TLS/SSL)。HTTPS更安全,但消耗更多资源。4.题目:如何优化缓存策略?答案与解析:-`Cache-Control`:控制缓存时长。-`ETag`:验证缓存有效性。-ServiceWorker缓存API。5.题目:如何检测浏览器兼容性问题?答案与解析:-`CanIUse`查API兼容性。-测试工具:`BrowserStack`、`Selenium`。七、Node.js与后端交互(共5题,每题8分)1.题目:如何用Node.js实现RESTfulAPI?答案与解析:javascriptconstexpress=require('express');constapp=express();app.get('/users',(req,res)=>res.json([{id:1,name:'Alice'}]));app.listen(3000,()=>console.log('Serverrunning'));使用`express`框架。2.题目:如何用Axios实现异步请求?答案与解析:javascriptaxios.get('/api/data').then(res=>console.log(res.data));支持Promise语法。3.题目:如何实现WebSocket通信?答案与解析:javascriptconstWebSocket=require('ws');constwss=newWebSocket.Server({port:8080});wss.on('connection',ws=>{ws.on('message',msg=>console.log(msg));});双向通信。4.题目:如何用Node.js处理文件上传?答案与解析:javascriptconstexpress=require('express');constmulter=require('multer');constapp=express();constupload=multer({dest:'uploads
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古交通集团有限公司社会化招聘168人参考考试试题及答案解析
- 2025山东劳动职业技术学院(山东劳动技师学院)招聘8人参考考试试题及答案解析
- 2025年度郑上新城集团社会化公开招聘工作人员5人考试重点题库及答案解析
- 2025南京医科大学招聘人员17人备考核心题库及答案解析
- 2025年体检行业教育培训合同协议
- 2026广西医科大学附属口腔医院人才招聘35人笔试重点试题及答案解析
- 2025贵州黔东南州台江县档案馆招聘临聘工作人员1人告考试重点试题及答案解析
- 2026广西防城港市第二中学春季学期临聘教师招聘考试核心题库及答案解析
- 2026年福建省三明市公开招聘紧缺急需专业新任教师考试参考试题及答案解析
- 2025年碳交易中介协议(生态碳汇)
- 2025年榆林市住房公积金管理中心招聘(19人)笔试考试备考题库及答案解析
- 2025年常山县机关事业单位公开招聘编外人员43人笔试考试参考试题及答案解析
- 2025年常州信息职业技术学院单招职业倾向性测试题库附答案
- 2025年云南省人民检察院聘用制书记员招聘(22人)模拟笔试试题及答案解析
- 2025年党的基础知识题库及答案入党理论知识考试试题
- GB/T 38082-2025生物降解塑料购物袋
- 2025年10月自考02275计算机基础与程序设计试题及答案版
- 2026国网宁夏电力有限公司招聘高校毕业生统一考试(第一批)备考题库及答案详解(网校专用)
- 智能教育:科技驱动下的学校革新
- 汉字笔画练习字帖
- 酒店住宿和餐饮行业企业安全风险分级管控清单
评论
0/150
提交评论