1、10、10、4、4四个数,怎么算出24点?
(10*10-4)/4=24
2、下列表达式在32位机器编译环境下的值()

class A
{
};class B
{
public:B();virtual ~B();
};class C
{
private:
#pragma pack(4)int i;short j;float k;char l[64];long m;char *p;
#pragma pack()
};class D
{
private:
#pragma pack(1)int i;short j;float k;char l[64];long m;char *p;
#pragma pack()
};int main(void)
{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位机器下运行的结果是()

#pragma pack(4)
struct info_t
{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;
};union info_u
{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;
};
#pragma pack()int main(void)
{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的值是()

#define VAL1(a,b) a*b
#define VAL2(a,b) a/b--
#define VAL3(a,b) ++a%bint a = 1;
int b = 2;
int c = 3;
int d = 3;
int e = 5;int result = VAL2(a,b)/VAL1(e,b)+VAL3(c,d);

A、-2     B、1     C、0     D、2
5、请写出以下程序的输出(5分)

void swap_1(int a , int b)
{int c;c = a;a = b;b = c;return ;
}
void swap_2(int &a , int &b)
{int c;c = a;a = b;b = c;return ;
}
void swap_3(int *a , int *b)
{int c;c = *a;*a = *b;*b = c;return ;
}int main(void)
{int a = 100;int b = 200;swap_1(a , b);printf("a = %d , b = %d\n",a , b);swap_2(a , b);printf("a = %d , b = %d\n",a , b);swap_3(&a , &b);printf("a = %d , b = %d\n",a , b);return 0;
}

输出结果:
a = 100 , b = 200
a = 200 , b = 100
a = 100 , b = 200
6、下面的程序是否有问题,如有问题,请重构代码(5分)

void test_type(bool b , const char *p , float f)
{if(!b){return ;}else if(!p){return ;}else if(!f){return ;}
}

修改如下:

void test_type(bool b , const char *p , float f)
{if(!b){return ;}else if(!p){return ;}else if(f > -1e-10 && f < 1e-10){return ;}
}

7、请指出以下程序有什么问题(5分)

void test_mem()
{char *p = new char[64];delete p;p = NULL;return ;
}

应该修改为 delete[]p;  p指向的是一个字符型的数组空间,原来的代码只是简单的释放了指向申请空间的指针,并没有释放申请的空间,容易造成内存崩溃。
回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。
8、以下程序有什么问题,请指出。

char* GetMem()
{char p[] = "hello";return p;
}void test_get_mem()
{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、请写出以下程序的输出结果

class Base
{
public:Base(){printf("I am Base()\n");}virtual ~Base(){printf("I am ~Base()\n");}
public:virtual void SayHello(){printf("Hello Base\n");}void SayWorld(){printf("World Base\n");}
};
class Derived : public Base
{
public:Derived(){printf("I am Derived()\n");}virtual ~Derived(){printf("I am ~Derived()\n");}
public:void SayHello();void SayWorld();
};void Derived::SayHello()
{printf("Hello Derived\n");
}
void Derived::SayWorld()
{printf("World Derived\n");
}int main(void)
{Base *b1 = new Base;Base *b2 = new Derived;Derived *d = new Derived;b1->SayHello();b1->SayWorld();b2->SayHello();b2->SayWorld();d->SayHello();d->SayWorld();delete d;delete b2;delete b1;d= NULL;b2 = NULL;b1 = NULL;return 0;
}

输出结果:
I am Base()
I am Base()
I am Derived()
I am Base()
I am Derived()
Hello Base
World Base
Hello Derived
World Base
Hello Derived
World Derived
I am ~Derived()
I am ~Base()
I am ~Derived()
I am ~Base()
I am ~Base()

11、阅读以下程序并给出执行结果

class Bclass
{
public:Bclass(int i , int j){x = i;y = j;}virtual int fun(){return 0;}
protected:int x , y;
};class lclass : public Bclass
{
public:lclass(int i , int j , int k) : Bclass(i , j){z = k;}int fun(){return (x+y+z)/3;}
private:int z;
};
int main(void)
{lclass obj(2,4,10);Bclass p1 = obj;cout<<p1.fun()<<endl;Bclass &p2 = obj;cout<<p2.fun()<<endl;cout<<p2.Bclass::fun()<<endl;Bclass *p3 = &obj;cout<<p3->fun()<<endl;return 0;
}

输出结果:
0
5
0
5
12、如何减少频繁分配内存(malloc或者new)造成的内存碎片?(10分)

13、请写出strchr的实现(10分)
函数功能:找出在字符串str中第一次出现字符ch的位置,找到就返回该字符位置的指针(也就是返回该字符在字符串中的地址的位置),找不到就返回空指针(就是NULL)
const char* strchr(const char* str , char ch)

const char* strchr(const char* str , char ch)
{char *p = NULL;const char* s = str;for( ; *s != '\0' ; ++s){if(*s == ch){p = (char *)s;break;}}return p;
}

14、请写出冒泡排序法算法(20分)
void BubbleSort(int r[] , int n);

void BubbleSort(int r[] , int n)
{int i , j , temp;for(i = 0 ; i < n - 1 ; ++i){for(j = 0 ; j < n-i-1 ; ++j){if(r[j] > r[j + 1]){temp = r[j];r[j] = r[j + 1];r[j + 1] = temp;}}}
}

2013年海康威视校园招聘笔试题相关推荐

  1. [转]2013年海康威视校园招聘笔试题

    1.10.10.4.4四个数,怎么算出24点? (10*10-4)/4=24 2.下列表达式在32位机器编译环境下的值() class A { }; class B { public: B(); vi ...

  2. 2013年完美世界校园招聘笔试题

    1.设有矩阵A1(30*35).A2(35*15).A3(15*5).A4(5*10),M=A1*A2*A3*A4,下列组合计算M所需数乘次数最少的是: A.(A1(A2(A3A4)))    B.( ...

  3. 2013年人人校园招聘笔试题

    一.选择题(每题5分,共计50分) 1.对于全局函数 int f(void) ,与其完全等价的函数原型为() A.int &f();      B.int f(void) const;     ...

  4. 2013年多益网络校园招聘笔试题

    题目一:有20张上下表面光滑的扑克牌,其中有8张向上,要求你闭着眼睛且不借助任何工具把这20张扑克牌分成两堆,使得每堆向上的扑克牌的数目一样多. 解决方法:从20张扑克牌中拿出8张,并把8张扑克牌翻过 ...

  5. 2013年小米校园招聘笔试题

    ---------------------------------------------------------------------------------------------------- ...

  6. 2013年小米校园招聘笔试题---研发

    3.朋友圈(25分) 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈.    ...

  7. 2013年小米校园招聘笔试题-朋友圈

    3.朋友圈(25分) 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈. 假如 ...

  8. 2013年小米校园招聘笔试题(三)

    如上题目,自己设计的代码如下: /*You can mail me :wshust2007@163.com这个问题的基本思路如下:1.根据相互间的朋友关系, 二维的bitmap ,根据本题的已知条件, ...

  9. 2013搜狗校园招聘笔试题

    研习了Linux公社发布的2013搜狗校园招聘笔试题,还是有些收获的. //第一题:以下程序的输出是___________________ class Base { public:Base(int j ...

最新文章

  1. 数据流动控制学习笔记
  2. 计算机科学在生物信息中的应用,生物信息学在基因组学中的应用
  3. python 连接mysql 字符集_Python 操作 MySQL 字符集的问题
  4. mysql query browser的使用_影响MySQL性能的配置参数
  5. 【Python包】安装teradatasql提示找不到pycryptodome模块错误(pycrypto,pycryptodome和crypto加密库)...
  6. 刷题笔记2020-06-26
  7. display:none和visibility:hidden区别
  8. python-kafka多线程快速读取consumer消费者数据,同时使用批读取与无限流读取改进
  9. Java中System.nanoTime()的使用
  10. 短期通过PMP考试?
  11. lzg_ad:XPE中的EWF分区设置说明
  12. 兔子数列规律怎么讲_神奇兔子数列
  13. 机甲大师机器人控制(一):概念与流程
  14. VBA禁止更改工作表名称
  15. C#中操作Word(9)—— 向Word中插入图表的三种方法(二)
  16. 各种奇葩3389连接不上的解决方法
  17. 数据结构之 红黑树(左倾红黑树) java实现
  18. 我的世界优化服务器ip,我的世界1.9.4服务器ip
  19. uni-app开发微信小程使用腾讯位置服务获取用户的位置信息
  20. 四川省教育考试院计算机准考证打印,四川省教育考试网官网准考证打印

热门文章

  1. AI 云原生浅谈:好未来 AI 中台实践
  2. 星辰大海:阿里数据体验技术揭秘!
  3. 基于快速GeoHash,如何实现海量商品与商圈的高效匹配?
  4. 玩大了! 阿里工程师的年会竟然这样搞?
  5. 以美术资源生产为例,谈游戏研发中台PM实战
  6. 校园二手交易平台的开发和利用
  7. js_jQuery【下拉菜单联动dom操作】
  8. xtrabackup压缩备份多线程备份(lz4,pigz)全详解
  9. ORACLE OMF介绍
  10. 如何创建Oracle DBLink