1. 程式人生 > >面試筆試題目總結

面試筆試題目總結

        總結一下以前面試和筆試時的題目,找工作要用的,說不定哪天就又遇上了。

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')