有趣的面试智力题

  偶来北京已经有两周了,第一周正处于十一长假中,没有投简历,四处逛游了一圈。 黄金周刚过,偶就开始投简历。 9 号就接到了第一家面试的通知,谢谢博采 ** 公司的照顾。
       中午去面试,直到走进公司,开始第一轮的面试,我才知道公司大致是经营足球彩票的。由于之前没有得到公司的任何消息,在主管问我对足球是否感兴趣时,我说不感兴趣,正好犯了他们的忌讳。因此希望大家在接到面试通知的时候一定要问清楚公司的名字,以便于在面试之前搜索一些公司的知识。面试程序员,当然要做笔试,公司是经营网络的,由于与网络有关,所以离不开数据库和网络编程。数据库是偶研究了 3 年的东西,网络编程偶从 04 年开始一直手写 HTML 标签,所以笔试的题目偶基本上都会。数据库的题目也就是关于表的连接,聚合函数的使用,排序。无在乎 select from where order by group by avg 等这几个了。网络编程考的是标签,对方给出一个跨行和跨列的表,要求使用那标签描述出来。使用 colspan,rowspan 这两个 TD 的属性就可以搞定,在最后的面试中偶才知道为什么要考这么简单的问题,经理说这些表格在有计算机的情况下,大部分面试的人都能画出来,但是能写代码的人就不多了,偶暗自庆幸一直手工输入HTML。当然也有一个题偶感觉有点突然,好像是要给偶一个下马威,也就是第一题了,让偶好想了 2 分钟。题目大致如下,如有两者变量 a=1234,b=2345, 他们的值是随机的整数,如何在不使用中间变量的情况下交换两个变量的值?第一道题偶没有遇到过,于是左思右想,右思左想,等到快要放弃的时候偶才想起一个解决这种问题的思路。第一,它给出这个问题那就肯定有答案,第二,答案就在 a,b 上做文章。交换的时候肯定有一个值保存了两个变量的值,如何才能保存两个数的值哪,相加!之后再相减。这样就有了思路,慢慢得出结论, a=a+b,b=a-b,a=a-b; 第一个问题就搞定了。
       接下来的一家面试基本上也是这些问题,不过更偏重于理论,竟然考数据结构中的排序算法,让写出算法的名字,然后写出一种算法来。当然冒泡排序是最基本的,剩下的大约 8 种算法名字就不列举了,大家自己看吧,如果有时间我会给大家写出来的。最后一道题是这样的, a,b 两个人轮流从一堆 500 个球中向外面拿球,最多一次拿 5 个,最少拿 1 个,每次必须得拿, a 先拿,问: a 第一次拿几个,以后每次怎么拿才能保证 a 拿到最后一个球?呵呵,问题让人感觉毫无头绪,中间那么多不确定因素,该怎么选择,偶慌张了一下,马上想到问题肯定有答案,于是便开始从最后的情况向前推,如果最后剩下 6 个球,并且由 B 拿,那么 a 就达到目的了,再向前推,还是 6 个,也即是说两个人各自拿过之后,两人拿球之和一定能保证为 6 ,这是个确定性的因素,因此结果与 6 有关。稍微思考便得知,第一次拿 2 个球 (500 %6) ,之后 b 开始拿,只要保证 b,a 拿球之和为 6 便可以使 a 拿到最后的球。
欢迎指正。

你可能感兴趣的:(面试,职场,求职,休闲)