爱卿如梦 / 应聘&面试 / 刘润:来吧,测测你能否加入微软 | 5道微...

分享

   

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

2019-05-02  爱卿如梦


前一阵,听到吴军老师在他的专栏里讲到谷歌、微软和高盛是怎么面试的,非常有趣,也非常有洞见。这让我回忆起很多我在微软时被面试过,以及面试过别人的题。

 

微软这样的公司,是怎么面试人的?它会看中哪些重要的能力?

 

我是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道题的答案了,希望今天的讲解能够对你有所启发。


※  ※  ※


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>