稀奇古怪面试题三则

点击蓝色“五分钟学算法”关注我哟

加个“星标”,天天中午 12:15,一起学算法

640?wx_fmt=jpeg

作者 | 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.

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

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


解析:

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

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


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

大家加油!:)


640?wx_fmt=png

640?

有热门推荐?

1.【程序员】

2.【GitHub】

3.【算法】

4.【数据结构】

640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有 28 28 个按键,分别印有 26 26 个小写英文字母和 B、P 两个字母。经阿狸研究发现,这个打字机是这样工作的: 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后)。 按一下印有 B 的按键,打字机凹槽中最后一个字母会消失。 按一下印有 P 的按键,打字机会在纸上打印出凹槽中现有的所有字母并换行,但凹槽中的字母不会消失。 例如,阿狸输入 aPaPBbP,纸上被打印的字符如下: a aa ab 我们把纸上打印出来的字符串从 1 1 开始顺序编号,一直到 � n。打字机有一个非常有趣的功能,在打字机中暗藏一个带数字的小键盘,在小键盘上输入两个数 ( � , � ) (x,y)(其中 1 ≤ � , � ≤ � 1≤x,y≤n),打字机会显示第 � x 个打印的字符串在第 � y 个打印的字符串中出现了多少次。 阿狸发现了这个功能以后很兴奋,他想写个程序完成同样的功能,你能帮助他么? 输入格式 输入的第一行包含一个字符串,按阿狸的输入顺序给出所有阿狸输入的字符。 第二行包含一个整数 � m,表示询问个数。 接下来 � m 行描述所有由小键盘输入的询问。其中第 � i 行包含两个整数 � , � x,y,表示第 � i 个询问为 ( � , � ) (x,y)。 输出格式 输出 � m 行,其中第 � i 行包含一个整数,表示第 � i 个询问的答案
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值