#记录一下被腾讯二捞一面的前端凉经
第一次一面
1.自我介绍
2.问项目中的细节,主要是静态资源的加载,以及一些细节功能的实现,有说有笑,基本都答上了,没有深入,都按照简历问的(此处30min)
3.cookie,sessionStorage,localStorage的区别和应用。
4.两道算法题:
(1)记录一个数组中出现频次最高的元素(可能有多个元素频次一样高,全部输出。PS:坑点在于数组的元素都是对象,不可以用object,必须用Map来使对象作为key值,我这里用了object,所以编译错误,但是面试官说逻辑都是对的)
(2)一道概率学问题,至今没有弄懂题意,题目原义:将一个数组打乱,使每个元素不能落在原先的位置上,且落入其他位置的概率相等。
一面结束:我说希望能来到您的部门,面试官笑起说,我也希望你快点来呀,然后无情挂掉。╮(╯▽╰)╭
第二次一面(腾讯微信部门)
1.直接开场给了30分钟,手撕三道代码题(开门见山,没有自我介绍):
(1)找出链表中倒数第K大的数(用的反转链表,然后遍历,后面说如果不限制空间,减少时间复杂度该怎么做,我说那就堆入数组,然后索引取值,面试官说好的)
(2)输出数组中第K大的数(用了个快排,然后输出第K-1个数,面试官问,有没有更快的方法,遍历一遍就ok了,我没有想到)
(3)输出一组序列里面的最大递增子序列(用的动态规划,面试官又问,能不能用更快一点的方法,欲哭无泪,要是想得到我早用了5555)
PS:总得来说,3道问题都搞出来了,但都不是最快的方法。
2.又是问项目,一顿火力输出,关于缓存的问题,比如:缓存空间不够,怎么办,怎么实现空间大小的判别?CDN缓存的具体实现?图片资源的实时替换?等等(缓存问题问了一大堆,基本都到了缓存原理的问题上了,一部分确实不知道没有答起)
3.因为项目做的是微信小程序,先问我storage这个相关api是怎么实现的?又问我setData是怎么实现的?一面懵逼,只能说没有读过源码,只会调用。后面转问,这个和vue的数据绑定有什么区别,因为稍微读过vue部分源码,就回答了数据绑定是怎么实现的(Object.defineProperty劫持data的属性,并重写属性的get和set属性,get依赖收集,set异步更新,但数组的劫持是通过对其方法的劫持,且不可监听数组通过索引改变数值和对象属性的增删)以及vue的虚拟dom。
第二次一面结束:没有过多的玩笑话,然后就拜拜了。
两次面试都没有细致的考察html,js,css,枉我把这三个的基础复习了那么多o(╥﹏╥)o,防抖,节流,promise.all都手写实现过,也算细致的复习了一些吧,结果完全没有表现的机会。
都是上午面完,下午就知道被挂掉了,腾讯好难,我这个菜鸡还是不要痴心妄想了。ε=(´ο`*)))