微软苏州2018冬季实习面试经历

微软苏州2018冬季实习面试经历

在写面经之前,我先介绍一个基本情况。我是东南某985 211大学,计算机科学与工程学院,软件工程专业,研二学生,研究方向主要是经典机器学习问题。高中搞过OI,没拿一等没保送,没有ACM。但是有一些相关学科竞赛二等奖、三等奖。本科没正式实习,只做过几个算是外包的项目。我投的了北京和苏州的STCA-software engineer(intern)。北京方面至今无任何消息,苏州的办事效率特别高,基本发邮件的话立刻就会有回复。我投递了职位之后大概一两个星期就收到了HR打来的电话,起初还以为是骚扰电话差点给挂了。。。

这次微软的冬季实习网申大概8月份开始,11月30结束。没有笔试,一共是一轮电面+三轮现场面,其中现场面的前两轮是技术面+一轮是leader面,没有HR面。三轮现场是连续进行,每场1小时,中间面试官换岗的空隙可以休息。总体来说几乎 无难度

电话面试

HR小姐姐会预先打电话商量什么时候方便电话面试,然后我说基本上每天都可以,所以他就说行那我安排好了之后给你发正式邮件。挂了电话之后立刻收到了正式的面试通知,邮件里面用表格的形式,写明了面试日期、面试官是谁、参加Skype的电话会议的流程。日期就是第二天,但是我当时硬是没看到是具体是什么时间开始,什么时间结束。然后到了第二天我发邮件问面试是啥时候,这邮件里咋没写啊?HR小姐姐说,同学,请你认真看邮件,邮件里写得清清楚楚,下午3点到4点。我当时尴尬得要命,我想明明没写啊。我用手机再看,果然有。原来学校的邮箱网页版对表格排版有问题,时间那一列是竖着排的,每行一个字符,当时看的时候直接忽略了。只好说哎呀不好意思,表格排版有问题,没看到。

等到下午,我提前10分钟上线,但是一直等到快3点半,面试官还是没有来,我有点慌,赶紧发邮件给HR,几分钟后收到邮件,说已经跟面试官联系,让我再等一会儿。几乎收到邮件的同时,Skype里有动静了。哎呀我想这面试官可算是来了。
Q:介绍下学校的基本情况
我说我是xxx大学的,目前是xxx,研究方向是xxx(后面省略)。

Q:行啊。那写个题吧。怎么判断一个链表有环啊?
我就说用个set记录已经访问过的地址,如果下一个已经访问过了,那就是有环。

Q:这个思路没问题,你写吧。
白板写代码…我写完了之后我说我写完了,您看下。
他看了会儿,说那你讲一下吧。
我就一行行地讲是啥意思。

Q:行啊,没问题。咱们再写一个吧。给定两个字符串,s1,s2,判断s1里有没有一个substring,是s2里的一个substring,把满足条件的都输出。
我就说那暴力呗,枚举s1里的substring,然后看看s2里有没有。这个思路能行么?

Q:可以啊,你写吧。
然后我又白板写,然后写完了又是让我讲一讲,讲完了他说没问题。今天那就面完了,结束了。我想这么快的么?这才面了20分钟就结束了,结束的时候大概3点45左右。。我就说那好的,谢谢您,再见,然后就挂了Skype。然后回了HR邮件,说我已经面完了,大概面试结果啥时候出来。小姐姐说等面试官的feedback。当天5点多HR打来电话说是positive,然后大概商量了下现场面。

【电话面感觉十分水,主要是跟面试官多交流,明白需求是什么,代码不要有大问题就可以了。】

现场面

安排的是下午两点到5点的面试,我当天中午来了苏州,先去前台报到,小姐姐让我登记,然后发一个纸,让我贴在衣服上。一会儿HR来领。

前两面是技术面,都是小哥,比较年轻。leader面是女面试官。现场面试最好自己带纸和笔,简历不需要带,他们会自己带电脑,可以看到。HR告诉我,我被分配到了o365组。

一面

小哥进门,我们互相问了好,坐下,然后…

Q:请你用英文自我介绍一下。
我当时瞬间懵逼,我说英文啊…他看我面漏难色,就说如果你没准备的话现在可以在纸上写一写。我也不准备了,就硬着头皮:My name is xxx. I come from xxx and I major in xxx. My laboratory is called xxx. I have joined some competitions and won some prize. I want to find an intern job to improve my practices skills.
基本上就这样的话,当时也说话也磕磕跘跘,一个词一个词地蹦,总算说了几句,说完了。小哥说我们o365经常得跟美国那边交流,所以英语比较重要。上来先看看英语怎么样。

Q: 来写个题吧。给定一个rgb图像,一个坐标,把所有与这个点相近的点构成的像素集合的轮廓染色。
我详细地问清楚,是外轮廓而不是内部,8个方向算相邻,相似如何定义,输入有哪些。然后就写了。大概思路是bfs一遍找相似的像素集合,然后遍历一遍图像判断哪些像素是轮廓,是就染色。
我写的时候他就在我身边看着,写完了我就再拿给他看,小哥说你再仔细看看有什么问题。我看了半天,看出来bfs边界条件没写,然后再给他,他说还是有问题,然后我看了好一会儿,一个变量没写定义。再给他看,没想到他还说有问题,我就有点着急,他给了一个提示,说如果给你的是一个从左到右渐变的图像,从中间的点开始,按你的写法,你会出来什么结果?我说肯定是一个矩形区域啊。他说是的,理论上是这样,但是你的代码他会是什么结果?我再看我的代码,看出来了,我bfs的时候算像素相似性不能跟队列头元素算,应该总是与输入的坐标处算。改了之后他说,对了,就是这里有问题。

Q: 再来写一个题吧。现在我有一个函数random(),每次调用会(均匀地)随机返回[0,1]里的实数,现在让你写一个单元测试,测试这个函数有没有问题。

我想了一会儿,这可以把[0,1]分成c个区间,重复N次random(),统计每个区间里的命中次数嘛。如果这些次数误差小于一个阈值的话,就认为通过测试了

Q: 可以。这种方式有什么缺陷呢?

我说可能有浮点误差,N很大可能时间慢,c不能太小,太小了精度不够。

Q: 嗯。还剩下几分钟,你有什么要问我的吗?
我就问了我表现怎么样啊,转正率怎么样啊,o365组具体干嘛等等这些问题。问完之后我起来送他出门,然后等二面。

【这一面我的确是稍微有点紧张,尤其是看了好多遍才把bug修好,好在问题不大。主要是注意交流、理解题意。】

二面

一面结束之后,马上就来了二面的小哥。照例是先问好。然后坐下,小哥说刚才我来的时候看见了一面的面试官,他是不是让你用英语自我介绍了?哈哈哈,我们这里经常跟外国人交流,所以得看一下英语水平。
接下来几句瞎聊之后,来我们做个题吧。

Q: 给定一个二维矩阵,可以从一个点上下左右4个方向走,且只能往数字更大的走,请你计算最长的路径长度。
明显记忆化搜索。。不说了

Q: OK没问题。再来一个,给定一个4*3电话拨号盘,[[123][456][789][*0#]],只能走“日”字,问从0走到1,步数为N的走法有多少种。

我说可以dfs。

Q: dfs太慢,有没有更好的?你可以记录走N步到哪个键上,然后…

我马上反应过来,接着说然后就可以dp了,根据他的提示,又写了一个记忆化搜索。给他看了之后说没有问题。然后他看了看时间,时间还早,就说有什么问题要问他的吗?
我们就blabla聊了好久,得知他也是南京上学,还去过我学校,然后一起吐槽了当年学校交通不便没有地铁,现在好多了。并且他高中也搞过OI,虽然拿了一等但是没有保送,哈哈哈。

【感觉这一面非常轻松愉快。】

leader面

二面小哥说,按照往常,leader面一般不太注重技术,主要看沟通能力啊、团队合作能力啊这些东西。

不一会儿,leader进来了,仍然是先英语,他看我简历上项目比较多,然后英语问我,在你做过的项目中,你曾经遇到的最大的挫折(原词是challenge)是什么?

我就拿之前做过的一个不太成功的项目举例,不过我英语蹦了半天,十分不流畅,leader看我有困难,转而用中文,这样我们就用中文说了。

然后他问我,你曾经遇到过哪些不太好相处的人?你是怎么对待的?这个问题我想了一会儿,似乎也没遇到啥不太好相处人啊。然后leader似乎也看出来了,我说直说,我说平常同学、老师们都挺好的,都好相处。

接下来照例是写题。出题之前leader说这题比较简单,如果你看过你就说你看过,咱们再换一道。我心想我就是真见过我也不说,万一换个不会可咋办。哈哈哈。
Q: 给定一个矩阵,这个矩阵从左往右递增,从上往下递增;给定个数,判断这个数出不出现。
leetcode原题,具体解法略。。

leader看我这么快就有思路,就问我,哎你咋就一下子就想到要从左下角找呢?我就稍微解释了下。

这个虽然见过,但是我写代码的时候还是出现了一些小问题,比如如果输入是空怎么办。这些都要注意。

【整个面试大概用了50分钟,从面试来看,leader不太搞技术,这轮基本上算是纯聊天。】

总结

面试完了,leader让我给HR打电话,让他领我下去,因为从ms办公楼的电梯口进出都要刷卡。HR说上来的时候大概浏览了一下面试官们的feedback,基本是录了,然后说最好一月份能来实习,我说我1月份可能得一周回去一次,小姐姐说可以啊,那就算part-time,请假只要跟你的manager说一声就行,学校里有事随时可以走,等你方便了再full-time。然后把我送到楼下就让我走了,当时是5点多一点,没吃到ms员工餐,不开心。不过江浙沪皖的来回高铁票是可以报销的。

其实面试并不难,二面的小哥说其实面试不太看重题能不能做出来,就算真的没做出来,其他方面有长处也是可以的。最重要的是沟通、思考的过程。

苏州微软