总结一下以前面试和笔试时的题目,找工作要用的,说不定哪天就又遇上了。
1.链表与数组的区别(这个题目遇到了两次)
答:(1)数组要事前定义固定的长度,不能动态的删减
(2)链表能动态的进行存储分配,可以适应数据动态的增减情况,可以方便的插入删除数据项
(3)数组从栈中分配空间,自由度小
(4)链表从堆中分配空间,自由度大,但申请麻烦
总结:如需快速访问,很少插入或删除元素,使用数组,相反则使用链表。
2.C++内联函数:
关键字inline,用于消除函数调用的时间开销。常用于频繁执行的函数。
对于一个频繁使用的短小函数,C中使用宏定义,C++使用内联函数,(?Python中使用匿名函数)。
3.构造函数与析构函数能不能是虚函数,为何?
答:构造函数不能为虚函数,析构函数可以为虚函数。虚函数要对象建立好之后才能调用,构造函数用来建立对象。
4.如下程序:
#define Double(x) x + x
i = 5 * Double(5)
i = ?
答:i = 5 * 5 +5 = 30
5.C++如何显示当前文件的文件名和行号
答:文件名 __FILE__ 行号__line__
6.Peter的儿子是我儿子的父亲,请问Peter和我是什么关系
答:父子关系
7.递归计算1+2+3+………+n
int sum(int n)
{
if(n == 1)
return 1;
else
return n + sum(n-1);
}
8.冒泡排序
void bubble_sort(int a[], int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if (a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
9.九九乘法表
for x in range(1,10):
for y in range(1,x+1):
print('%d * %d = %d' % (y, x, x*y),end = '\t')
print('\n')