【海归找工作】微软面试:我在等着你出bug!!.docxVIP

【海归找工作】微软面试:我在等着你出bug!!.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【海归找工作】微软面试:我在等着你出bug!!

【海归找工作】微软面试:我在等着你出bug!我不是什么大牛,只是一个即将跨入职场的普通毕业生。本人纯技术出身,下面分享的面试经验和技巧主要指的是开发类技术职位(SDE, SDET),其他的一些职位比如HR, Sales或者Operation等等,本文不做探讨。首先,微软的面试是要考察英语能力的,尤其是听说能力,至少我的5轮技术面试中(算上tech screen)有3轮是纯英语的。然后,微软最喜欢问的算法问题是链表和字符串(的一些变形),不会有人问你Dijkstra最短路径,不会有人问你动态规划,更加不会问你NP(扯远了。。。),甚至连二叉树什么的都很少问,原因有几点:1.链表和字符串是最基础的,每天都会用到的东西,也不会有人对于题目有什么歧义。2.虽说简单,但是链表和字符串足以考量一个人比较全面的编程能力,比如指针,内存使用,算法设计,测试等等。。。3. 面试官也是人,问一个很难的问题自己都要想上半天,万一自己说错了岂不是很丢脸?总之,微软比较注重一个人的基本功扎实与否,至于你会多少种编程语言,会玩SSH还是ASP.NET还是Ruby on rails,看的比较轻。经典面试试题:既然问的都是基础问题,怎么区分基本功扎实程度呢?以下给大家举几个很常见的例子,是很多面经上面出现过的经典例子:案例1. 写一个函数,将字符串a拷贝到字符串b,a和b都是char *,函数声明大概可以是这样:char * string_copy (char const * a, char * b);几乎所有人的第一反应是一个while循环,比如说这个经典的写法:while (*b++ = *a++); // 貌似是出自于KR的strcpy实现聪明的同学会去判断一下a和b是否为空,a和b是不是指向同一个区域,不过很少的同学会察觉到真正的陷阱:如果b指针指向的是a字符串当中的某个字节(也就是a和b的区域overlap了 )怎么办?案例2. 有一个数组a,写一个循环把数组里面的每一个数除以第一个数,如果你的答案是这样的:for (int i = 0; i != SIZE; ++i)a[i] /= a[0];面壁思过去,顺便看看《编程之美》里面的面试杂谈一章。案例3. 这个是我最喜欢的。实现对一个已经排序数组的二分查找。就这么简单。据说大多数国内的算法书上会有类似的这么一行:mid = (low + high) / 2,甚至有人想到了优化,mid = (low + high) 1听我的同学说早期的java虚拟机里面貌似也是这么写的(怪不得很多人说java sucks),比较正确的写法应该是mid = low + (high - low) / 2,不要问我有什么区别,自己去想。另外,大家也可以去实现一个完整的二分查找,没有想象的那么简单。以上是3个经典的不能再经典的例子,但是会暴露出很多人学东西不扎实的毛病(说实话,我也是),但是很遗憾,微软面试中如果出现了这样的错误,基本就over了。。。你问我为什么会问这些“钻牛角尖”的问题?官方的解释差不多是这样:微软需要的是“专业”的开发人员,所以在面试的时候期望一个“专业”的答案。什么是专业?就是无懈可击!开发人员犯的每一个错误(无论再小)都可能在产品中是一个潜在的bug,如果在这么基础的一些代码中(通常在20行以内)都会犯错,那么在产品代码中(规模通常会是两个逗号适当加1到2个0)怎么才能保证质量呢?说了那么多,谈到了问题,给大家一个解决方案吧,也是我的master shifu推荐的:这是个比较讨巧的策略:当面试官出了一道算法题让你在白板上开始写代码时,可以在角落里写一些测试用例(甚至可以象征性的问一下面试官,需不需要先写一些测试用例,亲自尝试,屡试不爽),并且按照这些测试用例来实现自己的算法。这样可以留给面试官一个比较“专业”的好印象,并且也对代码的质量多少有些帮助。你要知道,当面试官看着你的代码想都不想(通常是事先想好的陷阱)就指出你代码里面的漏洞的话,你会非常的被动,还不如在写以前就自己找出来。面试用什么语言?Java、C、C++?有人问我面试的时候会用什么语言?这个问题一直很纠结,不过可以肯定的是不太会用Java(大家懂的,除非你对面试官说你不会用C#但是你知道用Java怎么回答,并且答对了,面试官也不会太难为你)。比较常用的还是C或者C++,当然C#也会有,但据我观察面试官还是期望你用C或者C++来回答一些算法的问题(这样相对显的基础扎实一点吧)。那SQL什么的会不会问?我面的是SQL Server的SDE,自然不会让我写SQL,其它的team不好说,不过我在CSS实习的team是做BI的,那自然是SQL为主。说到C++和C#,一定会考OOP,一定会考一点设计模式,而且会根据一些语言的特性考。怎么考?很简单

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档