最难面试题,你遇到过什么样的?

【伯乐在线导读】:本文介绍了几道面试中遇到的难题,如果你遇到了这种难题,你会怎么回答呢?


Prashant Bagdia, Final year CS undergrad, NIT Warangal

下面这个问题,是我一个朋友在微软校招面试时被问到的。

面试官:OK,最后一个问题。一个直角三角形,底边是10,向底边所做的高是 6,求这个三角形的面积。

我的朋友开始思考了,“为什么一个软件公司会问一个几何问题呢,而且还是这么没价值的一道题!难道这是一个陷阱题!?也可能这不是陷阱题,但是他想让我这样认为然后我就会在这么简单的一道题目上搞砸!?”

他(我朋友)考虑了一会儿然后回答道:

朋友:先生,因为任意一个三角形的面积都是 0.5 × 底× 高,所以这道题的答案是0.5*10*6也就是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/π

得到结果简直是小菜一碟!

注意:警告:不要在你的第一次面试当中自作聪明!

拓展阅读:

附加:不止一个直角?

我看到了很多问题,包括球面三角形有两个直角。你们都是对的,在平面几何中这种情况是不可能出现的,但是在球面几何中,我们甚至可以有三个直角的三角形。

如果你想亲眼所见,去把一个橙子用三次垂直切法切成八块。每一块橙子皮都是一个球面三角形,而且有三个直角:

 

Abhimanyu Sood, Interviews are fun

这件事发生在我的一个朋友的技术岗位面试当中。

  • I 代表面试官,C 代表候选人

I:有一个直径1km的环形跑道。两辆车AB 分别停在直径的两端,并且都面向顺时针方向。在t=0的时候,两辆车同时开始以恒定加速度0.1m/s/s行驶(初始速度是0)。由于两辆车是以相同速度、加速度和顺时针方向行驶,它们在行驶过程中会永远保持在直径的两端。

在跑道的中间有一只虫子。当t=0时,这只虫子开始飞向A车。当它到达A车时,它会转向并向B车飞去。当它到达B时,它会再一次转向,向A车飞去,并一只循环这个过程。整个过程中虫子的速度是1m/s

一个小时后,三个物体(A车、B车、虫子)都停止运动。问:虫子飞行的总距离是多少?

你作为一个读者,会怎样解决这个问题?

首先,这里给了你一张图来让你看清楚初始状态。

现在,让我们试着想象一下这只虫子的路径。这个问题说得是它永远都会朝着一辆车移动。但是这两辆车本身也在移动。所以,虫子的路径不会是直的。它会是一个复杂的螺旋状的路径。而且,汽车不是匀速运动,它们在加速,这会进一步使路径复杂化。

因此,方案非常清晰,我们需要找到能够对应虫子在一次循环中的路径的数学方程。然后我们可以简单地从方程和一点点的积分运算中计算出距离,然后把结果乘以循环的次数。

但是怎样去计算这个复杂的螺旋路径的方程呢?

到了这里我朋友就放弃了。

面试官鼓励他至少讲一下他的方案。我朋友解释了以上方案。

这时,面试官说——“你准备好听一听我的解决方案了吗?”

我朋友更想听了。

面试官说——“虫子全程以1m/s的速度飞行,并以这个恒定速度飞了一个小时,所以距离=速度*时间=1m/s*3600s=3.6km”

我的想法:

我认为这个问题(以及它的解决方案)展示了生活本身的一个非常深刻的描述。大多数时候,我们面对一些看起来毫无希望的复杂情况,看上去好像没有什么办法去解决它。

但是一旦你突破了它的局限——忽略那些不重要的,与最终解决办法无关只会让问题更加复杂的那些部分,你就会触及问题的核心。这个核心往往是美好的,带有着由于它的纯粹和简介而衍生出来的优雅。

有些人希望知道进一步的解释。

就是这个问题提供了很多关于这三个物体的复杂的相关联的运动的细节。但是那些信息全部都是与计算最终结果无关的。问题当中唯一重要的陈述就是虫子全程速度是1m/s”。这就是核心。一旦你认清它的速度是恒定的,虫子的实际路径就变得无关紧要了。无论哪个路径有多复杂,总距离都可以由距离=速度*时间这个简单的公式算出来。

这就是真正的难点。能够识破外层的限定并抵达核心。这种能力就是面试官所寻找的。

附加:

我会定期写一些面试相关的回答。你可以参考这个链接——https://www.quora.com/profile/Ab…

打赏支持我翻译更多好文章,谢谢!

打赏译者

打赏支持我翻译更多好文章,谢谢!

3 12 收藏 9 评论

关于作者:刘唱

热爱前端的数据汪~ 个人主页 · 我的文章 · 17 ·      

相关文章

可能感兴趣的话题



直接登录
最新评论
  • Hobit sorry,coder 10/21

    interesting

  • 埃辛   10/21

    涨姿势了

  • 匹诺曹 C#,web 10/21

    问这种题,你说图个什么劲

     

  • ★小V★ 程序員 10/21

    hypotenuse的意思是直角三角形最長的邊,也就是斜邊..難怪第一題我總覺得題目與圖案不符...

  • re   10/22

    三角形的那道题目,面试官说不存在的时候,首先想到的就是非欧几何,以前跟朋友讨论过三个角都是直角的三角形。

  • 斜边不一定是底边,斜边上高是6的直角三角形不存在,只有两直角边一个作底一个作高。一个小时后,车子速度360m/s,离心力是车子重量的26倍之多,早飞了,这样的情况不存在。

  • 想象成圆,就能知道是半径5,但是面试的时候,这种情况面试者关注的点就不是这个了,都假想出的题是正确的

跳到底部
返回顶部