Autodest第一电面试题 (二)

4constc++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,一定以前见过的这个这么怪异的值了。因为无论是否交换,快速排序比较的次数都是一样的,所以最坏最差情况下,应该一样。

11listvector的区别,如果向vectorpuch_back时,数据已经超过开始分配的空间,系统会怎么样

这个说实在不知道,不过猜了一个,会新分配内存空间,居然猜对了。

12、自定义栈结构,遵守前进后出的原则,可是必须能知道当前栈中最小值(不要保存最小值,因为最小值如果出栈以后,还要知道次小值)

这个题讨论的最久,因为我设计了两种算法,虽然都可以实现,似乎效率不高,后来何师兄说了一种 算法导论 中提到的方法,的确比我用索引来得快。

13、用英文说明为什么你要来这个公司和部门

14、你现在作的项目是什么,你负责什么

15、用英文说明你的优点,并举例说明

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值