浙商银行2011笔试题+答案解析

 

1、下列4行代码是否有错误,若有错误请指出,若没有,请确定a的值是多少?

  1. int main(void
  2.     int a = 3; 
  3.     a += (a++);      
  4.     a += (++a);       
  5.     (++a) += (a++);  
  6.     (a++) += a;       
  7.     return 0; 

 

2、下面代码的输出是多少?

  1. int main(void
  2.     FILE *fp; 
  3.     char str[100]; 
  4.     fp=fopen("myfile.dat","w"); 
  5.     fputs("abc",fp); 
  6.     fclose(fp); 
  7.   
  8.     fp=fopen("myfile.dat","a+"); 
  9.     fprintf(fp,"%d",28); 
  10.     rewind(fp); 
  11.     fscanf(fp,"%s",str); 
  12.     puts(str); 
  13.     fclose(fp); 
  14.   
  15.     return 0; 

 

3、下面代码的输出是()

  1. class Myclass 
  2. public
  3.     Myclass(int n) { number = n;} 
  4.     Myclass(Myclass &other) 
  5.     { 
  6.         number = other.number; 
  7.         cout<<"a "; 
  8.     } 
  9. private
  10.     int number; 
  11. }; 
  12. Myclass fun(Myclass p) 
  13.     Myclass temp(p); 
  14.     return temp; 
  15.   
  16. int main(void
  17.     Myclass obj1(10),obj2(0); 
  18.     Myclass obj3(obj1); 
  19.     obj2=fun(obj3); 
  20.     return 0; 

A、a a a               B、a  a  a  a                 C、a  a                          D、a    

 

4、下面代码的输出是()

  1. class Myclass 
  2. public
  3.     Myclass(int n) { number = n;} 
  4.     Myclass(Myclass &other) 
  5.     { 
  6.         number = other.number; 
  7.         cout<<"a "; 
  8.     } 
  9. private
  10.     int number; 
  11. }; 
  12. Myclass fun(Myclass &p) 
  13.     Myclass temp(p); 
  14.     return temp; 
  15.   
  16. int main(void
  17.     Myclass obj1(10),obj2(0); 
  18.     Myclass obj3(obj1); 
  19.     obj2=fun(obj3); 
  20.     return 0; 

A、a a a               B、a  a  a  a                 C、a  a                          D、a   

 

5、下面错误的是()

A、define N 10;

int x[N];

B、int N = 10;
 int x[N];

C、int x[0..10];

D、int x[];


简答题:

1、abstract class 和interface的区别?

 

 

2、数据库中索引的作用的什么?什么情况下适合建立索引及什么情况下不适合建立索引?

 

 

3、黑盒测试和白盒测试的优缺点各是什么?

 

 

参考答案(欢迎讨论) 转载请注明来源 http://www.cnblogs.com/jerry19880126/

  1. 编译错误,第七行后缀++是右值,只能位于等号的右边(左值既可以位于等号的左边,亦可以位于等号的右边)。
  2. abc28。有几个知识点:fputs是向文件中写入,而puts是向屏幕输出。fopen方式有w、r和a三种,w是覆盖写入(不支持读文件内容),若文件不存在,则新建一个;r是以只读方式打开文件,不能对文件写入,若文件不存在,则出错;a是以追加方式打开文件(不支持读文件内容),不覆盖文件原内容,跟在原内容的后面进行写入,若文件不存在,也会新建一个。本程序有两个fopen,第一个以写方式打开(因为之前不存在文件,所以会直接新建一个文件);第二个fopen是以a+方式打开的,’+’表示在追加写入的基础上,还可以读取文件内容。rewind是重置文件指针,将指针指向文件开头。因此,文件首先有内容abc,然后追加写入后的结果是abc28,重置指针后,读入str里的内容是abc28,puts将之写入到标准输出(显示器)中。
  3. B。调用了四次拷贝构造函数,第一次是main中的Myclass obj3(obj1),第二次是实参obj3到fun形参p,第三次是fun中的temp,第四次是函数返回时,temp到临时变量(临时变量再到obj2调用的是’=’运算符,不是拷贝构造函数)。
  4. A。与第3题不同的是fun的形式参数是引用,传入的直接是实参的地址,所以不调用拷贝构造函数了。其他地方是一样的。
  5. BCD。只有A是对的,宏可以,另外const int N = 10; int x[N];也是可以的。除此以外,都需要动态分配空间。D要有初始化元素时才可以这样写,比如int x[] = {1,2,3},这样编译器就知道[]里应该填3。

 

简答题:

  1. 这个是java的题,c++里面没有interface,但有abstract class,当一个类中包含有纯虚函数时,这个类就是abstract class。下面从java语法角度来回答这个问题,可以分成三块还说:从成员变量角度,接口必须定义成public static final,而抽象类无此要求;从构造方法角度,接口不能有任何的构造方法,但抽象类可以有构造方法(但不能用构造方法直接生成抽象类对象,这个构造方法是用于子类调用的);从成员函数(方法)角度,接口中所有方法都是抽象的(没有函数体),若不是所有方法都为抽象,就是抽象类。
  2. 索引好比目录,用于快速查找。当数据表较大且不经常进行批量更新时,适合建立索引;反之不适合建立索引。
  3. 从效率、成本、范围覆盖和设计角度来说。黑盒测试效率高,不要求测试人员熟悉编程语言和代码,因而成本也低。黑盒测试的范围覆盖不全面,程序未执行的代码无法发现,测试用例的设计也比较困难。黑盒的优点就是白盒的缺点,而黑盒的缺点就是白盒的优点。

 

posted @ 2012-08-13 15:04  Jerry19880126  阅读(2531)  评论(1编辑  收藏  举报