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

还记得2020前端面试之路

时间:2023-03-31 18:49:58 vue.js

2020距离投出第一份简历已经将近两个月了。虽然还没写完,但还是想先记录一下。那些裸脸和讲话的人应该小心。下面都是真人面试,真的会考上的。包括腾讯、阿里、今日头条、滴滴、美团、好未来、真容宝、快手、贝壳等,题目分类。题主中途精神崩溃,幸好有靠谱的领导朋友分析,靠谱的老公撑腰,终于忍到了现在。日常问题自我介绍(99%会问,最好准备一下)htmlmeta一般有哪些属性?css的flex弹性布局你了解吗?你用过哪些?弹性布局??怎么让它一左一右呢?定位,谈类型;absoluteparent没有relative,what定位有几种方式,左右布局,标准盒模型和怪异盒模型的区别,BFC,讲解元素居中的方法js基础篇闭包,原型链(手写闭包)javascript继承说一下原型链,字符串有原型吗(是的,__propto__指向Object),是不是所有的对象都有原型?了解eventloop机制(我会问你具体怎么走,你一定是没看懂才能完全hold住);async与await的任务是什么;为什么它是微任务示例问题1console.log('scriptstart');setTimeout(function(){console.log('setTimeout');},0);Promise.resolve().then(function(){console.log('promise1');}).then(function(){console.log('promise2');});console.log('脚本结束');示例2:输出什么,为什么?例3asyncfunctionasync1(){console.log('async1start')awaitasync2()console.log('async1end')//w1}asyncfunctionasync2(){console.log('async2')}console.log('scriptstart')setTimeout(function(){//h1console.log('setTimeout')},0)async1();newPromise(function(resolve){console.log('promise1')resolve();}).then(function(){console.log('promise2')//w2})console.log('scriptend')例4任务队列理解setTimeout(()=>{console.log(1);Promise.resolve().then(()=>{console.log(2);});},0)setTimeout(()=>{console.log(3);Promise.resolve().then(()=>{console.log(4);});},0)DOM操作-如何添加、删除、移动、复制、创建和查找节点cookie、localStorage、如何解决sessionStorage和跨域的区别使用场景?有几种方法?为什么跨域方法跨域,跨域到后端?为什么要跨域,跨域实现;option在什么情况下会跨域发送,cookie允许跨域配置和Credentials:true缓存有哪些?,协商缓存的返回状态是什么,强缓存的返回状态是什么?call、apply、bind的区别原生如何写ajax?get和post的区别?帖子的参数放在哪里?post/get的区别,contentType的类型js实现深拷贝(手写代码)js的基本数据类型;如何判断数据类型(放弃前必须回答对象原型);如何声明符号[1,2,3].toString()和{a:10}.toString分别打印什么,邮箱的正则表达式为什么要这样写?编写一个正则表达式来匹配//

\垃圾回收机制,闭包应用场景事件循环原理判断是否为数组--instanseof,是否为it实例浏览器缓存判断后面对象如何形成循环vara={b:c}varc={d:d}变量d={a:a}ES6Promise实现原理Promise实现(手写代码)如何判断5对promiseAll--->promise原生实现结合trycatchtry{Promise.reject(2).catch((e)=>{console.log(e)thrownewError(3)})}catch(e){console.log(e)}try{constdata=awaitPromise.reject(2);控制台日志(数据);安慰。日志(4);thrownewError(3);}catch(e){console.log(e)asyncawaitjs实现继承,ES6实现继承,es6有用吗?ES6类有用吗?Babel将es6转换为ES5?ES5实现继承?setmap/weakmapmap和forEach的区别Es6commonJSes6和tsfunction的区别和指向函数的区别m:function(){console.log(this)},n:()=>{console.log(this)}};a.m();a.n();varx=a.m;vary=a.n;functionf(){x();y();}x();y();deconstructconstobj={a:{b:1,},c:2}constobj1={...obj};constobj2={...obj1};obj.a.b=3;obj.c=4;组件如何通信?父子如何沟通?如何调用父组件的方法来调整子组件?Vuexvue生命周期;beforeCreated创建的区别;created和beforeMouned的区别;如果是父组件和子组件,生命周期是怎样的这样一个SPA,vue单页返回时如何回到上次滚动的位置(测试vue-router)vue双向绑定原理那么如何向订阅者发送消息呢?vue数据到查看的过程(要回答Vdom,不问也要回答,否则扣分~~~)vue-routerrouting:hash#history;history的主要API;pushStatereplaceState区分vue模板,虚拟Dom到真实Dom的转换过程vueMVVM驱动的原理是什么?详细说一下vue的循环。哪些周期更常用?他们的应用场景nextTick,他的原理是什么,vue.nextTick(()=>{})是怎么实现的,输出数据如下:{a:1}vue.nextTick(()=>{this.a=2console.log(this.a)})Promise.resolve().then(()=>{this.a=3;})console.log(this.a)vue-router路由,默认是什么[hash】vue路由的钩子函数----未接组件的通信方式、vuex的数据流向、vuex的原理、vue过滤器有哪些、数字格式化{{num|formatAmount(0)}}它的原理vue使用use的时候会发生什么?computed计算属性的原理。为什么vuex要这样设计?为什么要使用传参的方式呢?vue-routervue功能组件和非功能组件登录权限内容路由导航//newVue(),自定义事件双向绑定原理v-modelobject.property的缺点,为什么不能听听vue3的改进.0proxyvue的原理jquery和vue的区别vue获取元素的方法nextTick,created和mounted的原理区别就是computed和watch的区别,哪个更高效?为什么数据是函数?data的函数可以改成箭头函数吗?vue3.0为什么要使用代理数据来添加新对象如何让它更新到组件-vue.setwebpack你用过webpack打包吗?webpackloader(模块)和plugin使用的webpackloader和plugin有什么区别,为什么要用loader,各个loader的作用为什么webpack4可以在命令行直接执行webpack有哪些高级属性用到了?热重载是如何工作的?如何区分不同环境下的打包(packge.json)?知道自定义插件进程的require原理,es6到es5的原理,treeshaking的原理,以及如何充分利用treeshakingnpm一文npm发布了多少包?打包格式?npminstallhttp文章http缓存怎么了?http缓存,这两个缓存是什么关系,一个页面是如何从输入的URL转化为完成页面加载显示的,这个过程发生了什么?HTTP/2和HTTP1.1有什么区别?什么是http状态码?当浏览器输入地址时会发生什么?你了解http2.0吗?rem和em的区别;如果要在chrome上显示10px的文字,rem是基于什么布局的?混合开发?如何实现微信开发的登录和分享?你遇到过哪些移动端的陷阱如何适配PC端和移动端如何做移动端调试问题移动端设置PC端和移动端开发的区别性能优化如何优化和减少页面加载时间性能优化相关?项目做了哪些性能优化?静态资源加载速度的优化机制有哪些?AutoComplete组件(又名搜索组件、自动补全组件等)设计时需要考虑哪些问题?浏览器第一次访问、第二次访问、第三次访问的区别DOMContentLoad和ttfb的区别ready和onload的区别,先执行哪个用于服务器端koa2中间密钥?你知道哪些部分?节点进程管理koa2节点管理节点知道多少节点知道多少手写代码和算法请用js把一个二维数组转成树形结构例如:下面的数据[["a","aa","aaa","aaaa"],["b","bb","bbb"],["a","ab","aba"],["a","aa","aab"]]变成:[{“名字”:“a”,“孩子”:[{“名字”:“aa”,“孩子”:[{“名字”:“aaa”,“孩子”:[{“名字”:“aaaa","孩子":[]}]},{"名字":"aab","孩子":[]}]},{“名字”:“ab”,“孩子”:[{“名字”:“aba”,“孩子”:[]}]}]},{“名字”:“b”,“孩子”“:[{“名字”:“bb”,“孩子”:[{“名字”:“bbb”,“孩子”:[]}]}]}`fn=f(n-1)+f(n-2)f0=0f1=1n>=0positiveintegerfn`arrayflattening(手写代码)nestedarrayflattening[1,2,3,4,[5,6,[7]],8][1,2,3,4,5,6,7,8]除了常规的方法,还有一个奇葩的方法,就是将字符串完全转换,然后去掉方括号。查询分析?a=0&a=1&a=2&c&url=urlcontent#333into{query:{a:[0,1,2],url:'urlcontent'},hash:''handwrittenvardata={a:{b:{c:'ScriptOJ'}}}控制台。日志(safeGet(数据,'a.b.c'))//=>scriptojconsole.log(safeGet(data,'a.b.c.d'))//=>返回undefinedconsole.log(safeGet(data,'a.b.c.d.e.f.g'))//=>返回undefinedconsole.log('ScriptOJ')//=>PrintScriptOJ手写阶乘5*4*3*2*1拖写一个计算两个矩形是否碰撞的函数来实现功能。函数是对数组进行洗牌,要求不使用sort来洗牌手写快速排序手写promise实现浅拷贝深拷贝如何让全0走到最后二叉树[1,2,5,3]函数ofgetting10两个排好序的数组(升序)排好序后组合成一个排好序的数组(升序)二分查找算法5000→5,000,5430342→5,430,342varlist=[{age:1},{age:13},{age:8}],按照age的值从大到小排序varlist=[{age:1},{age:13},{age:8}],输出重复次数最多的年龄?重复了多少次?(本题与第一题无关)要柯里化一个函数,请实现`curry(Function)=>Function`方法,传入一个多参数函数,返回一个单参数函数示例:constsub=函数(a,b,c,d){返回a+b+c+d;}constsubCurry=curry(sub);sub(1,2,3,4)=subCurry(1)(2)(3)(4)sub(1,2,3,4)=subCurry(1,2)(3)(4)项目流程什么是前端在线流程?如何保证你的代码质量?代码有问题怎么办?过程是怎样的?用户如何访问他?如何保证代码质量Openquestion你目前最感兴趣的web技术是什么最近了解的前端技术是什么?你有任何问题问我吗?你遇到的一些困难。介绍你的一个项目。告诉我如何优化您的用户体验。最近学习了哪些技术?你积累了什么?你为什么离职?怎么设计组件,怎么设计对话框,要考虑什么问题,你平时是怎么学习的,你想做什么项目?你想问我的技术管理什么?mock方法如何封装你的爱好?你最自豪的事情?你的长处和短处。你想问我什么?组件开发注意事项