刘润:来吧,测测你能否加入微软 | 5道微软面试题

前一阵,听到吴军老师在他的专栏里讲到谷歌、微软和高盛是怎么面试的,非常有趣,也非常有洞见。这让我回忆起很多我在微软时被面试过,以及面试过别人的题。
微软这样的公司,是怎么面试人的?它会看中哪些重要的能力?
我是1999年加入微软的。我清楚地记得,我从北京坐火车去上海面试。早上如约走进微软,人力资源部把我安排进一间会议室。
然后9:30,一位一看就是宅男的微软员工,顶着光环,走进来,一边看我的简历,一边问我问题。我面前有一本草稿纸,给我思考和计算用。我高度集中地回答了一个小时问题后,他在面试表格上写了点什么,然后就带着表格出去了。我在想,是不是结束了。
可是我错了。紧接着,又进来一个人,又是一个宅男,又和我聊了一个小时。然后,又是一个,然后又是一个。
就这样,这个会议室一共进来了6个人,我从早上9点半,一直被面到下午3点半。
最后,我被从会议室带到了一间办公室。一看,就是大BOSS。大BOSS又面了我1个小时,最后当场通知我:欢迎加入微软。后来我知道,这个大BOSS,就是唐骏。
当时的“微软亚洲技术中心”只有80人,后来升级为“微软全球技术中心”,涨到了500多人。
我也从工程师,变成了部门经理,变成了高级经理,变成了战略合作总监。在快速扩张的过程中,以及在整个微软14年的职业生涯中,我面试的人,应该至少不下1000人,也接受了好几个不同的如何面试的培训。
今天,我就把我接受面试时,被问到的那些题,以及我传承下来后,去面试别人的题,与你分享。
这些题不是从网上找来的“世界500强面经”,而是我们真实使用的。每道题背后,其实都有出发点和考点。
我从这些题中,选取了5道。这5道题是:
1. 有三个连续的,大于六的整数,已知其中两个是质数,求证第三个数能被6整除。2. 有2个骰子,每一个骰子都是6面的正方体,每一面上只能放0到9的数字一个,问这2个骰子如何组合,可以达到显示日历的效果(从01-31)?3. 昨天,我早上8点爬山,晚上8点到山顶。睡了一觉后,今天,我早上8点从山顶原路下山,晚上8点到山脚。请问,有没有一个时刻,昨天和今天,我站在同样位置?4. 上海有多少辆自行车?5. 如何用两个指针,来判断一个链表是否有环?
请写下你对其中一题,或者全部5题的思考过程,得出你的答案。最后一道题,需要一定的“数据结构”的知识。没有学过计算机的,可以忽略。
记住,答案不是最重要的,思考过程最重要。思路也未必有唯一正确的答案。
※ ※ ※
思考完之后,下面,我就开始给出答案以及背后的考点和出发点了。你准备好了吗?一定要思考完再看哦。
1.有三个连续的,大于六的整数,已知其中两个是质数,求证第三个数能被6整除。
我先来说一下这道题该怎么解,然后再说这道题的用意是什么,要考核被试者的什么能力。
三个连续大于6的整数我们都明白,比如7、8、9,或者说11、12、13等等。
另外,题中还给了一个条件,叫其中两个是质数。质数我们也明白,就是只能被1和这个数字本身整除的数。
问题是,要证明第三个数能被6整除。为什么突然冒出来个6?这个6是怎么来的,就是解这道题的关键。
以往我在面试的时候,通常会给面试者一摞草稿纸,在面试者抓耳挠腮地算的时候,我们会建议他,把自己的思考过程说出来,一边说一边思考,这样我们就能知道他的思考过程。
比如有的面试者可能就会列一堆方程式,什么n,n+1,n+2,然后不断去用方程式来计算它们跟6的关系。那这时候我们就知道,他陷入歧途了。
那这道题的正确解法是什么呢?
你要先把被6整除这个问题,分解成同时能被2整除,也能被3整除,然后你只需要证明第三个数既能被2整除、也能被3整除就可以了。
那怎么证明呢?只要你想到了这一步,接下来就会非常简单,甚至接近于常识了。
我们知道,任意连续的两个整数中间一定有一个数是2的倍数,也就是能被2整除;同时我们还知道,任意三个整数中间一定有一个数是3的倍数,也就是能被3整除。
这也就是说,这连续的3个整数里面,一定有一个数可以被2整除,还有一个数可以被3整除。
但是题干告诉我们,题中的三个数,有两个数都是质数,也就是只能被1和这个数本身整除,而这三个数还都大于6,不可能是2或者3。
所以,这三个数里能被2整除的数和能被3整除的数,只能是同一个数,也就是这两个质数之外的第三个数。
这样,我们就证明了第三个数既能被2整除也能被3整除,也就是能被6整除。
听我说完之后你会发现,这考的就是小学数学的知识,我当年进微软的时候也被问过这道题,那么为什么要考这道题呢?
因为这道题能考验一个人”分解问题”的能力,对应到这题,就是把能被6整除这件事情拆解为能被2整除,也能被3整除这两个小问题。这种能力特别重要。
我举个例子。假设你遇到了一个客户,他的电脑突然宕机了,而你远在千里之外只能用电话远程指挥,可电脑宕机的理由有千万种,你怎么办?
如果你懂得拆解问题就知道,这种情况无非三种可能:电源没插好、硬件出了问题、软件除了问题。那这时候,你就可以一一来排除问题到底出在哪了。
我再举个例子。如何解决全球变暖问题,如何解决碳排放问题?专家们给出了成千上万的建议,吵得不可开交。
但是Bill Gates在一次TED的演讲中,给出了一个解决碳排放问题的”分解公式”:
CO2 = P x S x E x C
P,就是People,人口;
S,就是Service Per Person,每个人使用多少项服务,比如开车,壁炉,烧烤等等;
E,就是Energy Per Service,每项服务使用多少能源;
C,就是CO2 Per Unit Energy,每单位能源,排放多少二氧化碳。
所以,解决碳排放问题,就是分别解决人口问题(P),环保的生活方式问题(S),能源使用效率问题(E),产生能源的碳排放问题(C)。每个人,每个领域各司其职,共同推进。
你看,把一个如此宏大的问题,”分解”为四个问题,这种能力甚至可以用来拯救世界。
所以,面试微软员工时,我们特别在乎候选人分解问题,然后解决问题的能力。这道题只是众多题库中的一项,但目的是考验”分解”。
答案不是最重要的,思维习惯更重要。如果你太轻松地直接说出答案,我会给你换另一道更难的题。
※ ※ ※
2. 有2个骰子,每一个骰子都是6面的正方体,每一面上只能放0到9的数字一个,问这2个骰子如何组合,可以达到显示日历的效果(从01-31)?
这道题的逻辑是这样的。首先,大多数人都会想到,我们有两个立方体,那就一共12个面。现在有0-9,一共10个数,放到这12个面上,所以,一定有数字是重复出现在两个立方体上的。
那么,哪些数是会重复出现的呢?
想到我们的目的是用这两个立方体表示日历,也就是01-31这一串数字。那么,有哪些数字是在个位和十位上都必须有的呢?
我们有11号和22号,所以1和2这两个数字在两个立方体上必须都出现,那这样一算,正好就是12个数字和12个面,可以一一对应了。
但是如果你细想想,就会发现不对啊,当日期是一位数的时候,0还需要在十位的位置上补位呢,所以0也必须同时出现在两个立方体上。
如果0也必须出现2次,那就有13个数字,要出现在12个面上了。这样就少了一个面。怎么办?
其实如果你能想到这里,就已经能拿到一半的分了。
那少的这一面该怎么办?怎么在12个面上放13个数字?有没有数字能重复用?
有,那就是6和9。到这为止,这个问题就解决了。
那这个问题考核的是什么呢?
这里的考点叫”跨越思维”,也就是跳出固定框架去思考的能力。如果你觉得6就是6,9就是9,那就是没有跳出固定的思维框架。
这种跨越思维的能力,在现实生活中,极其重要。
比如,谁说冰箱的冰格,一定要在冰箱里面呢?如果把冰格放满厨房呢?这就是”分布式冰箱”。跨越思维,是创新的源泉。我们对创新能力要求高的人,非常重视对这种能力的考核。
同样,如果我感觉到你对这道题很熟悉,后面还有几十道其他类似的题等着。再次记住,思维方式,比答案重要。
※ ※ ※
3. 昨天,我早上8点爬山,晚上8点到山顶。睡了一觉后,今天,我早上8点从山顶原路下山,晚上8点到山脚。请问,有没有一个时刻,昨天和今天,我站在同样位置?
这道题我先告诉你答案:一定有。
很多同学会想:我上山跟下山的速度肯定是不一样的,那是不是一定有呢?可能有吧。
怎么证明呢?很多人就开始列方程,算了一打草稿纸也没算出来。
这道题其实是一个”转换思路”的问题。
你可以把这道题转换成这样的一道题:你和另一个人,一个从山顶往下走,一个从山脚往上走,走的是同一条路,是不是一定会相遇?
答案是一定的啊,你们走在一条路上,一定会遇见的。
这道题就是这么简单,但如果你不懂得”转换思维”,可能就是答不出来。
甚至,如果你习惯用数学方式来解题,我还可以给你提供一个思路:
你可以画一个坐标系,横轴是时间,早八点到晚八点,纵轴是山的高度,从0到海拔多少米。这时候你按照两天的行程画出两条线,你就会发现,无论你怎么画,两天的速度有多么不一样,这两条线都一定会在某一时刻、某一高度相交的。
好,第三题就说到这里。
这个”转换思维”有什么用处呢?
就是用”其实就是”这四个字,看透问题,然后找到解决方案。
顾客吃完饭结账,200元。服务员说,”对了,我们今天有个充值免单活动。您只要充值1000元,这顿饭就可以免单,很划算呢”。全额免单?这是莫大的优惠啊!你可能充了1000元。
但是,如果有”转换思维”,你就会想到,这”其实就是”花1000元买1200元的东西。相当于打了83折。
“其实就是”这样的转化思维,在解决商业问题,技术问题时,至关重要。
※ ※ ※
4. 上海有多少辆自行车?
这道题考的是”系统思维”。也就是你理解一个系统、事物之间的关联的能力。
这道题其实是没有标准答案的,我在这给你提供几种思路。
比如,你可以先查一下上海一共有多少人口,接下来你可以估算一下,这些人口当中有多大比例是骑自行车的?比如可能20-60岁之间,工作的人会骑自行车,通过比例你可以估算出有多少自行车。
你还可以大致算一下上海有多少条街道,每条街道大致能容纳多少辆自行车,这样也能得出一个相对准确的数字。
甚至在以前,自行车挂车牌的时候,有的人会说,我去街上随机拦几十辆自行车,算出这几十辆自行车车牌数字的中位数,通过这个中位数,我也能算出上海市一共发放了多少车牌。
当然,这些都是思路,而且也并非是完美的思路。这就对了。因为只有没有标准答案,我才能测试你的思路,测试你发现自行车和人群、自行车和街道、自行车和车牌或者和这个生态中其他因素的关系的能力,也就是建立模型,构建系统的能力。
当你建立模型,构建系统的能力越接近现实世界,你的”系统思维”能力就越强。
这种系统思维能力重不重要呢?这种系统思考的能力,在软件世界的能力,我想我就不用说了。
就算在商业世界,也尤其重要。比如,在分析房价问题时,到底是房租决定了房价,还是房价决定了房租?当你能够画出一张模型图,找到中间相互关联的各种自变量和因变量,你才能系统性地思考和回答这个问题。
※ ※ ※
5. 如何用两个指针,来判断一个链表是否有环?
我说大部分人是没学过数据结构的,如果你不懂,可以忽略这道题。这其实是我埋的一个伏笔。
我之所以放这道题在这,就是想看看,在不懂计算机、不懂数据结构的情况下,你是否会去查一查什么是链表,什么叫做指针。
以前我在微软的时候,有一个人来面试,但是面试没通过,他特别遗憾,说特别想进微软。
当时,他的面试官就从桌上拿起了一本厚厚的全英文的书,跟他说:如果你真的想来微软,那就把这本书拿回去看,一个星期之后再过来。
结果,一个星期之后这个人真的回来了,而且很不错地回答了考官问的,关于这本书的问题。要知道,这本书是全英文的专业书籍,如果没有强烈的求知欲和快速学习能力,是不可能在一周之内看完的。
后来这个人也如愿以偿进了微软。当我们问他是怎么啃下这本这么难的书的时候,他说,他天天在家翻这本书,夏天天气热,他妈妈就在旁边帮他扇扇子,就这么没日没夜地看了一个星期。
这道题也是一样,考察的就是你的求知欲和快速学习的能力。
那我们说回这道题。你对区块链感兴趣吗?区块链就是一种链表。
但是,很多号称懂区块链的人,可能从来没有学过”链表”这种数据结构。我们简单介绍一下。
什么叫做用两个指针来判断一个链表是否有环?
你可以把”链表”想象成无数的小房间,每个房间里面都有一张纸条,纸条里上写的是下一个房间的号码,如果你进到第357号房间,纸条上写着456,那你就跑到第456号房间。然后456房间里面写着578,你就再跑到578号房间,然后从578再到632,从632再到7号房。这就叫链表,其实一点都不复杂。
那什么叫有环呢?你到了7号房间,发现里面的纸条写着456。你进到456,咦,我刚才不是来过吗?这就是环。
那什么是指针呢?你,或者说一直在走的这个人,就是指针。
那怎么来判断这个链表是不是有环?这里面考察的就是”相对思维”。
这道题的解法是这样的。让两个人同时走房间,其中一个人一间一间的走,另一个人要走得更快一些,在前一个人走一个房间的时间内,他要走两个房间。
这样,每当前者走一个房间,后者就比前者多走了一个房间,相对于前者,后者多走的房间就会越来越多。那么,如果这个链表有环的话,后者就一定会在某一个房间和前者相遇。否则,两人都会先后到达终点。
这就是”相对思维”,就是让你在一个无休无止的问题里面,懂得制造相对速度。
※ ※ ※
好了,通过这5道题,我其实讲了微软面试人时,非常看重的,独立于专业知识的几种思维能力:分解能力,跨越思维,转换思维,系统思维,和相对思维。
我很有幸,通过了面试加入了微软。在微软的14年,和创业的5年,深深感受到这些能力对我的巨大帮助。
不管你是否加入微软,我都建议你,培养这些能力。做出这些题不重要,拥有这些思维能力,更重要。
好,这就是这5道题的答案了,希望今天的讲解能够对你有所启发。
※ ※ ※
推荐阅读
·好吧,我来还原一下京东和六六撞车的事故现场
·大家好,我就是区块链本人。今天,我要给你们介绍我的家族……
·祝贺拍拍贷上市,讲讲我价值8000万的认知
·独家专访雷军 | 一篇文章,讲透小米新零售的8大战略
·以你的努力程度,根本轮不到拼天赋
·每天进步1%,一年提升38倍,这个复利公式是骗人的
刘润:润米咨询董事长;互联网转型专家;前微软战略合作总监;拥有23万订阅的《刘润?5分钟商学院》主理人。
2010年,全球最有钱的388人,他们拥有的财富,相当于全球一半贫穷人口拥有的财富总和;2014年,这个数字是85人,2015年,62人。2017年,只有8个人。也就是说,一辆商务车,就能装下全球一半人口的财富。
商业认知的严重不对称,正在带来财富机会的极度不平等。
你必须不断提升自己的商业认知,不断地进化、进化、进化,才有可能在这个快速变革的时代中抓住更多机会。而完整的商业认知,不应该只是少数精英才能拥有的东西。
为此,我建立了社群“进化岛”。现在,进化岛已经有近3800位岛民了,它就像一个商业朋友圈,在岛上,你可以阅读和分享独到的商业观点,讨论和点评热点的商业现象。
你可以与岛上大咖们积极互动,互相学习,提出你的问题、困惑,与大家共创解决方案。有时候你的顿悟,可能只是别人的基本功,而你的只言片语,也许能让别人醍醐灌顶。
长按识别下方二维码,登陆《刘润·进化岛》(点击查看详情)。和我一起进化,抓住这个时代的机遇。
????戳“阅读原文”开启商业成长之路

版权声明