面试经验
CRongQ
不忘初心,脚踏实地!
展开
-
C++面试题目(更新中)
前几天我到一家公司第一次面试C++岗位(大四,面试通过),面试时主要考察了C++的指针、内存管理机制、C++面向对象、计算机网络以及数据结构等相关知识点。经过面试,我发现自己对C++的理论知识还不够扎实。卡住我的主要难点是指针这一块。面试官给的题目还算是比较灵活的,我认真分析了下题目,但有些地方还是答错了,也有些题目自己心中有正确的答案却又不敢肯定。而题目有好多细节我没太注意,其实说来...原创 2018-09-16 14:22:31 · 543 阅读 · 0 评论 -
C++题目--sprintf函数
题目:以下代码执行的结果是多少?char buffer[200],s[]="hello",c='c';int i=35,j;float fp=1.7320534f;j=sprintf(buffer,"%s",s);j+=sprintf(buffer+j,"%c",c);j+=sprintf(buffer+j,"%d",i);j+=sprintf(buffer+j,"%f",fp...原创 2019-06-12 22:22:18 · 288 阅读 · 0 评论 -
C++题目--strcat函数
题目:请输出以下代码的结果?char d[20]="123";char s[20]="abc";strcat(d,s);int i=0;while(d[i++]!='\0')i++;printf("%d",i);【参考答案】结果为:7。题目:为什么strcat(string,’!’);不行?【参考答案】字符和字符串的区别显而易见,而strcat()用于拼接...原创 2019-06-12 22:25:00 · 821 阅读 · 0 评论 -
C/C++题目--strcpy函数
题目:以下代码是否正确?char a[4],b[]={"COPY"};strcpy(a,b);【参考答案】错误。因为把原字符串b赋值给字符串a时,b的长度包括了以\0为结束符,算是一个字符,共5个字符,而a长度只为4。所以b长度大于a的长度时,不能把b拷贝到a数组当中,否则运行时就会崩溃。题目:以下代码是否正确?char a[5];char *b=”copy”;str...原创 2019-06-12 22:32:30 · 2841 阅读 · 0 评论 -
C/C++题目--strlen函数
strlen问题题目:以下代码输出结果是多少?char *s="hello";printf("%d\n",strlen(s));//只计算字符串中字符个数,不包括'\0'printf("%d\n",sizeof(s));//s是一个指针,所以在32位机器里,是4个字节printf("%d\n",sizeof("hello"));//"hello是一个字符串常量",有包括'\0',...原创 2019-06-12 22:36:15 · 2375 阅读 · 0 评论 -
C/C++题目--内存对齐
题目:什么是内存对齐?为什么要对齐?什么时候需要对齐?【答案】什么是内存对齐?字节对齐(内存对齐)主要是根据编译器设定或者在特定系统环境下数据按一定的规则存取在内存中的位置。为什么要对齐?由于不同系统对数据存取的位置有着不同的要求,对齐规则也就会有些不同。在X86系统下,一般默认对齐为4的整数倍并作为自然对齐。CPU访问数据的效率问题(对一些系统要求效率高):(1)若存...原创 2019-06-13 18:47:11 · 3380 阅读 · 3 评论 -
C/C++题目--强制转换类型
题目:int main(){int n=0xab65;//0xab65转换二进制为1010 1011 0110 0101 十进制为43877char a=(char)n;cout<<n<<endl;//43877n=a;cout<<n<<endl;//101 二进制为 0110 0101 return 0;}...原创 2019-06-14 19:46:56 · 954 阅读 · 0 评论 -
C/C++题目--基本数据类型
题目:一个float变量赋值为3.1时,为什么printf输出的值为3.0999999?(在VS环境下,输出为3.1000000)【答案】计算机是用二进制来表示浮点数和整数的。在十进制里,0.1是个简单、精确的小数,但是转换二进制表示却是循环小数0.0001100110011…。因此,3.2在十进制可以准确地表示,在二进制却不能。但二进制转换为十进制时,该数值便就不一致了。题目:...原创 2019-06-14 19:51:36 · 997 阅读 · 0 评论 -
C/C++题目--位运算
题目:有这样一个巧妙的表达式:a^=b^=a^=b;它不需要临时变量就可以交换a和b的值。【答案】这不具有可移植性。它试图在序列点之间两次修改变量a,而这种行为是未定义的。例如,有人报告如下代码:int a=123,b=7654;a^=b^=a^=b;在SCO优化C编译器下会把b置为123,把a置为0。题目:取一个整数a从右端开始的4~7位。【答案】mai...原创 2019-06-14 19:54:24 · 670 阅读 · 0 评论 -
C/C++题目--结构体练习题
题目:给定结构struct A{char t:4;char k:4;unsigned short i:8;unsigned long m;}; 问sizeof(A) = ?【标准答案】8题目:struct name1{char str;short x;int num;} ;求sizeof(name1)?【标准答案】8题目:s...原创 2019-06-14 19:59:33 · 4284 阅读 · 2 评论 -
C/C++题目--typedef与#define
题目:宏定义和操作符的区别。【答案】宏定义是C语言开始提供的3种预处理功能的其中一种。这3种预处理分别是:宏定义、文件包含和条件编译。宏定义是一个一环操作,不做计算和表达式求解,不占用内存和编译时间。题目:以下宏MIN,输出结果为多少。#define MIN(a,b) (a)<(b)?(a):(b)int main(){ int a =2;int b...原创 2019-06-15 11:03:43 · 355 阅读 · 0 评论 -
C/C++题目--编译过程
+题目:一个C++源文件从文本到可执行文件经历的过程?【答案】对于C++源文件,从文本到可执行文件一般需要四个过程:预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件。编译阶段:将经过预处理后的预编译文件转换成特定汇编代码,生成汇编文件汇编阶段:将编译阶段生成的汇编文件转化成机器码,生成可重定位目标文件链接阶段:将多个目标文...原创 2019-06-15 11:06:30 · 483 阅读 · 0 评论 -
C/C++题目--类型转换构造函数
题目:什么是类型转换构造函数【答案】一个类的构造函数只有一个参数,而且这个参数不是该类的类型而是其他类型,这个构造函数就被称为类型转换构造函数。转换构造函数可以用来处理不同域的同一个数据值。示例代码:class Polar{private: double radius; double angle;public: Polar...原创 2019-06-15 11:09:28 · 683 阅读 · 0 评论 -
C/C++题目--拷贝构造函数概念
拷贝控制操作5种特殊的成员函数:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、析构函数。这5种特殊的成员函数用来控制定义一个类对象拷贝、移动、赋值和销毁操作,统称为拷贝控制操作。拷贝和移动构造函数:定义了当用同类型的另一个对象初始化本对象时的操作。拷贝和移动赋值运算符:定义了将一个对象赋予同类型的另一个对象时的操作。析构函数:定义了当此类型对象销毁时的操作。缺...原创 2019-06-15 11:15:32 · 519 阅读 · 0 评论 -
C/C++题目--内存管理
填空题:(1)从变量的定义位置分,可分为全局变量与局部变量。其中,局部变量定义在函数或复合语句中,供函数或复合语句中使用。(2)变量的存储类型分为auto,extern,register, static。当声明一个静态(static)变量,它既具有局部变量的性质,又具有全局变量的性质。(3)C++程序的内存分为4个区:全局数据区,代码区,栈区,堆区。全局变量,静态变量,字符串常量存放在...原创 2019-06-15 11:21:04 · 1472 阅读 · 0 评论 -
C/C++题目--memcpy函数
题目:输出结果是否正常?char *s="GoldenGolbalView";char d[20];memcpy(d,s,(strlen(s)));printf("%s",d);【参考答案】输出结果可能就是GoldenGolbalView烫烫烫烫烫烫貑,原因就是strlen(s)只计算s的字符个数,没有把'\0'放进来,所以要解决这个问题,就必须+1把'\0'放进来,即st...原创 2019-06-12 22:17:26 · 200 阅读 · 0 评论 -
面试题-指针的概念
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题:问:什么是指针?答:指针是用来存储内存地址的变量,它指向单个对象的地址,除了void指针类型之外,指针的数据类型与所指向地址的变量数据类型须保持一致。不论指针指向的数据类型是哪一种,他本身永远是整型,保存的是地址。分析:int *ip;c...原创 2018-09-16 14:23:48 · 1916 阅读 · 1 评论 -
面试题-指针-引用
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709+问题:问:引用与指针有什么区别?答:1.引用必须初始化,指针可以不用。2.引用初始化以后就不能被改变(即只能初始化一次,始终只指向指定的对象),而指针可以改变所指向的对象。3.不存在指向空值的引用,而指针可以指向一个空值,即空指针。4.因...原创 2018-09-16 14:27:15 · 496 阅读 · 0 评论 -
面试题-指针-void*通用指针
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题:问:函数中的void和指针中的void*有什么区别?答:在函数中的void是表示无类型或无返回类型。void指针是通用指针,用来存放任何数据类型的引用。分析:void真正发挥的作用在于: 1.对函数返回的限定。 2.对函数参数的限定...原创 2018-09-16 14:28:22 · 730 阅读 · 0 评论 -
面试题-指针-指针与数组
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709+问题:问:数组与指针的区别?答:数组是多个元素的集合,在内存中分布在地址相连的单元中,所以通过其下标访问不同单元的元素。指针是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址。由于地址也是整数,在32位平台下,指针默认为32位。-----...原创 2018-09-16 14:29:50 · 1160 阅读 · 0 评论 -
面试题-指针-指针数组与数组指针
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题:问:int (*p)[n]与int *p[n]的区别?答:1.int (*p)[n]是数组指针,指向某n个元素所组成的整块的数组,返回值是整型指针类型的。2.int *p[n]是指针数组,指向数组里面的每个元素,即p指向第一个元素,p[1]指...原创 2018-09-16 14:30:43 · 1485 阅读 · 0 评论 -
面试题-指针-函数指针与指针函数
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题:问:请用代码来表达你对函数指针和指针函数的区别的理解?答+分析: int(*p)(int x)是函数指针,可以直接使用,它的返回值是int型int f(int a, int b){ return a + b;}int g(int a,...原创 2018-09-16 14:31:30 · 1657 阅读 · 4 评论 -
面试题-指针-指针常量与常量指针
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709此文的知识详解,请访问:https://blog.csdn.net/chen1083376511/article/details/78442059#comments问题:问:请用代码来解释以下常量指针与指针常量?答+分析:指针常量:指向常量的指针。...原创 2018-09-16 14:32:20 · 457 阅读 · 0 评论 -
面试题-指针-指针与指针的引用
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题:问:下面代码编译运行之后是否正常运行?void swap(char *&a, char *&b){ char temp; temp = *a; *a = *b; *b = temp;}int mai...原创 2018-09-16 14:33:05 · 1080 阅读 · 0 评论 -
面试题-指针-动态内存指针
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题:问:什么是内存泄漏和内存溢出?答:内存泄漏:在程序申请内存后,该内存不再会被引用,但是不能释放该内存空间。如果你delete指针之后,该空间不能归还,自己又不能进行访问(找不到该内存的地址)。内存溢出:系统预定好的内存空间不满足程序在请求的内存大...原创 2018-09-16 14:33:57 · 324 阅读 · 0 评论 -
面试题-面向对象-面向对象概念
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709+问题1:问:说说c++和c的主要区别?答:1.特点C语言属于面向过程语言,通过函数来实现程序功能,强调的是编程的算法方面。C语言可将大型程序分解成小型、便于管理的任务。而C++是面向对象语言,主要通过类的形式来实现程序功能。2.性能使用C++编写的面向对...原创 2018-09-19 16:22:12 · 1323 阅读 · 0 评论 -
面试题-面向对象-构造函数和析构函数
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题1:问:构造函数与析构函数是什么?区别是什么?答:构造函数:每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。构造函数的任务是初始化对象的数据成员,构造函数最重要的作用是创建对象本身。...原创 2018-09-19 17:18:11 · 990 阅读 · 0 评论 -
面试题-面向对象-静态成员变量以及静态成员函数
返回目录:https://blog.csdn.net/chen1083376511/article/details/82773805问题1:问:在类中,静态数据成员和普通数据成员有何区别?答:1.普通数据成员属于类的对象,对象被创建后,普通数据成员才会分配内存。静态数据成员属于整个类,即使没有创建对象,它也存在。2.只能在类外进行初始化,默认初始化为0;3.可以使用类的对象,引用或指针...原创 2018-09-19 21:49:35 · 462 阅读 · 0 评论 -
面试题-面向对象-多态性与虚函数
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709+问题1:问:在C++程序中调用被C编译器编译后的函数,为什么要加extern "C"?答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为:void foo(int c,int y); 该函数被C...原创 2018-09-19 23:31:45 · 1006 阅读 · 0 评论 -
C/C++题目--深复制与浅复制
题目:请说说什么是深复制与浅复制?并实现代码来区别它们。【答案】如果一个类拥有资源,当这个类的对象发生对象发生复制过程的时候,这个过程就可以叫做深复制,如果对象存在资源但在复制过程中并未复制资源就是浅复制。【解析】浅复制如下:class Test{public: Test(int temp) { p=temp;...原创 2019-06-15 11:24:14 · 461 阅读 · 0 评论