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; }
每一次请假面试,本身心里都是崩溃的。仍是本身基础不够牢固!接下来,多看面试题,多看小算法~进程