微软2022 暑期实习笔试面试凉经

software engineer实习,面试部分是苏州stca

笔试:三道题,在网页上,不需要自己写输入输出和用例,比较简单,但架不住我菜,做出来两道,最后一道通过了几个用例,竟然通过了

一面3月14日:用的微软自家的Teams软件,不知道为什么无法登陆,但是不影响正常用
没有自我介绍,上来直接就做题——给你n个用户登入时间和登出时间,再给你一个m时间段,求这个时间段内每秒钟有多少用户在线,刚开始写了个每个一秒t都遍历所有用户,看登出时间在t之前和登出时间在t之后的,这样复杂度是m*n,面试官要求改成m+n的,于是改成新建一个容器,计算每秒的变化量,然后计算每秒人数。
难点在于只提供了一个场景,其他没有任何要求,数据格式、输入输出内容都要自己定义,当然了,可以问相关问题,比如0时间是否是0人,是否存在只登入不登出的人等等(这可能是我的减分点,没考虑这个)
然后是一个大数据问题,只要口述不需要写代码:后来发现是原题,给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?要求内存不大于600M
直接给我问蒙了,后来查到答案是:

方案1:oo,申请512M的内存,一个bit位代表一个unsigned int值。读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在。
附:这里,再简单介绍下,位图方法: 使用位图法判断整形数组是否存在重复 判断集合中存在重复是常见编程任务之一,当集合中数据量比较大时我们通常希望少进行几次扫描,这时双重循环法就不可取了。位图法比较适合于这种情况,它的做法是按照集合中最大元素max创建一个长度为max+1的新数组,然后再次扫描原数组,遇到几就给新数组的第几位置上1,如遇到5就给新数组的第六个元素置1,这样下次再遇到5想置位时发现新数组的第六个元素已经是1了,这说明这次的数据肯定和以前的数据存在着重复。这种给新数组初始化时置零其后置一的做法类似于位图的处理方法故称位图法。它的运算次数最坏的情况为2N。如果已知数组的最大值即能事先给新数组定长的话效率还能提高一倍。
然后是基础的数据结构问题,会随机发挥,比如看到我代码里有数组,那就问数组和链表的区别与优劣,然后继续深入,问哈希表,然后问哈希表底层是如何实现的(数组+链表,没反应过来,其实面试官已经给足了提示了,菜是原罪)
面试官对我提出了灵魂拷问:学过数据结构吗。。。可能看我简历里很多都是操作系统和嵌入式相关的,面试官不懂,也没大问。
我的提问环节:请问您这个比较看重什么技术栈?答:不重要,关键是基础,别的都可以学,但不可能让你来了学基础。

二面3月16日:一面表现好是可以直通4天后的三面的,否则一般当天晚上就会给你发2天后的二面通知。
二面是同一个面试官,首先面试官介绍了一下自己和所在部门,然后依然是做题:会用teams发给你一道题(我的软件不知道怎么回事收不到,面试官用邮件发给我的),英文!英文的!有问题可以问,大约题目也是一个场景,写一个类实现相关函数,涉及到网络方面的,但我偏偏忘了怎么获取当前时间,面试官百般提醒还是没想起来,实在是慌了,完全没有思路。面试官看没办法了就放弃了,问了几个数据结构方面的问题草草结束。
我的提问环节:简历是怎么到您这个部分的?(你这部门和我不对口啊)答:筛选出来的,如果觉得专业不对,可以再投。。。
二面结束两天后收到感谢信,倒是不拖沓。。。
面试之前准备了好多高端的问题,打算好了侃侃而谈大战三百回合的,结果被基础知识和专业不对口打败了,可能外企大公司吧,不太注重高端的,只想要基础扎实的人才然后亲自培养。
#微软暑期实习春招##微软##实习##面经#
全部评论
一面用差分数组比较好
1
送花
回复
分享
发布于 2022-03-21 13:31
感觉好难
点赞
送花
回复
分享
发布于 2022-03-20 20:29
滴滴
校招火热招聘中
官网直投
好难呀,要我我当场挂
点赞
送花
回复
分享
发布于 2022-03-20 23:19

相关推荐

3 21 评论
分享
牛客网
牛客企业服务