4、const在c++与c中的用法与区别(包括用在函数与变量前)
这里就不多说了,特别指明一点是,const成员函数对一般的数据成员是不能改变的,只有一种特例,就是mutable修饰的数据成员,这个也有被问到。
5、说一下函数重载的好处,在什么时候要用函数重载,如果返回类型不同是不是重载
函数重载就是将语义,功能相似的几个函数用同一个名字表示,便于记忆,提高函数的易用性(C++语言采用重载机制的另一个理由是:类的构造函数需要重载机制)。重载函数只有参数不同,返回值必须是一样,编译器根据参数为每个重载函数产生不同的内部标识符。
6、自定义int strlen(char *p),函数体内不能有任何变量申明,也不能使用循环
Int strlen(char *p)
{
If(NULL==p|| p==’/ 0’ )
Return 0;
Else
Retun 1+strlen(p-1);
}
7、有n阶台梯,一个人一步可以走一梯或者走二梯,问有多少种走法,写出程序来
一般的想法是用递归,第n阶的走法,一定是到第n-1阶的走法,与n-2阶走法的和,所以何师兄立即就问,你还记得这是数学中什么有名的结构么,还好当助教有看到过这个,其实就是一个斐波那奇数列。
8、菲波那其数的程序实现,写出程序来,为什么你不用递归,要用for语句,用递归他的时间复杂度是多少
然后立刻让我写出程序来,我选择了用数组做,而不用递归,因为递归时间复杂度太大。
long fib(int n)
{
int t1=0 ,t2=1 ,t3;
For(int i=0 ;i<n ;i++)
{
t3 = t1 + t2 ;
t1 = t2;
t2 = t3
}
Return t3;
}
不过说实在,说起什么排序算法,递归的时间复杂度,就晕了,当年ACM集训的东西,全都还给刘老大了,唉~~是得补补了
9、函数模板是什么,为什么要使用模板,怎么样进行模板实例化
这个就不多讲了哈。
10、快速排序是什么,描述一下过程,时间复杂度是多少,最坏和最差情况下,时间复杂度又是多少
冒泡,选择排序什么的,估计是太简单,所以没有问,简单简介了一下快速排序的原理。又问到时间复杂度是多少,truly,这个又是我蒙的,人品再一次爆发了,又蒙对了。不过蒙也是要有道理的,要分析,虽然不知道 ,到底是怎么出来的,不过即不是n平方,也不是n,一定以前见过的这个这么怪异的值了。因为无论是否交换,快速排序比较的次数都是一样的,所以最坏最差情况下,应该一样。
11、list和vector的区别,如果向vector的puch_back时,数据已经超过开始分配的空间,系统会怎么样
这个说实在不知道,不过猜了一个,会新分配内存空间,居然猜对了。
12、自定义栈结构,遵守前进后出的原则,可是必须能知道当前栈中最小值(不要保存最小值,因为最小值如果出栈以后,还要知道次小值)
这个题讨论的最久,因为我设计了两种算法,虽然都可以实现,似乎效率不高,后来何师兄说了一种 算法导论 中提到的方法,的确比我用索引来得快。
13、用英文说明为什么你要来这个公司和部门
14、你现在作的项目是什么,你负责什么
15、用英文说明你的优点,并举例说明