海康威视校园招聘笔试题

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

[cpp] view plaincopyprint?

  1. class A  
  2. {  
  3. };  
  4.   
  5. class B  
  6. {  
  7. public:  
  8.     B();  
  9.     virtual ~B();  
  10. };  
  11.   
  12. class C  
  13. {  
  14. private:  
  15. #pragma pack(4)  
  16.     int i;  
  17.     short j;  
  18.     float k;  
  19.     char l[64];  
  20.     long m;  
  21.     char *p;  
  22. #pragma pack()  
  23. };  
  24.   
  25. class D  
  26. {  
  27. private:  
  28. #pragma pack(1)  
  29.     int i;  
  30.     short j;  
  31.     float k;  
  32.     char l[64];  
  33.     long m;  
  34.     char *p;  
  35. #pragma pack()  
  36. };  
  37.   
  38. int main(void)  
  39. {  
  40.     printf("%d\n",sizeof(A));  
  41.     printf("%d\n",sizeof(B));  
  42.     printf("%d\n",sizeof(C));  
  43.     printf("%d\n",sizeof(D));  
  44.     return 0;  
  45. }  

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;

}

A148482      B448284      C448482      D148282
3
、以下程序在32位机器下运行的结果是()

[cpp] view plaincopyprint?

  1. #pragma pack(4)  
  2. struct info_t  
  3. {  
  4.     unsigned char version;  
  5.     unsigned char padding;  
  6.     unsigned char extension;  
  7.     unsigned char count;  
  8.     unsigned char marker;  
  9.     unsigned char payload;  
  10.     unsigned short sequence;  
  11.     unsigned int timestamp;  
  12.     unsigned int ssrc;  
  13. };  
  14.   
  15. union info_u  
  16. {  
  17.     unsigned char version;  
  18.     unsigned char padding;  
  19.     unsigned char extension;  
  20.     unsigned char count;  
  21.     unsigned char marker;  
  22.     unsigned char payload;  
  23.     unsigned short sequence;  
  24.     unsigned int timestamp;  
  25.     unsigned int ssrc;  
  26. };  
  27. #pragma pack()  
  28.   
  29. int main(void)  
  30. {  
  31.     printf("%d\n",sizeof(info_t));  
  32.     printf("%d\n",sizeof(info_u));  
  33.     return 0;  
  34. }  

#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;

}

A12  12      B12  4       C16  4   D16  12     E16  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 a = 1;  
  6. int b = 2;  
  7. int c = 3;  
  8. int d = 3;  
  9. int e = 5;  
  10.   
  11. int result = VAL2(a,b)/VAL1(e,b)+VAL3(c,d);  

#define VAL1(a,b) a*b

#define VAL2(a,b) a/b--

#define VAL3(a,b) ++a%b

int 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     B1     C0     D2
5
、请写出以下程序的输出(5分)

[cpp] view plaincopyprint?

  1. void swap_1(int a , int b)  
  2. {  
  3.     int c;  
  4.     c = a;  
  5.     a = b;  
  6.     b = c;  
  7.     return ;  
  8. }  
  9. void swap_2(int &a , int &b)  
  10. {  
  11.     int c;  
  12.     c = a;  
  13.     a = b;  
  14.     b = c;  
  15.     return ;  
  16. }  
  17. void swap_3(int *a , int *b)  
  18. {  
  19.     int c;  
  20.     c = *a;  
  21.     *a = *b;  
  22.     *b = c;  
  23.     return ;  
  24. }  
  25.   
  26. int main(void)  
  27. {  
  28.     int a = 100;  
  29.     int b = 200;  
  30.     swap_1(a , b);  
  31.     printf("a = %d , b = %d\n",a , b);  
  32.     swap_2(a , b);  
  33.     printf("a = %d , b = %d\n",a , b);  
  34.     swap_3(&a , &b);  
  35.     printf("a = %d , b = %d\n",a , b);  
  36.     return 0;  
  37. }  

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分)

[cpp] view plaincopyprint?

  1. void test_type(bool b , const char *p , float f)  
  2. {  
  3.     if(!b)  
  4.     {  
  5.         return ;  
  6.     }  
  7.     else if(!p)  
  8.     {  
  9.         return ;  
  10.     }  
  11.     else if(!f)  
  12.     {  
  13.         return ;  
  14.     }  
  15. }  

void test_type(bool b , const char *p , float f)

{

  if(!b)

  {

    return ;

  }

  else if(!p)

  {

    return ;

  }

  else if(!f)

  {

    return ;

  }

}

修改如下:

[cpp] view plaincopyprint?

  1. void test_type(bool b , const char *p , float f)  
  2. {  
  3.     if(!b)  
  4.     {  
  5.         return ;  
  6.     }  
  7.     else if(!p)  
  8.     {  
  9.         return ;  
  10.     }  
  11.     else if(f > -1e-10 && f < 1e-10)  
  12.     {  
  13.         return ;  
  14.     }  
  15. }  

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分)

[cpp] view plaincopyprint?

  1. void test_mem()  
  2. {  
  3.     char *p = new char[64];  
  4.     delete p;  
  5.     p = NULL;  
  6.     return ;  
  7. }  

void test_mem()

{

  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.     char p[] = "hello";  
  4.     return p;  
  5. }  
  6.   
  7. void test_get_mem()  
  8. {  
  9.     char *p = GetMem();  
  10.     printf(p);  
  11.     return ;  
  12. }  

char* GetMem()

{

char p[] = "hello";

return p;

}

void test_get_mem()

{

char *p = GetMem();

printf(p);

return ;

}

GetMem函数中的p是一个在栈上的局部变量,当函数运行结束的时候,栈上的内容会自动释放的,此处返回的值有可能会成为一个野指针,会出现一个意想不到的结果。
9、请写出strcpy memcpy 的区别(5分)
答:strcpymemcpy都是标准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.     Base()  
  5.     {  
  6.         printf("I am Base()\n");  
  7.     }  
  8.     virtual ~Base()  
  9.     {  
  10.         printf("I am ~Base()\n");  
  11.     }  
  12. public:  
  13.     virtual void SayHello()  
  14.     {  
  15.         printf("Hello Base\n");  
  16.     }  
  17.     void SayWorld()  
  18.     {  
  19.         printf("World Base\n");  
  20.     }  
  21. };  
  22. class Derived : public Base  
  23. {  
  24. public:  
  25.     Derived()  
  26.     {  
  27.         printf("I am Derived()\n");  
  28.     }  
  29.     virtual ~Derived()  
  30.     {  
  31.         printf("I am ~Derived()\n");  
  32.     }  
  33. public:  
  34.     void SayHello();  
  35.     void SayWorld();  
  36. };  
  37.   
  38. void Derived::SayHello()  
  39. {  
  40.     printf("Hello Derived\n");  
  41. }  
  42. void Derived::SayWorld()  
  43. {  
  44.     printf("World Derived\n");  
  45. }  
  46.   
  47. int main(void)  
  48. {  
  49.     Base *b1 = new Base;  
  50.     Base *b2 = new Derived;  
  51.     Derived *d = new Derived;  
  52.   
  53.     b1->SayHello();  
  54.     b1->SayWorld();  
  55.   
  56.     b2->SayHello();  
  57.     b2->SayWorld();  
  58.   
  59.     d->SayHello();  
  60.     d->SayWorld();  
  61.   
  62.     delete d;  
  63.     delete b2;  
  64.     delete b1;  
  65.   
  66.     d= NULL;  
  67.     b2 = NULL;  
  68.     b1 = NULL;  
  69.   
  70.     return 0;  
  71. }  

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
、阅读以下程序并给出执行结果

[cpp] view plaincopyprint?

  1. class Bclass  
  2. {  
  3. public:  
  4.     Bclass(int i , int j)  
  5.     {  
  6.         x = i;  
  7.         y = j;  
  8.     }  
  9.     virtual int fun()  
  10.     {  
  11.         return 0;  
  12.     }  
  13. protected:  
  14.     int x , y;  
  15. };  
  16.   
  17. class lclass : public Bclass  
  18. {  
  19. public:  
  20.     lclass(int i , int j , int k) : Bclass(i , j)  
  21.     {  
  22.         z = k;  
  23.     }  
  24.     int fun()  
  25.     {  
  26.         return (x+y+z)/3;  
  27.     }  
  28. private:  
  29.     int z;  
  30. };  
  31. int main(void)  
  32. {  
  33.     lclass obj(2,4,10);  
  34.     Bclass p1 = obj;  
  35.     cout<<p1.fun()<<endl;  
  36.   
  37.     Bclass &p2 = obj;  
  38.     cout<<p2.fun()<<endl;  
  39.     cout<<p2.Bclass::fun()<<endl;  
  40.   
  41.     Bclass *p3 = &obj;  
  42.     cout<<p3->fun()<<endl;  
  43.   
  44.     return 0;  
  45. }  

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)

[cpp] view plaincopyprint?

  1. const char* strchr(const char* str , char ch)  
  2. {  
  3.     char *p = NULL;  
  4.     const char* s = str;  
  5.     for( ; *s != '\0' ; ++s)  
  6.     {  
  7.         if(*s == ch)  
  8.         {  
  9.             p = (char *)s;  
  10.             break;  
  11.         }  
  12.     }  
  13.     return p;  
  14. }  

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);

[cpp] view plaincopyprint?

  1. void BubbleSort(int r[] , int n)  
  2. {  
  3.     int i , j , temp;  
  4.     for(i = 0 ; i < n - 1 ; ++i)  
  5.     {  
  6.         for(j = 0 ; j < n-i-1 ; ++j)  
  7.         {  
  8.             if(r[j] > r[j + 1])  
  9.             {  
  10.                 temp = r[j];  
  11.                 r[j] = r[j + 1];  
  12.                 r[j + 1] = temp;  
  13.             }  
  14.         }  
  15.     }  
  16. }  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LINUX常见问题之oom kill

一、OOM含义 OOM(Out Of Memory)机制为Linux内核中一种自我保护机制&#xff0c;当系统分配不出内存时(触发条件)会触发这个机制&#xff0c;由系统在已有进程中挑选一个占用内存较多&#xff0c;回收内存收益最大的进程杀掉来释放内存。 Linux下允许程序申请比系统可用内存更…

2024年杭州电子科技大学843信号与系统考研大纲,真题,参考书,杭电843,信息与通信

杭电 杭州电子科技大学843考研信号与系统大纲&#xff0c;真题&#xff0c;参考书&#xff0c;博睿泽信息通信考研论坛。 杭州电子科技大学 全国硕士研究生招生考试业务课考试大纲 考试科目名称&#xff1a;信号与系统 科目代码&#xff1a;843 一、信号与系统概述 1、掌握连续…

Nginx location 配置 - Part 2

接上文 链接: Nginx 简介和入门 - part1 上文 我们简单地在 nginx 创建了3个虚拟主机&#xff0c; 虽然这个3个主机都是用占用80端口 但是我们可以用不同的域名来实现区分访问3台虚拟主机。 但是&#xff0c; 实际项目上&#xff0c; 我们更加多地会使用location 配置而不是…

机器学习-线性回归实践

目标&#xff1a;使用Sklearn、numpy模块实现展现数据预处理、线性拟合、得到拟合模型&#xff0c;展现预测值与目标值&#xff0c;展现梯度下降&#xff1b; 一、导入模块 import numpy as np np.set_printoptions(precision2) from sklearn.linear_model import LinearRegr…

JVM主要的几种垃圾回收算法

1、Java 为什么要实现自动内存管理 &#xff1f; 简化开发过程&#xff1a;通过内存自动管理可以避免手动分配和释放内存的麻烦&#xff0c;减少了内存泄漏和内存错误的风险&#xff0c;让研发能更专注于业务逻辑&#xff0c;不必纠结于内存管理的细节。 提高开发效率&#xff…

vite 搭建vue3 TS项目初始框架

目录 仓库地址&#xff1a; 一.搭建项目 1.安装 Vite&#xff1a; 2.创建 Vue 3 项目&#xff1a; 3.进入项目目录&#xff1a; 4.安装依赖&#xff1a; 5.运行项目&#xff1a; 6.流程实操 二.修改项目结构&#xff0c;显示自定义的页面 1.整理静态样式文件 1.1.在 sr…

Dell 机架式服务器 - 高级定制服务

Dell 机架式服务器 - 高级定制服务 1. Dell Technologies2. 机架式服务器 - 高级定制服务2.1. Servers & Storage (服务器及存储) -> Servers2.2. Rack Servers (机架式服务器)2.3. Shop2.4. PowerEdge Rack Servers (PowerEdge 机架式服务器)2.5. PowerEdge R760 Rack …

一些常用源分享

pip源 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&#xff1a;http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学&#xff1a;http://pypi.hustunique.com/ 山东理工大学&#xff1a;h…

编译原理期末大题步骤——例题

一、预测分析方法步骤 提取左公因子&#xff0c;消除左递归判断文法是否为LL(1)文法若是&#xff0c;构造预测分析表&#xff1b;否则&#xff0c;不能进行分析。根据预测分析表对输入串进行分析 例子&#xff1a; 文法G[E]&#xff1a; …

mysql进阶-视图

目录 1. 用途 2. 语法 2.1 创建或替换视图 2.2 修改视图 2.3 查看视图&#xff1a; 2.4 删除视图&#xff1a; 3. 其他 3.1 操作视图 3.2 迁移数据库 1. 用途 视图可以理解为一个复杂查询的简称&#xff0c;它可以帮助我们简化查询&#xff0c;主要用于报表查询:例如…

DataFrame详解

清洗相关的API 清洗相关的API: 1.去重API: dropDupilcates 2.删除缺失值API: dropna 3.替换缺失值API: fillna 去重API: dropDupilcates dropDuplicates(subset):删除重复数据 1.用来删除重复数据,如果没有指定参数subset,比对行中所有字段内容,如果全部相同,则认为是重复数据,…

Hyperledger Fabric 自动发现网络信息 discover 工具使用

客户端要往 Fabric 网络中发送请求&#xff0c;首先需要知道网络的相关信息&#xff0c;如网络中成员组织信息、背书节点的地址、链码安装信息等。 在 Fabric v1.2.0 版本之前&#xff0c;这些信息需要调用者手动指定&#xff0c;容易出错&#xff1b;另外&#xff0c;当网络中…

拼多多API:电商智能化发展的强大引擎

拼多多API&#xff1a;电商智能化发展的强大引擎 随着互联网的快速发展和数字化转型的加速&#xff0c;电商行业正面临着前所未有的机遇与挑战。在这个背景下&#xff0c;拼多多API作为电商智能化发展的强大引擎&#xff0c;正发挥着越来越重要的作用。本文将探讨拼多多API如何…

IOC与DI思想

目录 一、IOC1、名词解释2、传统与IOC对比&#xff08;优缺点&#xff09;3、spring框架中的IOC 二、DI三、IOC和DI关系四、相关名词 一、IOC 1、名词解释 IOC—Inversion of Control&#xff0c;即“控制反转”&#xff0c;不是技术&#xff0c;是一种设计思想。 控制&…

SPL-cmcRVFL+

吐槽 作者未提供代码&#xff0c;还有图1敢再糊点吗&#xff1f;

简单的MOV转MP4方法

1.下载腾讯的QQ影音播放器, 此播放器为绿色视频播放器, 除了播放下载好的视频外没有臃肿无用功能 官网 QQ影音 百度网盘链接&#xff1a;https://pan.baidu.com/s/1G0kSC-844FtRfqGnIoMALA 提取码&#xff1a;dh4w 2.用QQ影音打开MOV文件 3.右下角打开影音工具箱 , 选择截取…

softmax详解

在神经网络中&#xff0c;Softmax 是一个用于多类别分类的激活函数。给定一个包含原始分数&#xff08;未经处理的模型输出&#xff09;的向量&#xff0c;Softmax 将这些分数转化为表示概率分布的向量。具体而言&#xff0c;对于给定的原始分数向量 ( z )&#xff0c;Softmax …

Java中什么序列化?

在Java中&#xff0c;序列化是一种将对象转换为字节序列的机制&#xff0c;使得对象可以在网络上传输或存储到文件中&#xff0c;而后可以通过反序列化还原为对象。Java提供了java.io.Serializable接口&#xff0c;通过实现这个接口的类可以实现对象的序列化和反序列化。 序列…

Noisy DQN 跑 CartPole-v1

gym 0.26.1 CartPole-v1 NoisyNet DQN NoisyNet 就是把原来Linear里的w/b 换成 mu sigma * epsilon, 这是一种非常简单的方法&#xff0c;但是可以显著提升DQN的表现。 和之前最原始的DQN相比就是改了两个地方&#xff0c;一个是Linear改成了NoisyLinear,另外一个是在agent在t…

基于 SpringBoot + vue 的医院管理系统(含源码,数据库,文档)

基于 SpringBoot vue 的医院管理系统 †前后端分离思想&#xff0c;这个系统简直太棒了&#xff01;屯 光这个系统采用了 前后端分离思想&#xff0c;后端使用 SpringBoot和 SpringMVC框架&#xff0c;让代码更高效&#xff0c;更易于维护。前端则使用了 vue js 和ElementU…