最難面試題,你遇到過什么樣的?

Prashant Bagdia, Final year CS undergrad, NIT Warangal

下面這個問題,是我一個朋友在微軟校招面試時被問到的。

面試官:OK,最后一個問題。一個直角三角形,底邊是10,向底邊所做的高是 6,求這個三角形的面積。

我的朋友開始思考了,“為什么一個軟件公司會問一個幾何問題呢,而且還是這么沒價值的一道題!難道這是一個陷阱題!?也可能這不是陷阱題,但是他想讓我這樣認為然后我就會在這么簡單的一道題目上搞砸!?”

他(我朋友)考慮了一會兒然后回答道:

朋友:先生,因為任意一個三角形的面積都是 0.5 × 底× 高,所以這道題的答案是0.5106也就是30!

面試官:你確定?再想一想!

我朋友又想了一會兒然后非常自信地回復

朋友:是的先生,我非常確定這個三角形的面積是30。你只是在擾亂我的思想,讓我改變主意,這樣我就會在這個簡單的問題上出錯。

(這就是我那個朋友對面試官說的原話!)

面試官:好吧,你的回答是錯的,這是此次面試的最后一題,你可以在外面等一下,我們稍后會公布結果。

朋友:先生,能不能請您告訴我正確答案是什么?

面試官:正確答案是,這樣的三角形不存在。你好好考慮一下就會知道為什么了!

我朋友傻眼了,他離開了房間,還在想為什么這個三角形不存在。

最終結果:他落選了!

———————————————————————————————-

以下是這道題目的解答:事實證明,上述直角三角形斜邊上的高的最大長度只能是5,而不可能是6,所以它最大面積是25。

斜邊的對角必須是直角,也就是90度。這意味著兩個直角邊構成的角所對的圓心角一定是180度。斜邊一定是這個圓的直徑,另一個頂點可以是圓上的任意一個點(除了斜邊的兩個頂點)。

第三個點到斜邊的垂直距離就是斜邊上的高。當第三個點在圓的最上方或最下方的時候該垂直距離最大,并且長度等于圓的半徑(斜邊長度的一半,斜邊是圓的直徑)。


因此,一個底邊是10 的直角三角形,底邊上的高最大只能是5。
我要說這真是最難回答的問題之一。因為困難的部分非常好地偽裝在一個非常簡單的問題之下。一個像微軟這樣的軟件巨頭問一個幾何問題看起來非常奇怪,但其實這一點都不奇怪。這個問題真正的動機就是考察候選人是否有非常強的分析能力,以及能否保持冷靜的頭腦,在編程領域,這兩點都是非常重要的。
在看到這么多的困惑以后,我必須說清楚,給出的斜邊上的高是6。
更新1:在脫離了原有的框架做了一些思考以后,Job Bouwman 指出這樣一個三角形可能是存在的,但是(根據他的說法)你可能要承擔的風險就是你會被認為是一個自以為是的家伙…
更新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 平面上的三角形。



但是如果改變一下,在一個球形的黑板上教幾何呢?
球面三角形
讓我們從以下這個例子開始:設想三個城市之間的航線,這三個城市分布在不同的大陸上。出于經濟的原因,會有大致的最短路線。而且由于“最短路線”就是“直線”的代名詞,我們會把這三點用三條直線連接起來,也就是形成一個三角形:

是直線嗎?
但是這三條曲線怎么能被叫做直線呢?當然,它們在3D空間中可能是直的,但是,它們相對于地球表面是直的,而地球表面是2D空間。這些最短路徑只是在我們看來是彎曲的,因為我們的眼睛有看到3D的捷徑。
為了說明這一點,讓我們回到氣球的問題,設想一只螞蟻在氣球的2D表面上爬行,一只蚊子在內部的3D空間中飛行。假設它們都是從A運動到C:

現在,這兩位老兄都有它們自己的“最短路徑”了,所以在他們生活的空間中,它們都是在“最短路線”上運動的!

差不多了:再看一下題目要求
當A和B在赤道上,C在北極點的時候,∠B 是 90°,因為AC是子午線,與赤道垂直相交,因此△ABC 是一個直角三角形,而且∠A=90°。
現在,讓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 教授的經典教材Non-Euclidean Geometry, H. S. M. Coxeter

附加:不止一個直角?
我看到了很多問題,包括球面三角形有兩個直角。你們都是對的,在平面幾何中這種情況是不可能出現的,但是在球面幾何中,我們甚至可以有三個直角的三角形。
如果你想親眼所見,去把一個橙子用三次垂直切法切成八塊。每一塊橙子皮都是一個球面三角形,而且有三個直角:


Abhimanyu Sood, Interviews are fun
這件事發生在我的一個朋友的技術崗位面試當中。
I 代表面試官,C 代表候選人

I****:有一個直徑****1km****的環形跑道。兩輛車****A****和****B ****分別停在直徑的兩端,并且都面向順時針方向。在****t=0****的時候,兩輛車同時開始以恒定加速度****0.1m/s/s****行駛(初始速度是****0****)。由于兩輛車是以相同速度、加速度和順時針方向行駛,它們在行駛過程中會永遠保持在直徑的兩端。
在跑道的中間有一只蟲子。當****t=0****時,這只蟲子開始飛向****A****車。當它到達****A****車時,它會轉向并向****B****車飛去。當它到達****B****時,它會再一次轉向,向****A****車飛去,并一只循環這個過程。整個過程中蟲子的速度是****1m/s****。
一個小時后,三個物體(****A****車、****B****車、蟲子)都停止運動。問:蟲子飛行的總距離是多少?
你作為一個讀者,會怎樣解決這個問題?
首先,這里給了你一張圖來讓你看清楚初始狀態。


現在,讓我們試著想象一下這只蟲子的路徑。這個問題說得是它永遠都會朝著一輛車移動。但是這兩輛車本身也在移動。所以,蟲子的路徑不會是直的。它會是一個復雜的螺旋狀的路徑。而且,汽車不是勻速運動,它們在加速,這會進一步使路徑復雜化。
因此,方案非常清晰,我們需要找到能夠對應蟲子在一次循環中的路徑的數學方程。然后我們可以簡單地從方程和一點點的積分運算中計算出距離,然后把結果乘以循環的次數。
但是怎樣去計算這個復雜的螺旋路徑的方程呢?
到了這里我朋友就放棄了。
面試官鼓勵他至少講一下他的方案。我朋友解釋了以上方案。
這時,面試官說——“你準備好聽一聽我的解決方案了嗎?”
我朋友更想聽了。
面試官說****——“****蟲子全程以****1m/s****的速度飛行,并以這個恒定速度飛了一個小時,所以距離****=****速度*********時間****=1m/s3600s=3.6km”****。*
我的想法:
我認為這個問題(以及它的解決方案)展示了生活本身的一個非常深刻的描述。大多數時候,我們面對一些看起來毫無希望的復雜情況,看上去好像沒有什么辦法去解決它。
但是一旦你突破了它的局限——忽略那些不重要的,與最終解決辦法無關只會讓問題更加復雜的那些部分,你就會觸及問題的核心。這個核心往往是美好的,帶有著由于它的純粹和簡介而衍生出來的優雅。

有些人希望知道進一步的解釋。
就是這個問題提供了很多關于這三個物體的復雜的相關聯的運動的細節。但是那些信息全部都是與計算最終結果無關的。問題當中唯一重要的陳述就是****“****蟲子全程速度是****1m/s”****。這就是核心。一旦你認清它的速度是恒定的,蟲子的實際路徑就變得無關緊要了。無論哪個路徑有多復雜,總距離都可以由****“****距離****=****速度*********時間****”****這個簡單的公式算出來。
這就是真正的難點。能夠識破外層的限定并抵達核心。這種能力就是面試官所尋找的.
本文轉載自微信公眾號伯樂在線

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容