想入職世界500強,微軟面試題了解一下?
來源:
奇酷教育 發(fā)表于:
每到畢業(yè)季有兩件事必須要做。
每到畢業(yè)季有兩件事必須要做:
1.做畢業(yè)論文;
2.刷面試題。
那么想入職世界500強的,微軟面試題了解一下?
以下內(nèi)容選自劉潤,潤米咨詢董事長《來吧,測測你能否加入微軟》
請寫下你對其中一題,或者全部5題的思考過程,得出你的答案。
1. 有三個連續(xù)的,大于六的整數(shù),已知其中兩個是質(zhì)數(shù),求證第三個數(shù)能被6整除。
2. 有2個骰子,每一個骰子都是6面的正方體,每一面上只能放0到9的數(shù)字一個,問這2個骰子如何組合,可以達到顯示日歷的效果(從01-31)?
3. 昨天,我早上8點爬山,晚上8點到山頂。睡了一覺后,今天,我早上8點從山頂原路下山,晚上8點到山腳。請問,有沒有一個時刻,昨天和今天,我站在同樣位置?
4. 上海有多少輛自行車?
5. 如何用兩個指針,來判斷一個鏈表是否有環(huán)?
記住,答案不是最重要的,思考過程最重要。思路也未必有唯一正確的答案。
1
思考完之后,下面,我就開始給出答案以及背后的考點和出發(fā)點了。你準備好了嗎?一定要思考完再看哦。
有三個連續(xù)的,大于六的整數(shù),已知其中兩個是質(zhì)數(shù),求證第三個數(shù)能被6整除。
我先來說一下這道題該怎么解,然后再說這道題的用意是什么,要考核被試者的什么能力。
三個連續(xù)大于6的整數(shù)我們都明白,比如7、8、9,或者說11、12、13等等。
另外,題中還給了一個條件,叫其中兩個是質(zhì)數(shù)。質(zhì)數(shù)我們也明白,就是只能被1和這個數(shù)字本身整除的數(shù)。
問題是,要證明第三個數(shù)能被6整除。為什么突然冒出來個6?這個6是怎么來的,就是解這道題的關(guān)鍵。
以往我在面試的時候,通常會給面試者一摞草稿紙,在面試者抓耳撓腮地算的時候,我們會建議他,把自己的思考過程說出來,一邊說一邊思考,這樣我們就能知道他的思考過程。
比如有的面試者可能就會列一堆方程式,什么n,n+1,n+2,然后不斷去用方程式來計算它們跟6的關(guān)系。那這時候我們就知道,他陷入歧途了。
那這道題的正確解法是什么呢?
你要先把被6整除這個問題,分解成同時能被2整除,也能被3整除,然后你只需要證明第三個數(shù)既能被2整除、也能被3整除就可以了。
那怎么證明呢?只要你想到了這一步,接下來就會非常簡單,甚至接近于常識了。
我們知道,任意連續(xù)的兩個整數(shù)中間一定有一個數(shù)是2的倍數(shù),也就是能被2整除;同時我們還知道,任意三個整數(shù)中間一定有一個數(shù)是3的倍數(shù),也就是能被3整除。
這也就是說,這連續(xù)的3個整數(shù)里面,一定有一個數(shù)可以被2整除,還有一個數(shù)可以被3整除。
但是題干告訴我們,題中的三個數(shù),有兩個數(shù)都是質(zhì)數(shù),也就是只能被1和這個數(shù)本身整除,而這三個數(shù)還都大于6,不可能是2或者3。
所以,這三個數(shù)里能被2整除的數(shù)和能被3整除的數(shù),只能是同一個數(shù),也就是這兩個質(zhì)數(shù)之外的第三個數(shù)。
這樣,我們就證明了第三個數(shù)既能被2整除也能被3整除,也就是能被6整除。
聽我說完之后你會發(fā)現(xiàn),這考的就是小學(xué)數(shù)學(xué)的知識,我當(dāng)年進微軟的時候也被問過這道題,那么為什么要考這道題呢?
因為這道題能考驗一個人"分解問題"的能力,對應(yīng)到這題,就是把能被6整除這件事情拆解為能被2整除,也能被3整除這兩個小問題。這種能力特別重要。
我舉個例子。假設(shè)你遇到了一個客戶,他的電腦突然宕機了,而你遠在千里之外只能用電話遠程指揮,可電腦宕機的理由有千萬種,你怎么辦?
如果你懂得拆解問題就知道,這種情況無非三種可能:電源沒插好、硬件出了問題、軟件除了問題。那這時候,你就可以一一來排除問題到底出在哪了。
我再舉個例子。如何解決全球變暖問題,如何解決碳排放問題?專家們給出了成千上萬的建議,吵得不可開交。
但是Bill Gates在一次TED的演講中,給出了一個解決碳排放問題的"分解公式":
CO2 = P x S x E x C
P,就是People,人口;
S,就是Service Per Person,每個人使用多少項服務(wù),比如開車,壁爐,燒烤等等;
E,就是Energy Per Service,每項服務(wù)使用多少能源;
C,就是CO2 Per Unit Energy,每單位能源,排放多少二氧化碳。
所以,解決碳排放問題,就是分別解決人口問題,環(huán)保的生活方式問題,能源使用效率問題,產(chǎn)生能源的碳排放問題。每個人,每個領(lǐng)域各司其職,共同推進。
你看,把一個如此宏大的問題,"分解"為四個問題,這種能力甚至可以用來拯救世界。
所以,面試微軟員工時,我們特別在乎候選人分解問題,然后解決問題的能力。這道題只是眾多題庫中的一項,但目的是考驗"分解"。
答案不是最重要的,思維習(xí)慣更重要。如果你太輕松地直接說出答案,我會給你換另一道更難的題。
2
有2個骰子,每一個骰子都是6面的正方體,每一面上只能放0到9的數(shù)字一個,問這2個骰子如何組合,可以達到顯示日歷的效果(從01-31)?
這道題的邏輯是這樣的。首先,大多數(shù)人都會想到,我們有兩個立方體,那就一共12個面?,F(xiàn)在有0-9,一共10個數(shù),放到這12個面上,所以,一定有數(shù)字是重復(fù)出現(xiàn)在兩個立方體上的。
那么,哪些數(shù)是會重復(fù)出現(xiàn)的呢?
想到我們的目的是用這兩個立方體表示日歷,也就是01-31這一串?dāng)?shù)字。那么,有哪些數(shù)字是在個位和十位上都必須有的呢?
我們有11號和22號,所以1和2這兩個數(shù)字在兩個立方體上必須都出現(xiàn),那這樣一算,正好就是12個數(shù)字和12個面,可以一一對應(yīng)了。
但是如果你細想想,就會發(fā)現(xiàn)不對啊,當(dāng)日期是一位數(shù)的時候,0還需要在十位的位置上補位呢,所以0也必須同時出現(xiàn)在兩個立方體上。
如果0也必須出現(xiàn)2次,那就有13個數(shù)字,要出現(xiàn)在12個面上了。這樣就少了一個面。怎么辦?
其實如果你能想到這里,就已經(jīng)能拿到一半的分了。
那少的這一面該怎么辦?怎么在12個面上放13個數(shù)字?有沒有數(shù)字能重復(fù)用?
有,那就是6和9。到這為止,這個問題就解決了。
那這個問題考核的是什么呢?
這里的考點叫"跨越思維",也就是跳出固定框架去思考的能力。如果你覺得6就是6,9就是9,那就是沒有跳出固定的思維框架。
這種跨越思維的能力,在現(xiàn)實生活中,極其重要。
比如,誰說冰箱的冰格,一定要在冰箱里面呢?如果把冰格放滿廚房呢?這就是"分布式冰箱"??缭剿季S,是創(chuàng)新的源泉。我們對創(chuàng)新能力要求高的人,非常重視對這種能力的考核。
同樣,如果我感覺到你對這道題很熟悉,后面還有幾十道其他類似的題等著。再次記住,思維方式,比答案重要。
3
昨天,我早上8點爬山,晚上8點到山頂。睡了一覺后,今天,我早上8點從山頂原路下山,晚上8點到山腳。請問,有沒有一個時刻,昨天和今天,我站在同樣位置?
這道題我先告訴你答案:一定有。
很多同學(xué)會想:我上山跟下山的速度肯定是不一樣的,那是不是一定有呢?可能有吧。
怎么證明呢?很多人就開始列方程,算了一打草稿紙也沒算出來。
這道題其實是一個"轉(zhuǎn)換思路"的問題。
你可以把這道題轉(zhuǎn)換成這樣的一道題:你和另一個人,一個從山頂往下走,一個從山腳往上走,走的是同一條路,是不是一定會相遇?
答案是一定的啊,你們走在一條路上,一定會遇見的。
這道題就是這么簡單,但如果你不懂得"轉(zhuǎn)換思維",可能就是答不出來。
甚至,如果你習(xí)慣用數(shù)學(xué)方式來解題,我還可以給你提供一個思路:
你可以畫一個坐標系,橫軸是時間,早八點到晚八點,縱軸是山的高度,從0到海拔多少米。這時候你按照兩天的行程畫出兩條線,你就會發(fā)現(xiàn),無論你怎么畫,兩天的速度有多么不一樣,這兩條線都一定會在某一時刻、某一高度相交的。
好,第三題就說到這里。
這個"轉(zhuǎn)換思維"有什么用處呢?
就是用"其實就是"這四個字,看透問題,然后找到解決方案。
顧客吃完飯結(jié)賬,200元。服務(wù)員說,"對了,我們今天有個充值免單活動。您只要充值1000元,這頓飯就可以免單,很劃算呢"。全額免單?這是莫大的優(yōu)惠啊!你可能充了1000元。
但是,如果有"轉(zhuǎn)換思維",你就會想到,這"其實就是"花1000元買1200元的東西。相當(dāng)于打了83折。
"其實就是"這樣的轉(zhuǎn)化思維,在解決商業(yè)問題,技術(shù)問題時,至關(guān)重要。
4
上海有多少輛自行車?
這道題考的是"系統(tǒng)思維"。也就是你理解一個系統(tǒng)、事物之間的關(guān)聯(lián)的能力。
這道題其實是沒有標準答案的,我在這給你提供幾種思路。
比如,你可以先查一下上海一共有多少人口,接下來你可以估算一下,這些人口當(dāng)中有多大比例是騎自行車的?比如可能20-60歲之間,工作的人會騎自行車,通過比例你可以估算出有多少自行車。
你還可以大致算一下上海有多少條街道,每條街道大致能容納多少輛自行車,這樣也能得出一個相對準確的數(shù)字。
甚至在以前,自行車掛車牌的時候,有的人會說,我去街上隨機攔幾十輛自行車,算出這幾十輛自行車車牌數(shù)字的中位數(shù),通過這個中位數(shù),我也能算出上海市一共發(fā)放了多少車牌。
當(dāng)然,這些都是思路,而且也并非是完美的思路。這就對了。因為只有沒有標準答案,我才能測試你的思路,測試你發(fā)現(xiàn)自行車和人群、自行車和街道、自行車和車牌或者和這個生態(tài)中其他因素的關(guān)系的能力,也就是建立模型,構(gòu)建系統(tǒng)的能力。
當(dāng)你建立模型,構(gòu)建系統(tǒng)的能力越接近現(xiàn)實世界,你的"系統(tǒng)思維"能力就越強。
這種系統(tǒng)思維能力重不重要呢?這種系統(tǒng)思考的能力,在軟件世界的能力,我想我就不用說了。
就算在商業(yè)世界,也尤其重要。比如,在分析房價問題時,到底是房租決定了房價,還是房價決定了房租?當(dāng)你能夠畫出一張模型圖,找到中間相互關(guān)聯(lián)的各種自變量和因變量,你才能系統(tǒng)性地思考和回答這個問題。
5
如何用兩個指針,來判斷一個鏈表是否有環(huán)?
我說大部分人是沒學(xué)過數(shù)據(jù)結(jié)構(gòu)的,如果你不懂,可以忽略這道題。這其實是我埋的一個伏筆。
我之所以放這道題在這,就是想看看,在不懂計算機、不懂?dāng)?shù)據(jù)結(jié)構(gòu)的情況下,你是否會去查一查什么是鏈表,什么叫做指針。
以前我在微軟的時候,有一個人來面試,但是面試沒通過,他特別遺憾,說特別想進微軟。
當(dāng)時,他的面試官就從桌上拿起了一本厚厚的全英文的書,跟他說:如果你真的想來微軟,那就把這本書拿回去看,一個星期之后再過來。
結(jié)果,一個星期之后這個人真的回來了,而且很不錯地回答了考官問的,關(guān)于這本書的問題。要知道,這本書是全英文的專業(yè)書籍,如果沒有強烈的求知欲和快速學(xué)習(xí)能力,是不可能在一周之內(nèi)看完的。
后來這個人也如愿以償進了微軟。當(dāng)我們問他是怎么啃下這本這么難的書的時候,他說,他天天在家翻這本書,夏天天氣熱,他媽媽就在旁邊幫他扇扇子,就這么沒日沒夜地看了一個星期。
這道題也是一樣,考察的就是你的求知欲和快速學(xué)習(xí)的能力。
那我們說回這道題。你對區(qū)塊鏈感興趣嗎?區(qū)塊鏈就是一種鏈表。
但是,很多號稱懂區(qū)塊鏈的人,可能從來沒有學(xué)過"鏈表"這種數(shù)據(jù)結(jié)構(gòu)。我們簡單介紹一下。
什么叫做用兩個指針來判斷一個鏈表是否有環(huán)?
你可以把"鏈表"想象成無數(shù)的小房間,每個房間里面都有一張紙條,紙條里上寫的是下一個房間的號碼,如果你進到第357號房間,紙條上寫著456,那你就跑到第456號房間。然后456房間里面寫著578,你就再跑到578號房間,然后從578再到632,從632再到7號房。這就叫鏈表,其實一點都不復(fù)雜。
那什么叫有環(huán)呢?你到了7號房間,發(fā)現(xiàn)里面的紙條寫著456。你進到456,咦,我剛才不是來過嗎?這就是環(huán)。
那什么是指針呢?你,或者說一直在走的這個人,就是指針。
那怎么來判斷這個鏈表是不是有環(huán)?這里面考察的就是"相對思維"。
這道題的解法是這樣的。讓兩個人同時走房間,其中一個人一間一間的走,另一個人要走得更快一些,在前一個人走一個房間的時間內(nèi),他要走兩個房間。
這樣,每當(dāng)前者走一個房間,后者就比前者多走了一個房間,相對于前者,后者多走的房間就會越來越多。那么,如果這個鏈表有環(huán)的話,后者就一定會在某一個房間和前者相遇。否則,兩人都會先后到達終點。
這就是"相對思維",就是讓你在一個無休無止的問題里面,懂得制造相對速度。
(本文作者,劉潤,潤米咨詢董事長)