想入職世界500強(qiáng),微軟面試題了解一下?
來(lái)源:
奇酷教育 發(fā)表於:
每到畢業(yè)季有兩(liǎng)件事必須要做。
每到畢業(yè)季有兩(liǎng)件事必須要做:
1.做畢業(yè)論文;
2.刷面試題。
那麼想入職世界500強(qiáng)的,微軟面試題了解一下?
以下內(nèi)容選自劉潤(rùn),潤(rùn)米諮詢董事長(zhǎng)《來(lái)吧,測(cè)測(cè)你能否加入微軟》
請寫(xiě)下你對(duì)其中一題,或者全部5題的思考過(guò)程,得出你的答案。
1. 有三個(gè)連續(xù)的,大於六的整數(shù),已知其中兩(liǎng)個(gè)是質(zhì)數(shù),求證第三個(gè)數(shù)能被6整除。
2. 有2個(gè)骰子,每一個(gè)骰子都是6面的正方體,每一面上只能放0到9的數(shù)字一個(gè),問(wèn)這2個(gè)骰子如何組合,可以達(dá)到顯示日曆的效果(從01-31)?
3. 昨天,我早上8點(diǎn)爬山,晚上8點(diǎn)到山頂。睡了一覺後,今天,我早上8點(diǎn)從山頂原路下山,晚上8點(diǎn)到山腳。請問(wèn),有沒有一個(gè)時(shí)刻,昨天和今天,我站在同樣位置?
4. 上海有多少輛自行車(chē)?
5. 如何用兩(liǎng)個(gè)指針,來(lái)判斷一個(gè)鍊表是否有環(huán)?
記住,答案不是最重要的,思考過(guò)程最重要。思路也未必有唯一正確的答案。
1
思考完之後,下面,我就開(kāi)始給出答案以及背後的考點(diǎn)和出發(fā)點(diǎn)了。你準(zhǔn)備好了嗎?一定要思考完再看哦。
有三個(gè)連續(xù)的,大於六的整數(shù),已知其中兩(liǎng)個(gè)是質(zhì)數(shù),求證第三個(gè)數(shù)能被6整除。
我先來(lái)說(shuō)一下這道題該怎麼解,然後再說(shuō)這道題的用意是什麼,要考核被試者的什麼能力。
三個(gè)連續(xù)大於6的整數(shù)我們都明白,比如7、8、9,或者說(shuō)11、12、13等等。
另外,題中還給了一個(gè)條件,叫其中兩(liǎng)個(gè)是質(zhì)數(shù)。質(zhì)數(shù)我們也明白,就是只能被1和這個(gè)數(shù)字本身整除的數(shù)。
問(wèn)題是,要證明第三個(gè)數(shù)能被6整除。為什麼突然冒出來(lái)個(gè)6?這個(gè)6是怎麼來(lái)的,就是解這道題的關(guān)鍵。
以往我在面試的時(shí)候,通常會(huì)給面試者一摞草稿紙,在面試者抓耳撓腮地算的時(shí)候,我們會(huì)建議他,把自己的思考過(guò)程說(shuō)出來(lái),一邊說(shuō)一邊思考,這樣我們就能知道他的思考過(guò)程。
比如有的面試者可能就會(huì)列一堆方程式,什麼n,n+1,n+2,然後不斷去用方程式來(lái)計(jì)算它們跟6的關(guān)係。那這時(shí)候我們就知道,他陷入歧途了。
那這道題的正確解法是什麼呢?
你要先把被6整除這個(gè)問(wèn)題,分解成同時(shí)能被2整除,也能被3整除,然後你只需要證明第三個(gè)數(shù)既能被2整除、也能被3整除就可以了。
那怎麼證明呢?只要你想到了這一步,接下來(lái)就會(huì)非常簡(jiǎn)單,甚至接近於常識了。
我們知道,任意連續(xù)的兩(liǎng)個(gè)整數(shù)中間一定有一個(gè)數(shù)是2的倍數(shù),也就是能被2整除;同時(shí)我們還知道,任意三個(gè)整數(shù)中間一定有一個(gè)數(shù)是3的倍數(shù),也就是能被3整除。
這也就是說(shuō),這連續(xù)的3個(gè)整數(shù)裡面,一定有一個(gè)數(shù)可以被2整除,還有一個(gè)數(shù)可以被3整除。
但是題幹告訴我們,題中的三個(gè)數(shù),有兩(liǎng)個(gè)數(shù)都是質(zhì)數(shù),也就是只能被1和這個(gè)數(shù)本身整除,而這三個(gè)數(shù)還都大於6,不可能是2或者3。
所以,這三個(gè)數(shù)裡能被2整除的數(shù)和能被3整除的數(shù),只能是同一個(gè)數(shù),也就是這兩(liǎng)個(gè)質(zhì)數(shù)之外的第三個(gè)數(shù)。
這樣,我們就證明了第三個(gè)數(shù)既能被2整除也能被3整除,也就是能被6整除。
聽我說(shuō)完之後你會(huì)發(fā)現(xiàn),這考的就是小學(xué)數(shù)學(xué)的知識,我當(dāng)年進(jìn)微軟的時(shí)候也被問(wèn)過(guò)這道題,那麼為什麼要考這道題呢?
因為這道題能考驗(yàn)一個(gè)人"分解問(wèn)題"的能力,對(duì)應(yīng)到這題,就是把能被6整除這件事情拆解為能被2整除,也能被3整除這兩(liǎng)個(gè)小問(wèn)題。這種能力特別重要。
我舉個(gè)例子。假設(shè)你遇到了一個(gè)客戶(hù),他的電腦突然宕機(jī)了,而你遠(yuǎn)在千裡之外只能用電話(huà)遠(yuǎn)程指揮,可電腦宕機(jī)的理由有千萬(wàn)種,你怎麼辦?
如果你懂得拆解問(wèn)題就知道,這種情況無(wú)非三種可能:電源沒插好、硬體出了問(wèn)題、軟體除了問(wèn)題。那這時(shí)候,你就可以一一來(lái)排除問(wèn)題到底出在哪了。
我再舉個(gè)例子。如何解決全球變暖問(wèn)題,如何解決碳排放問(wèn)題?專(zhuān)家們給出了成千上萬(wàn)的建議,吵得不可開(kāi)交。
但是Bill Gates在一次TED的演講中,給出了一個(gè)解決碳排放問(wèn)題的"分解公式":
CO2 = P x S x E x C
P,就是People,人口;
S,就是Service Per Person,每個(gè)人使用多少項(xiàng)服務(wù),比如開(kāi)車(chē),壁爐,燒烤等等;
E,就是Energy Per Service,每項(xiàng)服務(wù)使用多少能源;
C,就是CO2 Per Unit Energy,每單位能源,排放多少二氧化碳。
所以,解決碳排放問(wèn)題,就是分別解決人口問(wèn)題,環(huán)保的生活方式問(wèn)題,能源使用效率問(wèn)題,產(chǎn)生能源的碳排放問(wèn)題。每個(gè)人,每個(gè)領(lǐng)域各司其職,共同推進(jìn)。
你看,把一個(gè)如此宏大的問(wèn)題,"分解"為四個(gè)問(wèn)題,這種能力甚至可以用來(lái)拯救世界。
所以,面試微軟員工時(shí),我們特別在乎候選人分解問(wèn)題,然後解決問(wèn)題的能力。這道題只是眾多題庫(kù)中的一項(xiàng),但目的是考驗(yàn)"分解"。
答案不是最重要的,思維習(xí)慣更重要。如果你太輕鬆地直接說(shuō)出答案,我會(huì)給你換(huàn)另一道更難的題。
2
有2個(gè)骰子,每一個(gè)骰子都是6面的正方體,每一面上只能放0到9的數(shù)字一個(gè),問(wèn)這2個(gè)骰子如何組合,可以達(dá)到顯示日曆的效果(從01-31)?
這道題的邏輯是這樣的。首先,大多數(shù)人都會(huì)想到,我們有兩(liǎng)個(gè)立方體,那就一共12個(gè)面。現(xiàn)在有0-9,一共10個(gè)數(shù),放到這12個(gè)面上,所以,一定有數(shù)字是重複出現(xiàn)在兩(liǎng)個(gè)立方體上的。

那麼,哪些數(shù)是會(huì)重複出現(xiàn)的呢?
想到我們的目的是用這兩(liǎng)個(gè)立方體表示日曆,也就是01-31這一串數(shù)字。那麼,有哪些數(shù)字是在個(gè)位和十位上都必須有的呢?
我們有11號(hào)和22號(hào),所以1和2這兩(liǎng)個(gè)數(shù)字在兩(liǎng)個(gè)立方體上必須都出現(xiàn),那這樣一算,正好就是12個(gè)數(shù)字和12個(gè)面,可以一一對(duì)應(yīng)了。
但是如果你細(xì)想想,就會(huì)發(fā)現(xiàn)不對(duì)啊,當(dāng)日期是一位數(shù)的時(shí)候,0還需要在十位的位置上補位呢,所以0也必須同時(shí)出現(xiàn)在兩(liǎng)個(gè)立方體上。
如果0也必須出現(xiàn)2次,那就有13個(gè)數(shù)字,要出現(xiàn)在12個(gè)面上了。這樣就少了一個(gè)面。怎麼辦?
其實(shí)如果你能想到這裡,就已經(jīng)能拿到一半的分了。
那少的這一面該怎麼辦?怎麼在12個(gè)面上放13個(gè)數(shù)字?有沒有數(shù)字能重複用?
有,那就是6和9。到這為止,這個(gè)問(wèn)題就解決了。
那這個(gè)問(wèn)題考核的是什麼呢?
這裡的考點(diǎn)叫"跨越思維",也就是跳出固定框架去思考的能力。如果你覺得6就是6,9就是9,那就是沒有跳出固定的思維框架。
這種跨越思維的能力,在現(xiàn)實(shí)生活中,極其重要。
比如,誰說(shuō)冰箱的冰格,一定要在冰箱裡面呢?如果把冰格放滿(mǎn)廚房呢?這就是"分布式冰箱"。跨越思維,是創(chuàng)新的源泉。我們對(duì)創(chuàng)新能力要求高的人,非常重視對(duì)這種能力的考核。
同樣,如果我感覺到你對(duì)這道題很熟悉,後面還有幾十道其他類(lèi)似的題等著。再次記住,思維方式,比答案重要。
3
昨天,我早上8點(diǎn)爬山,晚上8點(diǎn)到山頂。睡了一覺後,今天,我早上8點(diǎn)從山頂原路下山,晚上8點(diǎn)到山腳。請問(wèn),有沒有一個(gè)時(shí)刻,昨天和今天,我站在同樣位置?
這道題我先告訴你答案:一定有。
很多同學(xué)會(huì)想:我上山跟下山的速度肯定是不一樣的,那是不是一定有呢?可能有吧。
怎麼證明呢?很多人就開(kāi)始列方程,算了一打草稿紙也沒算出來(lái)。
這道題其實(shí)是一個(gè)"轉(zhuǎn)換(huàn)思路"的問(wèn)題。
你可以把這道題轉(zhuǎn)換(huàn)成這樣的一道題:你和另一個(gè)人,一個(gè)從山頂往下走,一個(gè)從山腳往上走,走的是同一條路,是不是一定會(huì)相遇?
答案是一定的啊,你們走在一條路上,一定會(huì)遇見(jiàn)的。
這道題就是這麼簡(jiǎn)單,但如果你不懂得"轉(zhuǎn)換(huàn)思維",可能就是答不出來(lái)。
甚至,如果你習(xí)慣用數(shù)學(xué)方式來(lái)解題,我還可以給你提供一個(gè)思路:
你可以畫一個(gè)坐標(biāo)系,橫軸是時(shí)間,早八點(diǎn)到晚八點(diǎn),縱軸是山的高度,從0到海拔多少米。這時(shí)候你按照兩(liǎng)天的行程畫出兩(liǎng)條線(xiàn ),你就會(huì)發(fā)現(xiàn),無(wú)論你怎麼畫,兩(liǎng)天的速度有多麼不一樣,這兩(liǎng)條線(xiàn )都一定會(huì)在某一時(shí)刻、某一高度相交的。

好,第三題就說(shuō)到這裡。
這個(gè)"轉(zhuǎn)換(huàn)思維"有什麼用處呢?
就是用"其實(shí)就是"這四個(gè)字,看透問(wèn)題,然後找到解決方案。
顧客吃完飯結(jié)帳,200元。服務(wù)員說(shuō),"對(duì)了,我們今天有個(gè)充值免單活動(dòng)。您只要充值1000元,這頓飯就可以免單,很划算呢"。全額免單?這是莫大的優(yōu)惠啊!你可能充了1000元。
但是,如果有"轉(zhuǎn)換(huàn)思維",你就會(huì)想到,這"其實(shí)就是"花1000元買(mǎi)1200元的東西。相當(dāng)於打了83折。
"其實(shí)就是"這樣的轉(zhuǎn)化思維,在解決商業(yè)問(wèn)題,技術(shù)問(wèn)題時(shí),至關(guān)重要。
4
上海有多少輛自行車(chē)?
這道題考的是"系統(tǒng)思維"。也就是你理解一個(gè)系統(tǒng)、事物之間的關(guān)聯(lián)的能力。
這道題其實(shí)是沒有標(biāo)準(zhǔn)答案的,我在這給你提供幾種思路。
比如,你可以先查一下上海一共有多少人口,接下來(lái)你可以估算一下,這些人口當(dāng)中有多大比例是騎自行車(chē)的?比如可能20-60歲之間,工作的人會(huì)騎自行車(chē),通過(guò)比例你可以估算出有多少自行車(chē)。
你還可以大致算一下上海有多少條街道,每條街道大致能容納多少輛自行車(chē),這樣也能得出一個(gè)相對(duì)準(zhǔn)確的數(shù)字。
甚至在以前,自行車(chē)掛車(chē)牌的時(shí)候,有的人會(huì)說(shuō),我去街上隨機(jī)攔幾十輛自行車(chē),算出這幾十輛自行車(chē)車(chē)牌數(shù)字的中位數(shù),通過(guò)這個(gè)中位數(shù),我也能算出上海市一共發(fā)放了多少車(chē)牌。
當(dāng)然,這些都是思路,而且也並非是完美的思路。這就對(duì)了。因為只有沒有標(biāo)準(zhǔn)答案,我才能測(cè)試你的思路,測(cè)試你發(fā)現(xiàn)自行車(chē)和人群、自行車(chē)和街道、自行車(chē)和車(chē)牌或者和這個(gè)生態(tài)中其他因素的關(guān)係的能力,也就是建立模型,構(gòu )建系統(tǒng)的能力。
當(dāng)你建立模型,構(gòu )建系統(tǒng)的能力越接近現(xiàn)實(shí)世界,你的"系統(tǒng)思維"能力就越強(qiáng)。
這種系統(tǒng)思維能力重不重要呢?這種系統(tǒng)思考的能力,在軟體世界的能力,我想我就不用說(shuō)了。
就算在商業(yè)世界,也尤其重要。比如,在分析房價(jià)問(wèn)題時(shí),到底是房租決定了房價(jià),還是房價(jià)決定了房租?當(dāng)你能夠畫出一張模型圖,找到中間相互關(guān)聯(lián)的各種自變量和因變量,你才能系統(tǒng)性地思考和回答這個(gè)問(wèn)題。
5
如何用兩(liǎng)個(gè)指針,來(lái)判斷一個(gè)鍊表是否有環(huán)?
我說(shuō)大部分人是沒學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu )的,如果你不懂,可以忽略這道題。這其實(shí)是我埋的一個(gè)伏筆。
我之所以放這道題在這,就是想看看,在不懂計(jì)算機(jī)、不懂數(shù)據(jù)結(jié)構(gòu )的情況下,你是否會(huì)去查一查什麼是鍊表,什麼叫做指針。
以前我在微軟的時(shí)候,有一個(gè)人來(lái)面試,但是面試沒通過(guò),他特別遺憾,說(shuō)特別想進(jìn)微軟。
當(dāng)時(shí),他的面試官就從桌上拿起了一本厚厚的全英文的書(shū),跟他說(shuō):如果你真的想來(lái)微軟,那就把這本書(shū)拿回去看,一個(gè)星期之後再過(guò)來(lái)。
結(jié)果,一個(gè)星期之後這個(gè)人真的回來(lái)了,而且很不錯地回答了考官問(wèn)的,關(guān)於這本書(shū)的問(wèn)題。要知道,這本書(shū)是全英文的專(zhuān)業(yè)書(shū)籍,如果沒有強(qiáng)烈的求知慾和快速學(xué)習(xí)能力,是不可能在一周之內(nèi)看完的。
後來(lái)這個(gè)人也如願以償進(jìn)了微軟。當(dāng)我們問(wèn)他是怎麼啃下這本這麼難的書(shū)的時(shí)候,他說(shuō),他天天在家翻這本書(shū),夏天天氣熱,他媽媽就在旁邊幫他扇扇子,就這麼沒日沒夜地看了一個(gè)星期。
這道題也是一樣,考察的就是你的求知慾和快速學(xué)習(xí)的能力。
那我們說(shuō)回這道題。你對(duì)區(qū)塊鏈感興趣嗎?區(qū)塊鏈就是一種鍊表。
但是,很多號(hào)稱(chēng)懂區(qū)塊鏈的人,可能從來(lái)沒有學(xué)過(guò)"鍊表"這種數(shù)據(jù)結(jié)構(gòu )。我們簡(jiǎn)單介紹一下。
什麼叫做用兩(liǎng)個(gè)指針來(lái)判斷一個(gè)鍊表是否有環(huán)?
你可以把"鍊表"想像成無(wú)數(shù)的小房間,每個(gè)房間裡面都有一張紙條,紙條裡上寫(xiě)的是下一個(gè)房間的號(hào)碼,如果你進(jìn)到第357號(hào)房間,紙條上寫(xiě)著456,那你就跑到第456號(hào)房間。然後456房間裡面寫(xiě)著578,你就再跑到578號(hào)房間,然後從578再到632,從632再到7號(hào)房。這就叫鍊表,其實(shí)一點(diǎn)都不複雜。
那什麼叫有環(huán)呢?你到了7號(hào)房間,發(fā)現(xiàn)裡面的紙條寫(xiě)著456。你進(jìn)到456,咦,我剛才不是來(lái)過(guò)嗎?這就是環(huán)。
那什麼是指針呢?你,或者說(shuō)一直在走的這個(gè)人,就是指針。
那怎麼來(lái)判斷這個(gè)鍊表是不是有環(huán)?這裡面考察的就是"相對(duì)思維"。
這道題的解法是這樣的。讓兩(liǎng)個(gè)人同時(shí)走房間,其中一個(gè)人一間一間的走,另一個(gè)人要走得更快一些,在前一個(gè)人走一個(gè)房間的時(shí)間內(nèi),他要走兩(liǎng)個(gè)房間。
這樣,每當(dāng)前者走一個(gè)房間,後者就比前者多走了一個(gè)房間,相對(duì)於前者,後者多走的房間就會(huì)越來(lái)越多。那麼,如果這個(gè)鍊表有環(huán)的話(huà),後者就一定會(huì)在某一個(gè)房間和前者相遇。否則,兩(liǎng)人都會(huì)先後到達(dá)終點(diǎn)。
這就是"相對(duì)思維",就是讓你在一個(gè)無(wú)休無(wú)止的問(wèn)題裡面,懂得製造相對(duì)速度。
(本文作者,劉潤(rùn),潤(rùn)米諮詢董事長(zhǎng))