【拼多多】前端岗-一二三轮面试-已通过

一面

面试官:先来个布局的吧!如何让一个元素垂直居中
我:行内元素就line-height、块级元素就flex、grid、table-cell布局都可以,还有定位+translate,这个兼容性较好。
面试官:了解过新的css属性?比如layer
我:没有
面试官:说一下this
我:this是运行时上下文,是函数内为了访问类的属性而存在,其中箭头函数的this就是其定义时外部的this,而bind、call、apply都可以改变函数内this的指向。
面试官:箭头函数的this可以改变吗?
我:没试过
面试官:做道题吧,深拷贝
我:知道,但是没写过
我:写了个递归+复制对象的属性
面试官:如果入参不是对象怎么办,比如boolean、number、string、null、undefined、array
我:补充了很多判断代码,基础数据类型/null/undefined就直接返回、array/objet就forin遍历然后返回
面试官:如果a对象引用了b对象,b对象引用了a对象怎么办,引用循环问题
我:写了一个cache缓存器,如果遍历过程中cache中有a,则直接返回,不再深拷贝
面试官:你这个cache怎么清空,什么时候清空
我:这里我并没有将cache传入给深拷贝函数,在函数体里面清空,而是在函数体外定义、清空cache。然后面试官推荐了一个写法,将cache传入进去,然后在深度为1时清空它。属于缓存优化
面试官:再做一道题吧,promise相关的
我:如果了解promise的话,这题不难,说出打印顺序即可
一面说实在我还是很菜的,深拷贝得面试官多次提醒才能完善,但至少还在可接受范围内,面试官很柔和。

二面

面试官:你先做一下这道题,只能使用队列,不能使用别的数据结构来实现栈的功能。
我:考虑了几分钟后,我说出了思路,在入栈时,调用的入队,同时更新min最小值。
出栈时将队列中的最后一位的前面的元素都拿出来,然后放入队列后,然后拿出最后一个就是出栈元素。
但是打印最小值时有点问题,我想了一会,然后得出,在出栈时,会遍历到所有的元素,所以可以在这个过程更新最小值。
面试官:好,那你写出来吧
我:写呀写,写完之后,有个用例没法通过,然后人脑debug一下,原来在出栈时,更新最小值时,得先将最小值重置。
面试官:问了简历里,写的所有的项目
我:我是做b端的金融web网站,所以其实不太会有实现的难点,所以能说的很浅
面试官:为什么离开上家公司
我:因为我一直得用vue2+element来做项目,想用新的技术栈,比如react、vue3来做
面试官:那你说一下vue和react的差别吧
我:vue2了解的多,react了解不多,两者最大的区别是虚拟dom结构,vue2是一颗结构很正常的树,react是一个fiber树,两者树的实现方式不一样。react的patchnode算法和vue的不一样,react是全量比较vDom,vue是组件层级比较vDom。react和vue的对于children的比较算法也不一样,然后,个人觉得vue高效一些(这里答的有点模糊了我)。
二面面试官属于硬核派,上来先做题,但确实是知识面碾压。

三面-主管面-电话面

之前不知道主管面是什么,我以为还是技术面,所以我回答的有点牛头不对马嘴了。
面试官就主要问项目实现方式(不需要硬核的技术层),前公司的绩效呀、加班呀,就没了。
我感觉这一面我。。。
xdm 面试通过了。good luck for u, good luck for me

发表评论

后才能评论