几道程序员面试题

349次阅读  |  发布于3年以前

最近一个 iOS 开发的朋友找工作,在群里面分享了几道面试题,恰好有几道我很早以前做过,是知乎和雅虎的面试题,所以分享给大家。

面试题这种有点类似于应试教育,你做得多了就有感觉了,所以积累还比较重要。

第一题

A、B、C、D四个人分别带着一顶帽子。共两顶黑帽子,两顶白帽子。其中D和A、B、C三个隔了一堵不透明的墙。A可以看到B、C帽子的颜色。B可以看到C帽子的颜色。只要能判断自己的帽子颜色,就可以立刻说出来。他们四人沉默了几分钟,这时候一个人说到,他知道自己帽子的颜色是什么了,请问这个人是谁?

第二题

老王卖鞋,一双进价30元,老王赔本卖,只卖20元。有个骗子来买,给老王50元假钞。老王未能识别,又没有零钱,把这假钞拿到隔壁铺子的老李换了50元零钱,回来找了骗子30。隔壁很快发现问题,拿假钞来换,老王只好把自己的家底真钞50元换给隔壁。问老王损失了多少钱?

第三题(知乎面试题)

25匹马,5条跑道。要选出最快的前三名,最少要跑几次?

第四题(雅虎面试题)

有23枚硬币在桌上,10枚正面朝上。蒙住你的眼睛(你无法分清正反),如何分成两组,让两组硬币正面朝上的一样多?

第五题

有三个杯子,容量各是10升、7升、3升。把10升的装满水。问:不用别的测量,怎样能将 10 升水分成两个 5 升。

-- 分隔线,思考好了可以往下翻对答案 --

-- 分隔线,思考好了可以往下翻对答案 --

第一题答案

题目:

A、B、C、D四个人分别带着一顶帽子。共两顶黑帽子,两顶白帽子。其中D和A、B、C三个隔了一堵不透明的墙。A可以看到B、C帽子的颜色。B可以看到C帽子的颜色。只要能判断自己的帽子颜色,就可以立刻说出来。他们四人沉默了几分钟,这时候一个人说到,他知道自己帽子的颜色是什么了,请问这个人是谁?

答案:B。

解释:因为场上一共只有 2 黑 2 白。所以:

因为场上只有 A 能够看到 2 个人的帽子,而他没有说话,说明他看到的是一黑一白的帽子。

因为 A 没有说话,所以 B 和 C 知道了他们俩是一黑一白的帽子。

又因为 B 能看到 C 的帽子颜色,所以 B 就可以知道自己的颜色刚好就是与 C 相反的颜色。

第二题答案

题目:

老王卖鞋,一双进价30元,老王赔本卖,只卖20元。有个骗子来买,给老王50元假钞。老王未能识别,又没有零钱,把这假钞拿到隔壁铺子的老李换了50元零钱,回来找了骗子30。隔壁很快发现问题,拿假钞来换,老王只好把自己的家底真钞50元换给隔壁。问老王损失了多少钱?

答案:60 元。

解释:这道题容易把人绕晕,我想了一个办法理清楚,就是把老王收到的和拿出去的钱财分开单列,最后收到的和付出的相抵,就是正确答案。

那么老王收到的东西有:

老王付出的东西有:

所以最终老王亏了 30 + 30 + 50 - 50 = 60 元。

第三题答案

题目:25匹马,5条跑道。要选出最快的前三名,最少要跑几次?

答案:7 次。

解释:先把 25 匹马分成 5 组,我们把这 5 组叫做 A、B、C、D、E 组。这 5 组先各进行一次比赛。这样已经有 5 个小组第一了。

然后 5 个小组第一再比一次,这样就找出了第一名,我们把第一名所在的组叫 A 组,第二名所在的组叫 B 组,第三名所在组叫 C 组。

剩下我们需要判断 A2, A3, B1, B2, C1 这几个到底谁更快。这样就可以找出最快的三匹马。

之所以这样比,是因为前三名有可能有以下四种情况:

比较 A2, A3, B1, B2, C1 就可以把以上情况都考虑到。

衍生问题:如果我们要找出前五名,最少要比几次?

第四题答案

题目:有23枚硬币在桌上,10枚正面朝上。蒙住你的眼睛(你无法分清正反),如何分成两组,让两组硬币正面朝上的一样多?

答案:把硬币分成两组,一组 10 个,另一组 13 个。然后把 10 个的那组翻面即可。

解释:因为我们是随机分成两组,所以 10 个那组( 我们叫 A 组),我们假设有 X 个硬币朝上。那么就有 10 - X 个硬币朝下。

另一组(我们叫 B 组),因为 23 个硬币一共只有 10 枚朝上,所以那组有 10 - X 个朝上,剩下的朝下。

我们将 A 组全部翻面,所以朝上朝下个数交换:朝上的变成 10 - X 个,朝下的变成 X 个。

所以 A 组有 10 - X 个朝上,与 B 组朝上的个数相同。

第五题答案

题目:有三个杯子,容量各是10升、7升、3升。把10升的装满水。问:不用别的测量,怎样能将 10 升水分成两个 5 升。

答案:

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8