面試筆試題目總結
阿新 • • 發佈:2018-11-08
總結一下以前面試和筆試時的題目,找工作要用的,說不定哪天就又遇上了。
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
8.氣泡排序int sum(int n) { if(n == 1) return 1; else return n + sum(n-1); }
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')