微软亚洲研究院实习生面试

来源:互联网 发布:mac安装brew命令 编辑:程序博客网 时间:2024/04/28 11:42

      上周说到微软亚洲研究院(MSRA,一下就简称MSRA吧)网络面试我这边因为连不上而要重新安排面试,周五HR就给我电话约好今天中午1:00-3:00重新面试。于是提前做好各种准备,找了个拉ADSL的宿舍来上网,然后用了人家带摄像头的笔记本。还好,今天一切都比较顺利。

      MSRA的面试是网络面试,使用Office Live Meeting,算是一个挺formal的即时通信软件。一个下午连续面两轮,每轮一个小时,都是技术面,内容差不多但面试官不同,莫非这个就是传说中的一票否决?

 

      一面:

      1. 一面开始问了语言,是关于C++的虚函数的,问C++虚函数有什么用,怎么实现的,为什么要用多态等等;

      2. 然后是关于数据结构的问题,一个数组,取前k大的数(编程之美2.5),之后又是问假设是一个无限长度的单向链表,要求只遍历一次就得到前k大的元素该怎么办?其中让我印象最深刻的就是我每提出一个算法面试官都会问我时间复杂度是什么,有点尴尬,有时候连自己提出的算法时间复杂度都说不清楚;

      3. 还是和上一个问题差不多,面试官说这是他最近遇到的一个实际问题,需要只遍历一次无限长度的单向链表,然后从中等概率的随机抽取k个元素。

      总体来说,一面磨来磨去还是把所有的问题都答得差不多了,感觉还好。

 

      一泡尿的工夫时候之后是二面:

      1. 第一个问题就比较囧,问长度为n的数组,遍历得到数组最小值的那个临时变量被update的期望次数是多少。其实这是一道数学题,面试官的目的是要写出递推公式,我在纸上算来算去才在面试官的再三提醒下得到了结果,原来如此简单;

      2. 关于进程和线程的问题,它们之间有什么区别;进程之间是怎样通信的,线程之间又是怎样通信的;

      3. 虚拟内存是什么,为什么要有虚拟内存,如果要申请的空间超过了内存上的剩余空间会怎样;

      4. 怎样判断无向图中的两个点是连通的,要求写代码。

      二面就很悲剧,第一个简单的问题就在面试官的再三提醒下才得到结果,中期的一些小问题也答得一般,最后的代码也写得很乱。

 

      上周的微软工程院面试到现在都没有结果,应该被鄙视了,今天的MSRA也面得不好,还是不要对微软抱太多幻想,毕竟自己能力有限。

原创粉丝点击