2014微软实习生面试经历

本文作者分享了自己参加2014年微软实习生面试的全过程,包括经历的笔试、在线面试及三轮面试的详细内容。面试涉及问题的解答、算法实现及面试技巧,为后续的面试者提供了参考。
摘要由CSDN通过智能技术生成

4月28号结束了最后的三面。等了一个多月,这个月初才收到了offer通知。因为三个面试官都没有要求我对面试内容保密,所以现在就将自己面试微软的整个过程记录为博文,供以后的面试者作为参考。转载请注明出处:http://blog.csdn.net/xiefubao。

     开学的时候了解到微软今年在西安没有宣讲会和笔试现场,以为微软不准备在西安招人了。后来才在官网看到今年是网上笔试。大概是3月底投的简历,中文简历早就准备好了,当时临时赶了一份很粗糙的英文简历。四月初收到了第一轮笔试的通知。第一轮笔试2个小时,四道英文编程题目,难度要比ACM简单。当时做的比较遗憾的是第三题,预处理数据写了个n^2的算法,只得了10分,当时还以为超时了就没管,后来听说院里有个同学第三题完全暴力写了个n^3的程序居然拿了100分,sigh,也许当时再继续查下程序的bug笔试就可以至少拿300分了,各种囧,,,不过还是在四月中旬收到了第二次在线测试的通知。第二次测试分为两类题,一类是数学能力测试题:都是一些很简单的统计类的数学题,但是题目比较多,大概不到一分钟就得做一道,有的还要用到计算器去算结果。另一类是语言能力测试:语文中学就不太好,最怕这个了。大概就是先给一段话A,然后再给一段话B,根据A判断B正确错误还是不确定,时间也比较紧。

   大概四月20号收到了24号面试的通知,是在线面试。然后就去网上看了好多微软的面经。  

   一面的面试官是个JJ,虽然只能听到对方声音,但是感觉应该很年轻。一面微软JJ很和蔼可亲,喜欢笑,这也多少减少了点我的紧张程度。一上来我大概介绍了下自己,然后微软JJ开始问我问题:第一个笼统地问了一句如果程序输出错误的结果,我会怎么检错。根据平时做题的经历,我说如果是在oj上交题目,我会根据返回的结果是WA、TLE还是RE等等类型去查看程序可能存在的bug,balabala....(感觉很naive,根据JJ问的当时也想不到该怎么回答)。后来JJ说如果程序输入数据不变,代码不变,但是多次运行的结果不一样可能会是什么原因,(说实话,相对于具体算法,我自己是比较怕这种开放的问题的)。憋了半天,大概说了几种可能性:程序用了new, malloc等申请堆内存的命令,程序调用了获取系统时间函数,程序读取网络或文件中数据,程序用了随机算法等。但是JJ一直让我说下去,后来真想不到其他的了,姐姐就换了问题。结束后发现有个很关键很明显的多线程当时没说(估计这个点扣分不少)。

     后来JJ就给了一个具体的题目:给一个汉字字符串和拼音字符串,问如何判断汉字字符串和拼音字符串是否匹配。

一眼看,觉得好简单,我说首先要有每个汉字读音的数据存储,然后汉字和拼音字符串从左向右扫一遍,如果有一个没匹配上就说明不能匹配。JJ说会有多音字,瞬间觉得刚才自己又naive了。我就说那就搜索吧,遇到多音字的话就尝试每种走法,每条路走不通就回溯。然后JJ问我这种方法大概的时间复杂度,我说理论上最差会是指数级的时间复杂度,但是实际应该不会有那种极限的数据。我感觉和扫一遍差不多,因为多音字走不下去就会很快回溯回来,不会走太深。然后JJ就让我开始把这个代码在白板上写出来。当时懵了一下,白板相当于没有tab键的txt啊。我问JJ可不可以在本地的IDE上写,JJ说可以。读入数据我说不是关键,就主要写了那个dfs搜索函数,写的过程中JJ还说出去买了个东西。下面是当时写的代码的主要部分:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. map<char,vector<string>> maps;  
  2.   
  3. string s1,s2;  
  4.   
  5. bool dfs(int t1,int t2)  
  6. {  
  7.     if(t1==s1.size()&&t2==s2.size())  
  8.         return true;  
  9.     if(t1==s1.size()&&t2!=s2.size())  
  10.         return false;  
  11.     if(t1!=s1.size()&&t2==s2.size())  
  12.         return false;  
  13.     map<char,vector<string> >::iterator p=maps.find(s1[t1]);  
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值