微软面试试题选
By 阿新(Seraph Chutium)-- http://com.6to23.com/
==================================================================================================================
这些都是去年看了《程序员》杂志后,从以前的试题中找来出给当时的同学们做的。
现在传上来,看看大家会不会做。目前所有试题都已经做出正确解答,稍后会公布出来。
------------------------------------------------------------------------------------------------------------------
说明:题号前面的*表示编者认为的试题难度,最高为***(是我没做出来~);没有*的表示极简单。
以下各题均无正确解答,答案都是编者自己想的(最后一题至今未做出),
题后所注正常解题时间均以本人解题时间为参考,
如:30s ~ 2min 意为:本人解题时间在30秒到2分钟之间。
本人并不认为自己能力超长(或超弱),故定为正常解题时间。
==================================================================================================================
一.阶梯测试(最后一题难度较大*很大,前两题难度相应递减)
①走到一条岔路上,前面遇到两个人,一个人永远说真话,一个人永远说假话,你并不知道谁说真话谁说假话,只许问其中一个人一句话,就知道该往那里走了。
(正常解题时间:30s ~ 2min)
②三个带着自己的一个孩子过河,只有一条船,每次只能载两个单位,当大人不在身边的时候,如果小孩身边有别的大人,那他(她)就有危险,
问:如何能在没有危险的情况下顺利过去。
注意:船回来的时候至少得有一个单位在上面。
(正常解题时间:1min ~ 5min)
**③12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?
(正常解题时间:20min ~ 60min ,本人将近40分钟做出正确解答)
==================================================================================================================
二.微软面试题分类精选(部分试题参考《程序员》杂志试刊一。均为本人自己解答,答案稍后公布)
------------------------------------------------------------------------------------------------------------------
Ⅰ. 微软试题—基础理论运用能力
①一火车,以15km/h从L.A.开往N.Y.,另一以20km/h从N.Y.开往L.A.;
一只鸟从Los以30km/h与两车同时出发,遇到另一火车后返回,并往复至两车相遇,求其运动位移及路程。
(正常解题时间:5min ~ 10min)
------------------------------------------------------------------------------------------------------------------
Ⅱ. 微软试题—逻辑思维能力
②有足量红黄蓝小球放在同一容器中,现需取2个颜色相同的,最少要取几个。
(正常解题时间:1s ~ 10s)
③足量水,3ml,5ml容器各一,如何测4ml水。
(正常解题时间:20s~40s)
------------------------------------------------------------------------------------------------------------------
Ⅲ. 微软试题—知识迁移能力
*④足量水,3ml,5ml容器各一,如何通过它们确定出所有正常数体积的水。(不能用 1 ml 来拼凑)
(此题是我自编的一道难度较上题稍有提高的联系实际题,想想日常生活中哪些是可以确定所有正常数量的。正常解题时间:20s ~ +∞)
------------------------------------------------------------------------------------------------------------------
Ⅳ. 微软试题—实际生活综合能力
*⑤4个装了药丸的容器,正常药丸质量一定;其中一容器中全装的变质药丸,其质量为正常药丸质量+1。只称一次,如何判断那一容器中药丸变质。
(正常解题时间:10s ~ +∞)
***⑥工人为你工作7天,回报为一根金条(既然说是金条,应该就不能将其弯曲吧?),
必须在每天付给他们一段,且只能截2次,你将如何付费?
(本人目前未得到正解,解题时间暂定为 +∞)
======================================================================================================
提示:一.①,② 略;③:太多了,有兴趣以后给……
二.① 略;② 4次;③ 略;
④ 有了第三题,这题应该不难,只要你知道,半分钟的事,如果你不知道,那就永远也做不出来了。
想想人民币面额的设置。
⑤ 如果你想到正路了……10秒就够,如果没有,永远不可能算出来。
从4个容器取不同数量的药丸,分为两组进行秤量入手。
如:在1,2,3,4号容器中分别取1,2,3,4个药丸。把这10个药丸放在一起,秤量;通过它们
重量与标准值的差进行判断(简单一例:假设称得总质量是 10倍标准值+2,则2号为变质药丸)
⑥ 如果金条可以弯折,那自然很好做……可是~~~希望有会做的能够告诉我,虚心等待赐教。
==================================================================================================================
付费问题解答(本题由张晔同学解答)
将金条分在1/7和3/7初分为1/7、2/7、4/7三段,第一天付给1/7,第二天拿回并付给2/7,依此类推。
------------------------------------------------------------------------------------------------------------------
过河问题解答
大人,孩子分别为:A a; B b; C c;
1: A & a 过去,a留,A返
2: b & c 过去,b留,c返
3: A & B 过去,B,b留,A,a返
4: A & C 过去,A,C留,b返
5: A & a 过去,a留,A返
6: a & b 过去,a留,b返
7: a & c 过去,此时已经全部到达对岸上述答案是我做出的,标准答案定不唯一,如哪位有更简方案望赐教。
------------------------------------------------------------------------------------------------------------------
称球问题解答及总结
分别为a b c d, e f g h, i j k l,取出abcd, efgh
第一种情形:
如果重量相等,则说明所求在 ijkl 中,
称量 i j ,
如果相等,比较 a k ,如果a=k,则所求为 l ;如果ak不等,则所求为 k 。
如果不等,比较 a i ,如果a=i,则所求为 j ;如果不等,则所求为 i 。
第二种:
如果 abcd 轻,
在efgh中取出 fgh ,替掉abcd中 bcd,从ijkl中取出 ijk 个放入 e 中填补空位:
如果afgh轻:则说明所求在a或e,拿 e 和除 a 以外的任意一球比较,如果重量相等,则所求的球是 a ;如果不等,则所求的球是 e 。
如果afgh重:说明所求在 fgh 中,且所求较重;比较 f g ,等重则所求为 h ;不等则重的为所求。
如果一样重:说明所求在 bcd 中,且所求较轻;以下同afgh重的情形。
第三种:
如果 abcd 重,
在efgh中取出 fgh ,替掉abcd中 bcd,从ijkl中取出 ijk 个放入 e 中填补空位:
如果 afgh 重:则说明所求在a或e,拿 e 和除 a 以外的任意一球比较,如果重量相等,则所求的球是 a ;如果不等,则所求的球是 e 。
如果afgh轻:说明所求在 fgh 中,且所求较轻;比较 f g ,等重则所求为 h ;不等则重的为所求。
如果一样重:说明所求在 bcd 中,且所求较重;以下同afgh轻的情形。
此题答案就是这样。下面与大家进而探讨称任意球数的通用性。
总结:
天平称重,有两个托盘比较轻重,加上托盘外面,也就是每次称重有3个结果,就是ln3/ln2比特信息。n个球要知道其中一个不同的球,如果知道那个不同重量的球是轻还是重,找出来的话那就是n个结果中的一种,就是有ln(n)/ln2比特信息,如果不知道轻重,找出来就是2n(n个球中的一个,轻或者重,所以是2n)个结果中的一种,那就是ln(2n)/ln2比特信息。
假设我们要称k次,根据信息理论,那显然两种情况就分别有:
(1)k*ln3/ln2>=ln(n)/ln2(k>=1)解得k>=ln(n)/ln3
(2)k*ln3/ln2>=ln(2n)/ln2(k>1)解得k>=ln(2n)/ln3
这是得到下限,可以很轻易证明满足条件的最小正整数k就是所求。比如称3次知道轻重可以从3^3=27个球中找出不同的球出来,如果不知道轻重就只能从(3^3-1)/2=13个球中找出不同的球出来。
------------------------------------------------------------------------------------------------------------------
==================================================================================================================
邱腾·阿新(Seraph Chutium) 编译 – http://com.6to23.com/