Prashant Bagdia, Final year CS undergrad, NIT Warangal
下面這個問題玩徊,是我一個朋友在微軟校招面試時被問到的租悄。
面試官:OK,最后一個問題恩袱。一個直角三角形泣棋,底邊是10,向底邊所做的高是 6畔塔,求這個三角形的面積潭辈。
我的朋友開始思考了,“為什么一個軟件公司會問一個幾何問題呢澈吨,而且還是這么沒價值的一道題把敢!難道這是一個陷阱題!谅辣?也可能這不是陷阱題技竟,但是他想讓我這樣認為然后我就會在這么簡單的一道題目上搞砸!屈藐?”
他(我朋友)考慮了一會兒然后回答道:
朋友:先生,因為任意一個三角形的面積都是 0.5 × 底× 高熙尉,所以這道題的答案是0.5106也就是30联逻!
面試官:你確定?再想一想检痰!
我朋友又想了一會兒然后非常自信地回復
朋友:是的先生包归,我非常確定這個三角形的面積是30。你只是在擾亂我的思想铅歼,讓我改變主意公壤,這樣我就會在這個簡單的問題上出錯。
(這就是我那個朋友對面試官說的原話W狄)
面試官:好吧厦幅,你的回答是錯的,這是此次面試的最后一題慨飘,你可以在外面等一下确憨,我們稍后會公布結果译荞。
朋友:先生,能不能請您告訴我正確答案是什么休弃?
面試官:正確答案是吞歼,這樣的三角形不存在。你好好考慮一下就會知道為什么了塔猾!
我朋友傻眼了篙骡,他離開了房間,還在想為什么這個三角形不存在丈甸。
最終結果:他落選了糯俗!
———————————————————————————————-
以下是這道題目的解答:事實證明,上述直角三角形斜邊上的高的最大長度只能是5老虫,而不可能是6叶骨,所以它最大面積是25。
斜邊的對角必須是直角祈匙,也就是90度忽刽。這意味著兩個直角邊構成的角所對的圓心角一定是180度。斜邊一定是這個圓的直徑夺欲,另一個頂點可以是圓上的任意一個點(除了斜邊的兩個頂點)跪帝。
第三個點到斜邊的垂直距離就是斜邊上的高。當?shù)谌齻€點在圓的最上方或最下方的時候該垂直距離最大些阅,并且長度等于圓的半徑(斜邊長度的一半伞剑,斜邊是圓的直徑)。
因此市埋,一個底邊是10 的直角三角形黎泣,底邊上的高最大只能是5。
我要說這真是最難回答的問題之一缤谎。因為困難的部分非常好地偽裝在一個非常簡單的問題之下抒倚。一個像微軟這樣的軟件巨頭問一個幾何問題看起來非常奇怪,但其實這一點都不奇怪坷澡。這個問題真正的動機就是考察候選人是否有非常強的分析能力托呕,以及能否保持冷靜的頭腦,在編程領域频敛,這兩點都是非常重要的项郊。
在看到這么多的困惑以后,我必須說清楚斟赚,給出的斜邊上的高是6着降。
更新1:在脫離了原有的框架做了一些思考以后,Job Bouwman 指出這樣一個三角形可能是存在的拗军,但是(根據(jù)他的說法)你可能要承擔的風險就是你會被認為是一個自以為是的家伙…
更新2:我剛剛在一個問題上遭遇了困難鹊碍,這個問題很可能也是微軟面試(不太確定)中的一道題厌殉,而且我想我和大家分享一下會比較好。以下是問題鏈接:
My Tech Interviews
我本想在這里解釋一下答案侈咕,但是鏈接中提供的答案更好公罕,所以我還是直接留下鏈接吧。
Job Bouwman, All my interviews are Job interviews
來解一下微軟的陷阱題
面試官:OK耀销,最后一個問題楼眷。一個直角三角形,底邊是10熊尉,向底邊所做的高是6罐柳,求這個三角形的面積。
于是這個候選人把底和高乘在一起狰住,然后把結果除以2:
面積=10*6/2=30:
出乎他意料的是张吉,面試官表示這樣的直角三角形不存在。當一個直角三角形底邊是10 的時候催植,高永遠都不能是6肮蛹!
視覺上的證明
在Prashant的quora回答中,他在視覺上是像下圖中這樣展示的:
認為底邊AC(=10)是圓的直徑创南,如果∠B=90°伦忠,那么丁點必須在圓上稿辙,所以的邊上的垂線不能超過5(直徑的一半)。
這個例子就結束了赋咽,對嗎脓匿?有那么一瞬間,我想了一下這個三角形…
…就在我想到如果底邊上高不是6之前袱瓮,我想的是(高是)4.8尺借。那么沒錯精拟,Prashant的視覺證明是非常可靠的:增加B到AC的距離就會將這張紙撕成兩半:
(當然了笋鄙,除非它是畫在有彈性的材料上)
…但是等一下!
讓我們走出“歐幾里得”的框架的束縛怪瓶,把這個三角形畫在一個半徑是20/π 的正球形的氣球上:
這是三角形嗎找岖?
我們都知道三角形有三個頂點许布,且每一對頂點都用直線連接绎晃,也就是這些點與點之間的最短距離箕昭。
但是你的老師從沒有教過你的是落竹,他指的永遠都是歐幾里得三角形,也就是 2D 平面上的三角形朱转。
但是如果改變一下藤为,在一個球形的黑板上教幾何呢缅疟?
球面三角形
讓我們從以下這個例子開始:設想三個城市之間的航線存淫,這三個城市分布在不同的大陸上桅咆。出于經(jīng)濟的原因岩饼,會有大致的最短路線。而且由于“最短路線”就是“直線”的代名詞版述,我們會把這三點用三條直線連接起來院水,也就是形成一個三角形:
是直線嗎檬某?
但是這三條曲線怎么能被叫做直線呢恢恼?當然场斑,它們在3D空間中可能是直的牵署,但是奴迅,它們相對于地球表面是直的取具,而地球表面是2D空間。這些最短路徑只是在我們看來是彎曲的产阱,因為我們的眼睛有看到3D的捷徑块仆。
為了說明這一點悔据,讓我們回到氣球的問題蜜暑,設想一只螞蟻在氣球的2D表面上爬行肛捍,一只蚊子在內(nèi)部的3D空間中飛行。假設它們都是從A運動到C:
現(xiàn)在,這兩位老兄都有它們自己的“最短路徑”了峭跳,所以在他們生活的空間中蛀醉,它們都是在“最短路線”上運動的拯刁!
差不多了:再看一下題目要求
當A和B在赤道上逝段,C在北極點的時候奶躯,∠B 是 90°嘹黔,因為AC是子午線参淹,與赤道垂直相交浙值,因此△ABC 是一個直角三角形开呐,而且∠A=90°筐付。
現(xiàn)在,讓AC作為長度為10的斜邊瓦戚,在△ABC中,距離AC最遠的店是B(最上方),由B向斜邊做的垂線是6姥敛,因為由B到AC的最短路徑很明顯彤敛,就是AB墨榄。
最后一步:計算面積
為了計算三角形的面積,記赤道長度為40播揪,三角形的底邊僅占赤道的6/40.因此三角形的面積覆蓋了上半球面積的6/40筒狠,也就是占了全部球面的3/40.
由:
球的面積 = 4πr^2 = 4π(20/π)2 =1600/π
可以得到:
球的面積 = 3/40×1600/π = 120/π
得到結果簡直是小菜一碟辩恼!
注意:警告:不要在你的第一次面試當中自作聰明疆前!
拓展閱讀:
Wikipedia Non-Euclidean geometry頁面
S.M. Coxeter 教授的經(jīng)典教材Non-Euclidean Geometry, H. S. M. Coxeter
附加:不止一個直角竹椒?
我看到了很多問題胸完,包括球面三角形有兩個直角。你們都是對的锨能,在平面幾何中這種情況是不可能出現(xiàn)的叔收,但是在球面幾何中,我們甚至可以有三個直角的三角形。
如果你想親眼所見乒省,去把一個橙子用三次垂直切法切成八塊袖扛。每一塊橙子皮都是一個球面三角形,而且有三個直角:
Abhimanyu Sood, Interviews are fun
這件事發(fā)生在我的一個朋友的技術崗位面試當中。
I 代表面試官砸讳,C 代表候選人
I****:有一個直徑****1km****的環(huán)形跑道宿亡。兩輛車****A****和****B ****分別停在直徑的兩端挽荠,并且都面向順時針方向坤按。在****t=0****的時候酗钞,兩輛車同時開始以恒定加速度****0.1m/s/s****行駛(初始速度是****0****)窘奏。由于兩輛車是以相同速度、加速度和順時針方向行駛,它們在行駛過程中會永遠保持在直徑的兩端少孝。
在跑道的中間有一只蟲子柴底。當****t=0****時盖淡,這只蟲子開始飛向****A****車。當它到達****A****車時,它會轉向并向****B****車飛去。當它到達****B****時城榛,它會再一次轉向喘垂,向****A****車飛去,并一只循環(huán)這個過程正勒。整個過程中蟲子的速度是****1m/s****得院。
一個小時后,三個物體(****A****車章贞、****B****車祥绞、蟲子)都停止運動。問:蟲子飛行的總距離是多少鸭限?
你作為一個讀者蜕径,會怎樣解決這個問題?
首先里覆,這里給了你一張圖來讓你看清楚初始狀態(tài)。
現(xiàn)在缆瓣,讓我們試著想象一下這只蟲子的路徑喧枷。這個問題說得是它永遠都會朝著一輛車移動。但是這兩輛車本身也在移動弓坞。所以隧甚,蟲子的路徑不會是直的。它會是一個復雜的螺旋狀的路徑渡冻。而且戚扳,汽車不是勻速運動,它們在加速族吻,這會進一步使路徑復雜化帽借。
因此,方案非常清晰超歌,我們需要找到能夠對應蟲子在一次循環(huán)中的路徑的數(shù)學方程砍艾。然后我們可以簡單地從方程和一點點的積分運算中計算出距離,然后把結果乘以循環(huán)的次數(shù)巍举。
但是怎樣去計算這個復雜的螺旋路徑的方程呢脆荷?
到了這里我朋友就放棄了。
面試官鼓勵他至少講一下他的方案懊悯。我朋友解釋了以上方案蜓谋。
這時,面試官說——“你準備好聽一聽我的解決方案了嗎炭分?”
我朋友更想聽了桃焕。
面試官說****——“****蟲子全程以****1m/s****的速度飛行,并以這個恒定速度飛了一個小時捧毛,所以距離****=****速度*********時間****=1m/s3600s=3.6km”****覆旭。*
我的想法:
我認為這個問題(以及它的解決方案)展示了生活本身的一個非常深刻的描述退子。大多數(shù)時候,我們面對一些看起來毫無希望的復雜情況型将,看上去好像沒有什么辦法去解決它寂祥。
但是一旦你突破了它的局限——忽略那些不重要的,與最終解決辦法無關只會讓問題更加復雜的那些部分七兜,你就會觸及問題的核心丸凭。這個核心往往是美好的,帶有著由于它的純粹和簡介而衍生出來的優(yōu)雅腕铸。
有些人希望知道進一步的解釋惜犀。
就是這個問題提供了很多關于這三個物體的復雜的相關聯(lián)的運動的細節(jié)。但是那些信息全部都是與計算最終結果無關的狠裹。問題當中唯一重要的陳述就是****“****蟲子全程速度是****1m/s”****虽界。這就是核心。一旦你認清它的速度是恒定的涛菠,蟲子的實際路徑就變得無關緊要了莉御。無論哪個路徑有多復雜,總距離都可以由****“****距離****=****速度*********時間****”****這個簡單的公式算出來俗冻。
這就是真正的難點礁叔。能夠識破外層的限定并抵達核心。這種能力就是面試官所尋找的.
本文轉載自微信公眾號伯樂在線