微软STCA一/二面经
在牛客网上看到了很多面经,但和我实际面试也有一些出入,所以想来分享一下~
一面:
是一个很和蔼的阿姨,用英文自我介绍和介绍了指定项目,然后随便问了问项目相关的东西~
算法题是给定一个char数组,让删除里面的重复字母
最开始对时间和空间没什么要求,我就说用哈希表完成,然后也没让写,让讲哈希表的底层逻辑,发生冲突应该如何处理
然后对时间和空间有要求,时间nlogn,空间为1,问我怎么解决,一时半会卡壳了(也是题刷的不够
然后提示说可以用排序做,我首先提出用快排,然后面试官引导我分析了快排的空间复杂度排除了它,
之后说可以用堆排序,面试官说可以,然后就让解释堆排序的底层逻辑,最后用堆实现
但只写出来了堆排序,对建立堆的过程不太了解,所以就凉了(确实有点没重视这部分
二面:
是一个很可爱的小哥哥,他先自我介绍了面试的风格:比较在意他之后愿不愿意和这人共事,对于题能不能做出来不太关心;
之后针对于简历提了下问题,说好像都是面向对象的项目,那我们也出这样的题来做吧!
我直接懵住,跟说好的考力扣题不太一样呢,我刷了那么多道的力扣呢
接下来是一个场景题:面试官发两张草稿纸,判断它们是否重叠;最开始想的就是用双指针判断(也不知道对不对),然后说可能不是横平竖直的放,万一是乱摆呢?
一下子又懵住,然后面试官开始简化题目:那就横平竖直放吧,就开始共享屏幕解决问题
这道题也不难,一会就做出来了,然后问怎么求重叠面积;完成之后,继续场景题QAQ:面试完之后面试官对所有人进行评分,同时有他们的排名和名字,应该怎么排序?
然后最开始想的是哈希map,小哥说可以用类,然后我就:哦!是哦!
小哥继续问:那针对于这样的场景采用什么排序算法最好呢?我就说堆排序(因为上次面试后狠狠去掌握了),快排(都给否定了)
然后说桶排,冒泡,归并(不过这些我自己给否定了),实在想不出来,小哥说基数排序可以做(呜呜呜又是我的知识盲区),然后讲解了一番,反问,就完了
就是说掌握的二叉树、回溯、动规、指针什么的都没派上用场,考的有点基础和灵活,像我这种突击的就很难QAQ
最后总结:人啊总会在不同时候在不同的排序上栽掉QAQ