微软2022暑期实习苏州STCA一面面经
时间:2.28 14.00 时长1h
1、自我介绍(中文)
2、项目,问的比较浅,就根据项目简单问了两个相关的问题:缓存穿透怎么解决,高并发数据持久化怎么解决
3、开始做题
(1)判断两数组是否相等?就是一个数组把其中的数字任意调换顺序后可以变成另外一个数组就认为相等。
例子:
// [1,1,2,3,5],[5,3,2,1,1] => true
// [1,2,3], [4,5,6] => false
直接HashMap,key存数据value存出现次数,遍历之后比较即可。
// [1,2,3], [4,5,6] => false
直接HashMap,key存数据value存出现次数,遍历之后比较即可。
(2)最大重叠区间的区间长度。
例子:
// [10:00 ~ 11:30]
// [09:30 ~ 10:30]
// [13:00 ~ 14:00]
// return 30, as [10:00 ~ 10:30] is the most busy time span
对于区间的问题,上来先排序,然后写个for循环遍历,然后emo了5分钟,想不出来,死皮赖脸找面试官换题。
// [09:30 ~ 10:30]
// [13:00 ~ 14:00]
// return 30, as [10:00 ~ 10:30] is the most busy time span
对于区间的问题,上来先排序,然后写个for循环遍历,然后emo了5分钟,想不出来,死皮赖脸找面试官换题。
(3)给一个数组a[100000]={0},和k(<= 100000)个修改操作(l,r,value):对[l,r]每个元素+=value,问k次修改做完,数组长什么样.
显然此题要求修改操作复杂度为O(1)或者O(logn)。
第一反应线段树,但是很久没写了写不出来。然后面试官提示说不需要线段树。然后突然想起这个题写过,于是前缀和搞定。
(4)已经写了两题了,我以为差不多结束了,结果时间才14.35,于是面试官又加了一题:
// 给一个数组a[100000],和k次修改(l,r):每次[l,r],a[l] +=1, a[l+1] +=2, a[l+2] +=3,...,a[r] +=(r-l+1),问k次做完,数组什么样了
// 比如 (3,6)
// 得到
// [0,0,0,1,2,3,4,0,0,0, …]
想半天随便写了一点没写出来,然后时间差不多了。面试官说这题就是两次前缀和,哦~。
// 比如 (3,6)
// 得到
// [0,0,0,1,2,3,4,0,0,0, …]
想半天随便写了一点没写出来,然后时间差不多了。面试官说这题就是两次前缀和,哦~。
4、反问
问了下微软的上班时间是否和外界传闻一样下午到点下班?面试官洋洋洒洒和我讲了一大堆,大概就是没什么事就随便,该完成的工作还是得完成的。
5、总结
感觉三个题的难度大概分别是leetcode中easy,medium,hard,然后第二题好像是原题,具体题号没搜到。
整体难度相比国内大厂还是低一些的,不像国内大厂那样八股问到死。
不说了,继续刷leetcode去了,准备二面~
#实习经验分享##面试题目##微软#