最近面试的一些题

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 }

 

 

posted @ 2012-07-04 23:48  pipicfan  阅读(218)  评论(0编辑  收藏  举报