当前位置: 首页 > Web前端 > vue.js

2年网易灵犀面试经验!太注重工程了!

时间:2023-03-31 23:33:24 vue.js

序大家好,我是林三鑫。用最通俗易懂的语言解释最难的知识点是我的座右铭。基础是进阶的前提是我的初衷。今天给大家分享一个大厂的面授经验——网易灵犀话题1,聊天项目2,webpack和rollup的区别,打包后的产品有什么区别?3、postcss的原理4、webpackbabelvue中使用AST。你是怎么理解AST的?5、如何提高webpack的构建速度?6、你用过vite吗?为什么快?7、打包npm需要注意什么?如何使用webpack更好地构建?8.如何在vue项目中实现按需加载?9、webpack如何优化前端性能?10.你写过loader和plugin吗?总体思路是什么?11.在Array中实现reduce方法?两侧1.谈简历,谈项目2.vue中nexttick的原理3.vue的响应式原理4.小程序的架构5.小程序如何与native层通信6.算法题要求:seekpublicstringsPrefix,如['abcaaa','abcddd','abcadad']==>'abc'7.算法题要求://区间合并://用数组区间表示若干区间的集合,一个间隔是intervals[i]=[starti,endi]。//请合并所有重叠区间并返回一个非重叠区间数组,该数组恰好覆盖输入中的所有区间。//示例1://输入:intervals=[[1,3],[2,6],[8,10],[15,18]]//输出:[[1,6],[8,10],[15,18]]//解释:区间[1,3]和[2,6]重叠,合并为[1,6]。//示例2://输入:intervals=[[1,4],[4,5]]//输出:[[1,5]]//解释:区间[1,4]和[4,5]可以被认为是重叠的间隔。回答部分1.简单说说项目2.webpack和rollup的区别,打包后的产品有什么区别?webpack:代码拆分,按需加载,适用于应用程序打包,支持tree-shakingrollupwebpack2:所有资源打包在一处,一次性加载,适用于库打包,支持tree-shaking3、postcss原理?第一步:调用postcss相关的loader并传入参数第二步:将css文件转化为AST第三步:根据第一步的参数修改AST第四步:将修改后的AST转化为普通代码的第五步:输出代码交给下一个loader处理4.webpackbabelvue使用AST。你是怎么理解AST的?现在的很多工具,比如webpack、vite、eslint、babel等,都离不开一个东西——AST。AST是普通代码,使用工具,根据不同的代码节点类型,转换成JSON格式的数据5.如何提高webpack的构建速度?后面会单独出一篇文章6.vite用过吗?为什么快?1.esbuild预构建依赖:代码分为依赖和源代码。dependencies就是那些一般不会改变,被缓存的npm包;源代码是代码中经常更改的部分。成为ESModule后,交给浏览器,给浏览器施加压力,从而提高项目启动速度。3、按需加载:浏览器根据ESModule使用http请求,按需加载需要的页面。4.使用协商缓存,缓存文件,没有变化的文件不需要重新加载7.用npm打包需要注意什么?如何使用webpack更好地构建?后面会单独出一篇文章8、如何在Vue项目中实现按需加载?箭头函数+import9,webpack如何优化前端性能?稍后将单独发表文章。10.你写过loader和plugin吗?总体思路是什么?loader加载器的作用是处理非js文件。它是一个函数。实现原理是:使用相应的转换插件,将待处理文件的内容转换成AST(抽象语法树),然后根据loader规则对AST进行处理,处理后,转换成原来的内容格式,然后输出,达到处理内容的效果。pluginplugin的作用是扩展webpack的打包功能。它是一个类,它的用法是newPlugin(option)。这个类内部有一个apply方法,打包的时候会执行,这个apply方法接收的参数中有一个plugin方法。这个方法中有很多钩子函数。使用这些钩子函数在不同的打包阶段做一些事情,比如修改文件、添加文件、删除文件等。11、实现Array中的reduce方法?Array.prototype.sx_reduce=function(cb,...args){letpre,start=0if(args.length){pre=args[0]}else{pre=this[0]start=1}for(leti=start;i'abc'问题解决:varlongestCommonPrefix=function(strs){if(!strs.length)return''if(strs.length===1)returnstrs[0]conststart=strs[0]letprefix='',pre=''for(leti=0;istr.indexOf(prefix)!==0))returnprepre=prefix}returnpre};7.算法题要求://区间合并://用数组区间表示若干个区间的集合,其中单个区间为intervals[i]=[starti,endi]。//请合并所有重叠区间并返回一个非重叠区间数组,该数组恰好覆盖输入中的所有区间。//示例1://输入:intervals=[[1,3],[2,6],[8,10],[15,18]]//输出:[[1,6],[8,10],[15,18]]//解释:区间[1,3]和[2,6]重叠,合并为[1,6]。//示例2://输入:intervals=[[1,4],[4,5]]//输出:[[1,5]]//解释:区间[1,4]和[4,5]可以被认为是重叠的间隔。解决方案:constmerge=function(intervals){if(intervals.length===1)returnintervalsintervals.sort((a,b)=>a[0]-b[0])constres=[]让我=0,j=1while(j=jArr[0]){intervals[i]=[Math.min(iArr[0],jArr[0]),Math.max(iArr[1],jArr[1])]j++if(j===intervals.length)res.push(intervals[i])}else{res.push(iArr)i=j++if(j===intervals.length)res.push(jArr)}}returnres};8、算法题要求://仿模板字符串处理函数,//如“Title:${title},MainArtist:${artist[0]},Album:${album.name}”,//{//title:'山湖海',//artist:['周杰伦','梁心怡'],//album:{//publishTime:'2006-11-1',//name:'十一月的肖邦'//}//};前端菜鸟程序员。如果你有上进心,喜欢前端,想学前端,那我们可以交个朋友,一起钓鱼哈哈,摸摸鱼群,加我,请注意[思想]