1 分析C++程序運行內存分佈面試
2 寫一個函數,輸入n,求斐波那契數列的第N項 0 1 1 2 3 5 ......
算法
3 楊輝三角實現函數
code部分沒有在紙上寫出來,知道思路,可是就是不知道如何code,不知道是否是腦子抽筋了!佈局
咱們先說一下程序的組成,典型的可執行文件分爲兩部分:測試
源程序編譯後連接到一個以0地址爲始地址的線性或者多維虛擬地址空間。並且每個進程都擁有這樣一個空間,每一個指令和數據都在這個虛擬地址空間擁有肯定的地址,把這個地址稱爲虛擬地址。將進程中的目標代碼、數據等的虛擬地址組成的虛擬空間稱爲虛擬存儲器。典型的虛擬存儲器中有相似佈局:3d
以下圖所示: code
第二題是C語言基礎課本上的例子,多是面試經歷太少,忽略了基礎,找到了規律,可是就是不知道如何在紙上codeing出來.........blog
int fib(int n) { if(n == 0 || n == 1) return n; return fib(n-1) + fib(n-2) }
int fib(int n) { if(n < 2) { return n; } int fib1 = 0; int fib2 = 1; int fibn = 0' int i = 0; for(i = 2; i <= n; i++) { fibn = fib1 + fib2; fib1 = fib2; fib2 = fibn; } return fibn; }
測試程序遞歸
int main(int argc,char **argv) { int n = 6; int i = 0; for( ; i < n ; i++) { printf("%d\t", fib(i)); } printf("\n"); return 0; }
#define N 6 int main(int argc,char **argv) { int i,j; int a[N][N] = {0}; for(i = 0; i < N ; i++) { a[i][0] = 1; } for(i = 1; i < N ; i++) { for(j = 1; j <= i; j++) { a[i][j] = a[i-1][j-1] + a[i-1][j]; } } for(i = 0; i < N; i++) { /*for(j = 0; j < N - i ; j++) printf(" ");*/ for(j = 0; j <= i; j++) { printf("%3d", a[i][j]); } printf("\n"); } return 0; }
每一次請假面試,本身心裏都是崩潰的。仍是本身基礎不夠牢固!接下來,多看面試題,多看小算法~進程