logo资料库

2013年海康威视校园招聘笔试题.doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
2013年海康威视校园招聘笔试题
2013 年海康威视校园招聘笔试题 1、10、10、4、4 四个数,怎么算出 24 点? (10*10-4)/4=24 2、下列表达式在 32 位机器编译环境下的值() [cpp] view plaincopyprint? 1. class A 2. { 3. }; 4. 5. class B 6. { 7. public: 8. 9. 10. }; 11. B(); virtual ~B(); 12. class C 13. { 14. private: 15. #pragma pack(4) 16. 17. 18. 19. 20. 21. int i; short float j; k; char l[64]; long m; char *p; 22. #pragma pack() 23. }; 24. 25. class D 26. { 27. private: 28. #pragma pack(1)
29. 30. 31. 32. 33. 34. int i; short float j; k; char l[64]; long m; char *p; 35. #pragma pack() 36. }; 37. 38. int main(void) 39. { 40. 41. 42. 43. 44. 45. } printf("%d\n",sizeof(A)); printf("%d\n",sizeof(B)); printf("%d\n",sizeof(C)); printf("%d\n",sizeof(D)); return 0; A、1、4、84、82 B、4、4、82、84 C、4、4、84、82 D、1、4、 82、82 3、以下程序在 32 位机器下运行的结果是() [cpp] view plaincopyprint? 1. #pragma pack(4) 2. struct info_t 3. { 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. }; unsigned char version; unsigned char padding; unsigned char extension; unsigned char count; unsigned char marker; unsigned char payload; unsigned short sequence; unsigned int timestamp; unsigned int ssrc;
14. 15. union info_u 16. { 17. 18. 19. 20. 21. 22. 23. 24. 25. unsigned char version; unsigned char padding; unsigned char extension; unsigned char count; unsigned char marker; unsigned char payload; unsigned short sequence; unsigned int timestamp; unsigned int ssrc; 26. }; 27. #pragma pack() 28. 29. int main(void) 30. { 31. 32. 33. 34. } printf("%d\n",sizeof(info_t)); printf("%d\n",sizeof(info_u)); return 0; A、12 12 B、12 4 C、16 4 D、16 12 E、16 1 4、以下表达式 result 的值是() [cpp] view plaincopyprint? 1. #define VAL1(a,b) a*b 2. #define VAL2(a,b) a/b-- 3. #define VAL3(a,b) ++a%b 4. 5. int 6. int 7. int 8. int 9. int 10. a b c d e = = = = = 1; 2; 3; 3; 5;
11. int result = VAL2(a,b)/VAL1(e,b)+VAL3(c,d); A、-2 B、1 C、0 D、2 5、请写出以下程序的输出(5 分) [cpp] view plaincopyprint? 1. void swap_1(int a , int b) 2. { 3. 4. 5. 6. 7. 8. } int c; c a b = = = a; b; c; return ; 9. void swap_2(int &a , int &b) 10. { 11. 12. 13. 14. 15. 16. } int c; c a b = = = a; b; c; return ; 17. void swap_3(int *a , int *b) 18. { 19. 20. 21. 22. 23. 24. } 25. int c; c = *a; *a *b = = *b; c; return ; 26. int main(void) 27. { 28. 29. 30. int int a b = = 100; 200; swap_1(a , b);
31. 32. 33. 34. 35. 36. 37. } printf("a = %d , b = %d\n",a , b); swap_2(a , b); printf("a swap_3(&a printf("a = , = return 0; %d , b = %d\n",a , b); &b); %d , b = %d\n",a , b); 输出结果: a = 100 , b = 200 a = 200 , b = 100 a = 100 , b = 200 6、下面的程序是否有问题,如有问题,请重构代码(5 分) [cpp] view plaincopyprint? 1. void test_type(bool b , const char *p , float f) 2. { 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. if(!b) { } return ; else if(!p) { } return ; else if(!f) { } return ; 15. } 修改如下: [cpp] view plaincopyprint? 1. void test_type(bool b , const char *p , float f) 2. {
3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. } if(!b) { } return ; else if(!p) { } return ; else if(f > -1e-10 && f < 1e-10) { } return ; 7、请指出以下程序有什么问题(5 分) [cpp] view plaincopyprint? 1. void test_mem() 2. { 3. 4. 5. 6. 7. } char *p = new char[64]; delete p; p = NULL; return ; 应该修改为 delete[]p; p 指向的是一个字符型的数组空间,原来的代码只是简单的释放 了指向申请空间的指针,并没有释放申请的空间,容易造成内存崩溃。 回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象 的内存空间的时候用 delete[]。 8、以下程序有什么问题,请指出。 [cpp] view plaincopyprint? 1. char* GetMem() 2. { 3. 4. char p[] = "hello"; return p;
5. } 6. 7. void test_get_mem() 8. { 9. 10. 11. 12. } char *p = GetMem(); printf(p); return ; GetMem 函数中的 p 是一个在栈上的局部变量,当函数运行结束的时候,栈上的内容会自动 释放的,此处返回的值有可能会成为一个野指针,会出现一个意想不到的结果。 9、请写出 strcpy 和 memcpy 的区别(5 分) 答:strcpy 和 memcpy 都是标准 C 库函数,它们有下面的特点。 strcpy 提供了字符串的复制。即 strcpy 只用于字符串复制,并且它不仅复制字符串内容之 外,还会复制字符串的结束符。 strcpy 函数的原型是:char* strcpy(char* dest, const char* src); memcpy 提供了一般内存的复制。即 memcpy 对于需要复制的内容没有限制,因此用途更广。 memcpy 函数的原型是:void *memcpy( void *dest, const void *src, size_t count ); strcpy 和 memcpy 主要有以下 3 方面的区别。 1、复制的内容不同。strcpy 只能复制字符串,而 memcpy 可以复制任意内容,例如字符数 组、整型、结构体、类等。 2、复制的方法不同。strcpy 不需要指定长度,它遇到被复制字符的串结束符"\0"才结束, 所以容易溢出。memcpy 则是根据其第 3 个参数决定复制的长度。 3、用途不同。通常在复制字符串时用 strcpy,而需要复制其他类型数据时则一般用 memcpy。 10、请写出以下程序的输出结果 [cpp] view plaincopyprint? 1. class Base 2. { 3. public: 4. 5. 6. 7. 8. Base() { } printf("I am Base()\n"); virtual ~Base()
9. 10. 11. { } 12. public: printf("I am ~Base()\n"); 13. 14. 15. 16. 17. 18. 19. 20. 21. }; virtual void SayHello() { } printf("Hello Base\n"); void SayWorld() { } printf("World Base\n"); 22. class Derived : public Base 23. { 24. public: 25. 26. 27. 28. 29. 30. 31. 32. Derived() { } printf("I am Derived()\n"); virtual ~Derived() { } printf("I am ~Derived()\n"); 33. public: 34. 35. 36. }; 37. void SayHello(); void SayWorld(); 38. void Derived::SayHello() 39. { 40. 41. } printf("Hello Derived\n"); 42. void Derived::SayWorld() 43. {
分享到:
收藏