若干经典面试题

来源:互联网 发布:放射性金属 知乎 编辑:程序博客网 时间:2024/05/01 21:53

【题1】有一幢100层高的大厦,给你两个完全相同的玻璃围棋子。假设从某一层开始,丢下玻璃棋子就会摔碎。那么怎么利用 手中的两颗棋子,用一种什么样的最优策略,知道这个临界的层高呢?

【分析】:先从14楼开始抛第一次;如果没碎,再从27楼抛第二次;如果还没碎,再从39楼抛第三次;如果还没碎,再从50 楼抛第四次;如此,每次间隔的楼层少一层。这样,任何一次抛棋子碎时,都能确保最多抛14次可以找出临界楼层。
=========================================================
【题2】有36匹马,六个跑道?没有记时器等设备,用最少的比赛次数算出跑的最快的前三名马?

【分析】:其实用排除法就可以把过程看的很清楚了,前面的步骤一样,6组分别比之后6个第一名比,这时候,假设排名为:A1、 B1、 C1、 D1、 E1、F1,此时可以断定A1为最快的马,然后排除法,看那些不可能是前三:
1、D,E,F组全部排除;
2、A组后三名全部排除(前面至少已经有A1,A2,A3);
3、B组后四名全部排除(前面至少已经有A1,B1,B2);
4、C组其实后五名都可以排除(前面至少已经有A1,B1,C1);
剩下的就只有:A2、A3、B1、B2、C1,再跑一次ok了
=========================================================
【题3】25匹马,每次比赛可选5匹马赛出次序(无法计时)。问至少要比赛多少次才能确定跑得最快,次快和第三快的三匹马。

【分析】7次。首先分为5组,每组进行一次比赛,然后每组的头一名共五匹马比赛一次。假设第一组快于第二组快于第三组依次。最后一次安排第一组的二三名和第二组的一二名和第三组的第一名。

=========================================================

【题4】A、B、C三个瓶子,A瓶子是空的,B瓶子里有1个白球1个黑球,C瓶子里有1000个白球和1280个黑球。现在蒙着眼睛从C瓶子里取两个球放到A瓶子里。分两个阶段从三个瓶子中摸球(每次摸球后放回再摸下一次),摸到白球赢55000美元,摸到黑球什么也得不到也不损失什么。问为了使两次的收益最大,应该采取什么策略?

算了一下答案应该是两次都在B里面拿。

=========================================================
【题5】
一家中学在每周的最后一天都举行一个惯例活动:学生们来到大厅里站到关闭的抽屉前。吹第一声哨的时候,学生们把每一个抽屉都打开。吹第二声哨的时候,学生们每隔一个关上一个抽屉(抽屉2,4,6,8,10,…)。吹第三声哨的时候,学生们每隔两个开/关抽屉,(开/关的意思是:如果抽屉是开着的,就把它关上;如果抽屉是关着的,就把它打开。他们开/关抽屉3,6,9,12,15…等等。响第四声哨的时候,学生们每隔三个开/关抽屉。响第五声哨的时候,学生每隔四个抽屉开/关抽屉。如此一直进行下去。如果该学校只有100个抽屉。那么当哨声响到100声的时候,站在100号抽屉旁边的学生(而且只有这个学生)开/关了自己的抽屉。请问现在有多少个抽屉是开着的?开着的抽屉的编号是多少?请阐述原因。

=========================================================

【题6】网易笔试题
1、飞机起飞时,人会感觉到有一股力压在身上,为什么?施力者是谁? 
2、飞机平稳飞行后,你在过道跳起来,会不会撞到飞机尾部? 
3、n是一个奇数,求证n(n^2-1)能被24整除 
4、两个r进制的数,N和N',它们的位数相同,数字也都相同,只是排序不一样(比如12345和25413)求证N-N'能被r-1整除。

5、为什么使用session?使用session的根本原因是?假如你使用的编程语言没有提供对session的支持,请你使用伪代码实现session机制。请说明在你实现的机制中的安全因素。假如要让你的机制实现多个web服务器前端(几多个机器),你要怎样实现?假如要让你的机制实现勿单点故障点(即一台机器当掉,不影响整个系统的运行),你要怎样实现?

【分析】1 为什么使用session?使用session的根本原因是? 
session是为了维持客户端和服务器的会话,实际上就是通过这个机制,来判断当前访问的用户,是上次的那一个?也就是身份的辨认。 
2 session的机制和实现 
session一般通过cookie或者URL里的一个参数来实现。 
第一次访问,产生一个唯一的session编号,然后发送给客户端,比如传递cookie,或者在url里面加上额外的参数 
服务器在一个Map里保存此编号对应的信息 
用户下一次访问,会再次传递这个编号,服务器在map里查找对应编号的信息是否存在,并进行后面的操作。 
3 请说明在你实现的机制中的安全因素。 
最关键的,就是sessionid 的生成算法,要足够的随机性,且长度足够长。 除非不得已,不要放在url里面传递 
4 多个机器 
这个是集群的基础,session至少要在另一个机器上保持同步,也就是这个机器的某个session的任何改变,都要在另一个机器上同时改变。 当然,如果所有机器都改变也行,不过网络流量大了一些毕竟2个机器同时出故障的几率已经很低了。 
同步的机制可以用消息的方法进行,比如JMS/UDP等。如果同步有问题,则必须尝试,除非系统只剩下最后一台机器了。 
5 故障恢复 
因为有至少一个session的备份,所以故障后应立即让备份的机器接管,并继续服务,同时让另外一个机器再次作为备份。 
系统如果有管理机,则可以实现简单的故障切换,否则只能每个session进行整个集群的备份了,这样任何一个机器接管都没有问题了。

【题7】台阶问题

问题描述:楼梯有20阶台阶,上楼可以一步上1阶、2阶或3阶三种走法,计算共有多少种不同的走法。

类似还有:楼梯有10阶台阶,上楼可以一步上1阶、2阶两种走法,计算共有多少种不同的走法。

【程序8】6个桶,装着两种液体,一种液体的价格是另外一种的double,桶容量为8,13,15,17,19,31,有一个美国人,各用了14美元买两种液体,剩下一个桶。问剩下哪个?

=========================================================================

【程序9】囚徒问题
有100个无期徒刑囚徒,被关在100个独立的小房间,互相无法通信。
每天会有一个囚徒被随机地抽出来放风,随机就是说可能被抽到多次。
放风的地方有一盏灯,囚徒可以打开或者关上,除囚徒外,没有别人会去动这个灯。每个人除非出来防风,是看不到这个灯的。
一天,全体囚徒大会,国王大赦,给大家一个机会:如果某一天,某个囚徒能够明确表示,所有的囚徒都已经被放过风了,而且的确如此,那么所有囚徒释放;如果仍有囚徒未被放过风,那么所有的囚徒一起处死!

囚徒大会后给大家20分钟时间讨论,囚徒们能找到方法么?

=========================================================================

【题10】微软面试题
(1)
一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。
请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
注意:
- 5个数值允许是乱序的。比如: 8 7 5 0 6
- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出现。
- 复杂度如果是O(n2)则不得分。

(2)
设计一个算法,找出二叉树上任意两个结点的最近共同父结点。
复杂度如果是O(n2)则不得分。

(3)
一棵排序二叉树,令 f=(最大值+最小值)/2,设计一个算法,找出距离f值最近、大于f值的结点。
复杂度如果是O(n2)则不得分。

(4)
一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。
复杂度最好是O(n),如果是O(n2)则不得分。

=========================================================================
【题11】出个智力题娱乐下。。。
某县的5所中学举行篮球比赛,每所中学互赛一场举行循环赛。比赛结果如下:“一中:2胜2负;二中:0胜4负;三中:1胜3负;四中:4胜0负”。问5中成绩如何?

【题12】取硬币游戏
l    有两个游戏者:A和B。
l    有21颗硬币。
l    两人轮流取走硬币,每次可取1、2或3颗。
l    A先取。
l    取走最后一颗硬币的人获胜,即没有硬币可取的人算输。
【分析】如果剩下1、2或3颗硬币,那么接下来取的人就能获胜;如果剩下4颗,那么无论接下来的人怎么取,都会出现前面这种情况,所以接下来取的人一定会输;如果剩下5、6或7颗硬币,那么接下来取的人只要使得剩下4颗硬币,他就能获胜。0,4,8,12,……都是下一个取硬币者的必败状态。现在有21颗硬币,21除以4的余数是1,所以先走者有必胜的策略,他第一次只要取走1颗硬币,以后每一次都保证剩下的石子是4的倍数就行了。

============================================================
【题13】有10个小球,外形相同,其中一个小球的质量与其他小球不同,给你一个天平,问如何用3次机会把那个小球给找出来,并且求出那个小球比其他的小球是种还是轻?