稀奇古怪面试题三则

来自:是不是很酷,作者:liuyubobobo

在这一周,我的专栏更新的文章《从费米估算,到黑暗森林》中,我仔细向大家介绍了一类特殊的面试问题 —— 估算问题的思考思路。如


那么在这一周的公众号推文中,我就再给大家分享3道“非典型”的面试问题:)



1.


先来一个不是太怪的问题,相信很多人都听过。


在一天的时间里,钟表的时针和分针会重合多少次?




解析:


答案是22次。


这个问题可以使用编程的方式,具体地求出这22个时针和分针重合的时间都在几点几分。不过,其实只需要稍微想一想,就能想出这个答案:)


大家可以思考一下,在午夜零点的时候,是一天里第一次时针和分针发生重合的时候。下一次在什么时候呢?因为第一分钟,分针就会直接越过时针,所以,在0:00-1:00之间,不可能再发生时针和分针重合的时候了。


下一次时针和分针发生重合的时候,一定是在1点多。具体多少我们可以不求了,但我们知道,1点多一定有一次时针和分针重合的时候。


那么再下一次呢?相信聪明的同学们很快就能想明白,在两点多的位置。


再下一次呢?是三点多。


依此类推。


大家可以思考一下,在时针走回12点之前,最后一次时针和分针重合的时候是什么时候?答案是在十点多,而不是11点多。11:00-11:59这段时间里,时针和分针不会再重合了。分针走过11:00-11:59这一圈的过程中,时针总会比分针更接近12点的位置,直到最后一分钟,时针和分针再次同时指向12点。


因此,在0:00-11:59这12个小时里,时针和分针一共重合了11次。这11次分别是零点;1点多;2点多;3点多;4点多;5点多;6点多;7点多;8点多;9点多;10点多。


那么在一天的时间里,一共24个小时,也就是时针要绕表盘转两圈,所以,一共重合了22次:)


有兴趣的同学可以尝试一下,具体用编程的方式(甚至用数学的方式?)求解一下这22次分别是什么时间:)




2.


你想要检验你的好朋友,同时也是计算机大牛的bobo老师是否知道你的正确的手机号码。


但是,小慕同学不让你接近bobo老师,只给你一张卡片,让你写一个问题给bobo老师。小慕会将这张卡片传给bobo老师,然后再将bobo老师的回答用这个卡片传回来。这一问一答的过程,你就需要判断出:bobo老师是否知道你的正确的电话号码。


但是,你并不希望小慕同学知道你的电话号码。可是,小慕同学一定会偷看你和bobo老师写在卡片上的内容的。


请问,你要怎么写这张卡片?




解析:


最中规中矩的方法,是使用校验算法(或者摘要算法,哈希算法,不可逆的加密算法,但不管怎样,核心是做校验。)你可以在卡片上写上任意校验算法名称,根据正确的手机号码得到的校验码,以及其他必须的校验信息(如果有的话)。由于bobo老师是计算机大牛,所以可以假设bobo老师可以看懂你写的任何校验算法,然后将他知道的手机号码相应地转换成校验码,和你提供的校验码作比较,之后回答校验成功或者失败就好了。


整个过程,小慕只能看到校验算法相关的信息和校验码,是不能反推出原始信息的。


但是,对于这个问题,其实可以直接在卡片上要求bobo老师根据他所知道的号码给你打一个电话,就能知道bobo老师手上的电话号码是否正确啦!


是不是发现,有些时候,跳出程序员思维,事情会更简单:




3.


设计一个疏散旧金山市民的方案


(如果对旧金山不熟悉,可以把问题改变成:设计一个疏散北京城市民的方案,或者疏散你所在的城市市民的方案。




解析:


面对这个问题,面试官希望听到你反问:具体是因为什么灾难,要疏散城市的市民?因为具体原因不同,灾难的情况不同,就可能对疏散计划有细节上,甚至是整体上的影响。在问清楚具体情况之前,任何设计方案都一定是不对的。


实际上,这种把问题搞清楚的能力,是职场的基本素质。很多时候,人和人的差距并不在具体的技术水平上,而是在这类“软”技能上。沟通是否有效?任务是否明确?目标是否清晰?很多时候,都将直接直接影响你的工作效率。之前,我写过一篇文章,如何把技术做深?可能,这是一个错误的问题,说的也是这个问题:)






最后,我必须要说:这些面试问题都是“非典型的”,这意味着其实你去外面找工作,遇到这样的问题,概率是很低的。在这里和大家分享,好玩为主。对于面试,关键还是要基础扎实。所以,大家在准备面试的时候,切不要把精力放在这些偏题怪题上,踏踏实实学好基础,真的是最快的捷径。


大家加油!:)

推荐↓↓↓
程序员求职面试
上一篇:校招经验分享-高考结束!校招还会远么~~ 下一篇:谈谈最近的面试经历