微软stbc面经(Community Engagement Program Manager)
微软stbc面经(Community Engagement Program Manager)
面霸应届生求职论坛http://bbs.mianbar.com.cn
其实投 stbc 是很早以前的事了,大概从 msra checkout 时就在想投,后来刚好有同学在 stbc 实行就麻烦帮转的简历。 然后隔了很久才接到电面,然后又隔了很久才接到 on site 面... 等得我都以为人家不要了呢..
言归正转,先从电面说起。
据说电面是 HR 来面的,所以题不是很难啦。虽然不知道面我的人是不是 HR,但从名字看至少是 vendor,不是 fte。一共问了两个问题,一个是众所周知的实现atoi() ,由于学校网络不好,没用上 live meeting,所以是偶写好 code 调好了mail给他的 :) 另一个问题是,在平面上给出两个矩形(以四个坐标一组的形式),求它们交的面积。如果这题是 HR 出的,那么 MS 的 HR 也太强了.... 有一种情况不是很好想到,即一个矩形在另一个之内的情况,我是在面试官的提式下想到的... 面试大概是一个小时的时间,对着电话讲一个小时是很无聊的...
大概等了两三个月的时间,终于收到 on site 面的通知了... 汗...
早上九点的面试,共有五轮,每轮一小时。刚从困顿中醒来就赶去紫竹了... 是和在那里实习的同学一起过去的,所以不用费力找路了。紫竹这个地方真是荒凉,相比之下 sigma 绝对算是闹市。HRJJ 竟然也是交大的,看来偶们学校势力很大哈哈.. HRJJ 说面我的是 CSD 组,当时也不知这个组是做什么的..
第一轮有点紧张,自我介绍都没说顺... 其实我是没准备过这个,去的路上还在问同学要说什么... 其实我想告诉大家根本不用去准备这个啦,反正每轮都要说一次,我到第三轮就已经说得滚瓜烂熟了。面试官先面了个题,好像不难,没什么印象了.. 随后问了个数学题,平面上给出n个圆,最多将这个平面划分成多少个区域。当时好紧张,想复杂了,没做出来.. 其实这个答案是关于n的多项式(3次,maybe),我竟然找错规律了..
第二轮面的不难,先是写了个字符串处理的题,题目不难,倒是问test case要想一下。然后问了一个最大子序列和(给n个数,有正有负,找出连续的一段 a, a[i+1] ... a[j-1], a[j],使 sum(a[i..j])最大),经典的算法,本来还想用从动态规划的角度解释一下,最后发现用英文说不清.. (其实中文可能都说不清),于是直接在白板上写code。最后一个题描述很麻烦,就题意和面试官讨论了很久... 简而言之,就是上海市的全部电话号码(包括手机)作为key,每个key对应一个value,设计一个系统实现给key求value。当时随便估了一下,大概size是5*10^8(乱说的),没发存在内存里。于是用几十台机器,根据hash(key)%机器数决定哪个data放哪个机器。后来面试官接着问某台机器挂了怎么办,我就说用类似raid的方法多用几台机器保证信息的冗余。
第三面也不太难,是某个team的manager。问我的是个数据结构设计的问题,不是很好描述,反正很麻烦,写了整个白板还没写完(我字比较大)。后来就没问什么,随便聊了聊在stbc和msra有什么不同。她说总有人要去做reserach来benefit humankind,当时就想到msra的同事们,他们形象立时高大了很多...
午饭去找同学买罗森吃的,stbc的水房没有msra的赞,饮料只有那几种,连王老吉和果粒橙都没有。不过饮料机是一样的,依然是一杯星巴克+朱古力。
下午第四轮面试是一点开始,不过从第三轮开始就不紧张了,面试官好像也是某个team的manager,很赞,和他聊天收获颇丰。他说他们team里面很多玩过acm,于是开始面我算法.. 就是给出两个链表的头指针,这两个链表可能在中间会converge起来,写个算法问这个是不是converge的。他说有空间O(1)的算法,想了好久想不出,然后他给提示说think about alignment,还是没想法。他又说forget it and think about what if the two linked-list have same length,又想了一会才想出来。先算下各自的长度,如果长度不一样,长的指针向前走变成一样。然后一人走一步,如果converge肯定两个指针会同时指到那个converge点的。然后就是写这个code,然后写test.. test的情况比较多,比如linked-list有环.. 然后他问我知不知道怎么判环,我说听过有空间O(1)的算法,但不会实现,他就没再问。之后又问了给strstr()写test(这个是c的一个库函数),我想了好多情况,比如两个字符串指针指到的空间有overlap的情况,还有串里面有中文,刚好半个字和pattern里的英文match了(这个题好像答得不错,据第五轮的面试官说,这轮面我的人说我有做test的天赋)。最后就和他聊了聊,比如go broad还是工作啦,他好像说他master都没读完,suggest我join ms,ms也有去redmond培训的机会什么的..
(回去之后他说alignment的那个方法想去来了,intel机器上指针地址都是4的倍数,所以最后一位可以用来mark)
第五轮是最轻松的,好像是前面两个人的boss来面,随便聊了聊也没问题目,还是用中文的。他是香港人,我和他用英文 普通话白话混着聊,后来据我同学说这个组里香港人超多,应该很适合我 :) 就问了下我大几,啥时候on board,然后毕业有什么打算.. 又是极力推荐join ms... 其实我至今不知道CSD是什么的缩写... 就像当时在msra的DIT组,还是on board几天后一个Machine Learning组的同事告诉我DIT是什么意思的...
最后从stbc出来已经是下午2点半了... 第一次面试很久,但exciting