关闭

微软笔试之反思(二)

标签: 微软面试inputbutton搜索引擎string
2626人阅读 评论(4) 收藏 举报

最近真的是没有什么时间写blog,说是笔试,其实也不完全。因为笔试题目最后一道我也理解不是很深刻,这次主要说说面试的事情,也记不起多少了。

笔试第三题是这样的:

设计一个微波炉的控制面板。

我把这个控制面板分为三个部分:

  • Button
  • Knob
  • LCD

Button和Knob来进行控制,LCD来显示状态。

不知这个思路是否完善,不过我也实在想不起来别的方面了。

就此打住,接下来是面试:

面试是在号称院长的办公室进行的,之所以是号称,是因为这个院长从来没有出现过,可能因为人家是院士把。忙,都忙。忙了好啊。。。。。

这天刚起床,我又把我的自我介绍会议了一遍,出寝室楼的时候,突然觉得双腿无力。十三问我是不是太紧张了。确实,本来没有的紧张突然在面试当天早上爆发了。

时间是上午九点,我又是第一个,这可能真的是:第一个和最后一个是基本没有机会的。sigh。面试官是mjli老师,li老师人非常平易近人,换句话说呢,就是喜怒不行于色。进屋之后,他让我坐下,然后自己坐在旁边的沙发上,拿着我的简历开始问我:你能不能解释一下,你本科换专业的事情。我一想,连自我介绍都没有,可能微软真的是与众不同吧。我接着开始滔滔不绝,主要是为了突出我的兴趣和热情。

但是最关键的是,我没有突出重点!

blahblah一阵之后,他开始盘问我两年考研的经历,我又开始blahblah。。。。

慢慢的,一些问题就来了,主要是以前做过的一些项目。说是项目,其实我基本什么都没有做过,就算做过,也都是一些小打小闹的玩意儿。于是我便说我非常希望有这个机会能去微软来提高自己,li只是说了一句,看来你编码还是少了些吧。郁闷。

问到研究生课程和实践了。这点是我最郁闷的,我犯了两大忌,第一,不能按时间顺序;第二,不能主次不分。

接下开始问我的笔试题目,我傻了。笔试下来之后,觉得很不爽,那些题目也没有再做一遍,这下被抓住把柄了。那你现在考虑吧,li老师这么说。我大脑已经晕了。开始我说要扫描三遍吧(第二题),分析了一下我的思路。li老师说,你再想想。我说2遍,至少要两遍。这个时候li老师开始笑了。我的脑子突然动了一下,马上说一遍,一遍就行。于是简单解释了一下。解释的就是我前面三遍和两遍都有的最核心的部分。li老师似乎满意了一些。

后面问的什么我已经记不得了,反正出门的时候,li老师说:我给你提个建议吧,以后没有弄明白的东西,最好有机会就多想想。sigh。

郁闷。就这样完了。

分析:

1。面试之前准备不足,应该把面试的各种情况都考虑到,有条件的话,应该模拟一遍。

2。说项目的时候,最重要的FTP搜索引擎没有说,毕竟li老师就是搞搜索的。

3。笔试题目,没有重新考虑,虽然我一直在写data mining的代码。

4。最重要的一点:我讲话没有突出重点,说得难听一点,就是我说话说不到点子上面。第二题我明明可以不考虑那么多情况,直接先说核心部分,然后再被他问漏洞,效果要比这个好的多。

后记:

面试之后当天晚上有一个我的两位校友(张宏江和张亚勤)的讲座,于是去听了一下,li老师居然还演示了一些研究院的最新成果。

第二天上午,我把程序实现了一下,又针对li老师的研究成果,结合我们现在的项目,提出了一些问题。发了封信给li老师,算是补救。

第四天晚上,听说有人已经接到MSRA的电话,说congratulations。当天晚上我做了一夜收信的梦。

第五天早上,得到确切消息。挂了。就这样,我跟MSRA的最亲密的一次接触,我最好的一次机会与我擦肩而过。同时FoxT的面试安排也出来了,这是后话。。。。。。

 

附:第二题源码核心

string mys;
double mydouble;
int ispositive=0;
//标识是否为正数,1为正数
//0表示还未出现符号
//-1表示负数

int ispoint=0;
//标识小数点是否出现
//1表示小数点已经出现
//0表示小数点未出现

int deccounter=0;
//标识当前处理为小数点后第几位,ispoint值为1时开始计数
 
cin>>mys;

for(int i=0;i<string.size();i++)
{
 if(mys[i]=='/x2b')//碰到'+'字符
 {
  if(ispositive!=0)
  {
   cout<<"Illegal input!";
   return -1;
  }
  ispositive=1;
 }
 else if(mys[i]=='/x2d')//碰到'-'字符
 {
  if(ispositive!=0)
  {
   cout<<"Illegal input!";
   return -1;
  }
  ispositive=-1;
 }
 else if(mys[i]=='/x2e')//碰到'.'字符
 {
  if(ispoint!=0)
  {
   cout<<"Illegal input!";
   return -1;
  }
  ispoint=1;
  deccounter++;
 }
 else if(mys[i]<='/x39'&&mys[i]>='/x30')//碰到数字
 {
   if(ispoint==1)
  {
   mydouble=mydouble+double((mys[i]-48)/pow      
                                    (0.125,deccounter));
   deccounter++;
  }
  else if(ispoint==0)
   mydouble=mydouble*8+mys[i];
 }
 else//其他非法字符
 {
  cout<<"Illegal input!";
  return -1;
 }
}

li老师是这么评价的:The logic is correct. However, you answer does not fully match the question. The input is const char*, the return value is double.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30373次
    • 积分:524
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:5篇
    • 译文:1篇
    • 评论:12条
    最新评论
    专业(链接)