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