最近面试的一些题
1.数据库回滚操作 sql语句
2.
输出下面程序的运行结果
View Code
1 #include <stdio.h> 2 3 int main() { 4 5 struct aa { int a; int b; }aa; 6 7 union bb { int a; int b; }bb; 8 9 aa.a = 1; aa.b = 2; 10 11 bb.a= 3; bb.b = 5; 12 13 printf("%d %d\n",aa.a,aa.b); 14 15 printf("%d %d\n",bb.a,bb.b); 16 17 return 0; } 18 19
共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。
看一下对应的汇编代码,发现第25,26行都是对[ebp-0Ch] 进行赋值,即下面一个是进行重新赋值!
1 22: aa.a = 1; 2 3 00401028 mov dword ptr [ebp-8],1 4 5 23: aa.b = 2; 6 7 0040102F mov dword ptr [ebp-4],2 8 9 24: 10 11 25: bb.a= 1; 12 13 00401036 mov dword ptr [ebp-0Ch],1 14 15 26: bb.b = 51; 16 17 0040103D mov dword ptr [ebp-0Ch],33h 18 19 27: 20 21 28: 22 23 29: printf("%d %d\n",aa.a,aa.b);
3. 输出下面的结果
1 #include <stdio.h> 2 3 4 5 int main() 6 7 { 8 9 10 11 12 13 int a[] = {1,2,3,4,5,6,7,8}; 14 15 16 17 18 19 char * p = (char *)a; 20 21 p = p +4; 22 23 24 25 printf("%d %d",*(a+4),*(int *)p); 26 27 28 29 return 0; 30 31 }
4.下面这个程序编译有没有问题,如果有,请指出来!
1 #include <iostream> 2 using namespace std; 3 4 5 class A 6 { 7 8 public : 9 virtual int f() 10 { 11 cout<<"1"<<endl; 12 return 1; 13 14 } 15 16 void g() 17 { 18 f(); 19 } 20 21 }; 22 23 24 25 class B :public A 26 { 27 public: 28 virtual int f() 29 { 30 cout<<"2"<<endl; 31 return 2; 32 } 33 34 35 36 }; 37 38 39 int main() 40 { 41 B o; 42 o.g(); 43 44 }
我自豪 我是一名软件工程师。