刘润来吧测测你能否加入微软5道微软面试题.docx
《刘润来吧测测你能否加入微软5道微软面试题.docx》由会员分享,可在线阅读,更多相关《刘润来吧测测你能否加入微软5道微软面试题.docx(9页珍藏版)》请在冰豆网上搜索。
刘润来吧测测你能否加入微软5道微软面试题
刘润:
来吧,测测你能否加入微软|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整除这两个小问题。
这种能力特别重要。
我举个例子。
假设你遇到了一个客户,他的电脑突然宕机了,而你远在千里之外只能用电话远程指挥,可电脑宕机的理由有千万种,你怎么办?
如果你懂得拆解问题就知道,这种情况无非三种可能:
电源没插好、硬件出了问题、软件除了问题。
那这时候,你就可以一一来排除问题到底出在哪了。
我再举个例子。
如何解决全球变暖问题,如何解决碳排放问题?
专家们给出了成千上万的建议,吵得不可开交。
但是BillGates在一次TED的演讲中,给出了一个解决碳排放问题的"分解公式":
CO2=PxSxExC
P,就是People,人口;
S,就是ServicePerPerson,每个人使用多少项服务,比如开车,壁炉,烧烤等等;
E,就是EnergyPerService,每项服务使用多少能源;
C,就是CO2PerUnitEnergy,每单位能源,排放多少二氧化碳。
所以,解决碳排放问题,就是分别解决人口问题(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岁之间,工作的人会骑自行车,通过比例你可以估算出有多少自行车。
你还可以大致算一下上海有多少条街道,每条街道大致能容纳多少辆自行车,这样也能得出一个相对准确的数字。
甚至在以前,自行车挂车牌的时候,有的人会说,我去街上随机拦几十辆自行车,算出这几十辆自行车车牌数字的中位数,通过这个中位数,我也能算出上海市一共发放了多少车牌。
当然,这些都是思路,而且也并非是完美的思路。
这就对了。
因为只有没有标准答案,我才能测试你的思路,测试你发现自行车和人群、自行车和街道、自行车和车牌或者和这个生态中其他因素的关系的能力,也就是建立模型,构建系统的能力。
当你建立模型,构建系统的能力越接近现实世界,你的"系统思维"能力就越强。
这种系统思维能力重不重要呢?
这种系统思考的能力,在软件世界的能力,我想我就不用说了。
就算在商业世界,也尤其重要。
比如,在分析房价问题时,到底是房租决定了房价,还是房价决定了房租?
当你能够画出一张模型图,找到中间相互关联的各种自变量和因变量,