[开心IT面试题] 面试题汇总

2014-11-24 07:38:58 · 作者: · 浏览: 0

一、链表系列

1、单链表基础


2、单链表排序、反转


3、找出单链表的倒数第k个元素


4、找出单链表的中间元素


5、给定单链表,检测是否有环


6、有两个有序链表,各自内部是有序的,但是两个链表之间是无序的,合并两个链表。


7、*给定两个非环单链表(first, second),检测两个链表是否有交点,如果有返回第一个交点。


8、n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,

每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。

当一个数字删除后,从被删除数字的下一个继续删除第m个数字。

求出在这个圆圈中剩下的最后一个数字。


二、栈和队列系列

1、*栈的顺序栈、链栈实现


2、*队列的顺序表、链表实现


三、数组系列

1、*输入一个已经按升序排序过的数组和一个数字,

在数组中查找两个数,使得它们的和正好是输入的那个数字。

要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。

例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。


2、假设你有一个用1001个整数组成的数组,这些整数是任意排列的,

但是你知道所有的整数都在1到1000(包括1000)之间。

此外,除一个数字出现两次外,其他所有数字只出现一次。

假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。

如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗


四、字符串系列

1、输入一个表示整数的字符串,把该字符串转换成整数并输出。

例如输入字符串"345",则输出整数345。


五、排序系列

1、直接插入排序


2、希尔排序


3、冒泡排序


4、快速排序


5、直接选择排序


6、堆排序


六、内存管理

1、malloc和free用法


2、realloc用法


七、常见面试题

1、如果每次可以往上爬1个或2个或3个台阶,不能往下走,从第0个台阶开始,爬到第n个台阶有多少种方案?


2、如果每次可以往上爬1个或2个或3个台阶,爬楼梯过程中允许最多往下走一次,每次走1个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?


3、如果每次可以往上爬1个或2个或3个台阶,爬楼梯过程中允许最多往下走k次,每次走1个台阶,从第0个台阶开始,爬到第n个台阶有多少种方案?


4、*C实现大整数四则运算


5、求1+2+…+n,

要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A B:C)。


八、逻辑推理系列

1、村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。


2、上排给出十个数,在其下排填出对应的十个数

要求下排每个数都是先前上排那十个数在下排出现的次数。
上排的十个数如下:
[0,1,2,3,4,5,6,7,8,9]


3、有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,

这两个房间是分割开的,从一间里不能看到另一间的情况。

现在要求受训者分别进这两房间一次,然后判断出这三盏灯分别是由哪个开关控制的。

有什么办法呢?


4、你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。

如果你只能将金条切割两次,你怎样分给这些工人


5、有4张红色的牌和4张蓝色的牌,主持人先拿任意两张,再分别在A、B、C三人额头上贴任意两张牌,

A、B、C三人都可看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色牌,

A说不知道,B说不知道,C说不知道,然后A说知道了。

请教如何推理,A是怎么知道的?


九、基础题

1、*C语言基础一


2、*C语言基础二