虾皮前端 1面2面凉经
虾皮笔试:代码题不难,全a了,单选/不定向选考到挺多基础的(如子网掩码)。还有涉及盒模型、网络安全等内容。
一面:
先撕三道代码,都是基础
1. compose函数复合
2.bind实现
3.二分查找
然后是基础问题,谈谈以下方面的理解。
1.同源策略与跨域
2.对promise的理解
3.对this的理解
4.说一下事件队列
5.盒模型
6.BFC
7.对http2的了解
(顺序是打乱的,可能有些遗漏)
之后是对vue原理的理解,要深入理解,比如究竟双向绑定中watcher怎么被添加到dep列表中的
1.vue双向绑定原理(深入源代码,Observe/Watcher/Dep,发布订阅模式)
2.对虚拟dom的理解(虚拟don就是在js中设计数据结构模拟真实dom)
3.data/watch/computed/method的区别,实现原理(data就是双向绑定了,至于computed和watch则是在watcher类中做一些特殊处理,不要仅仅浮在“有缓存”这样的回答上,可以深入去了解一下具体是怎么实现的)
3.keep-alive原理
虽然一面中没有问到,不过对于vuerouter两种模式如何实现的,spa/sma的优缺点等等问题还是要知道的
二面:
先介绍了自己做过的项目,再根据项目提一些问题。
由于项目相关,我的题目集中在事件队列、promise和async/await上
最后做了一道链式调用的实现(没完全实现)
链式调用实现一个class,能够产生如下效果
obj.eat().sleep(5).work()
打印eat,打印sleep,等待5s后打印work
搜索lazyman实现可以有解法,重点在于事件队列,所以事件队列,promise,await/async要重点理解。
还有问到一道错误处理的,记得是在promise中settimeout抛出错误为什么不会被catch到。
还有一道promise转await/async的。
本次二面围绕eventloop,本人了解的还是不够深入导致面试失败,不过虾皮的面试体验真的很好,面试官都超和善~
#面经##Shopee##校招##前端工程师#