
C/C++笔面试
文章平均质量分 81
C/C++笔面试
奇妙之二进制
csdn博客专家,C/C++领域优质创作者,专注于Linux C/C++、嵌入式Linux开发,偶尔谈谈人生,目前致力于完成大约500篇的linux C/C++开发知识体系库,所有的文章都会一直保持更新(优化内容、排版),想学习的可以订阅我的专栏。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(15) 几种常用的排序算法C实现
文章目录1、冒泡排序法2、选择排序3、插入排序4、快速排序(快排)5、归并排序1、冒泡排序法算法思想让数组中相邻两个数字进行比较,如果是升序排列,如果左边的大于右边,则交换,相当于将较大的数往后挪。第一趟有n个数据,需要比较n-1次,可以将最大的数挪到数组最末端,第二趟只有n-1个数据了,只需要比较n-2次…每一趟可以决出一个数,n个数只要决出n-1个数的位置,剩下一个数也就定了,所以最多需要比较n-1趟。总共需要比较1+ 2 + … + n-1 = n(n-1)/2,所以算法复杂度是O(n^2原创 2020-08-28 23:39:23 · 1377 阅读 · 3 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(14) C++常见面试题杂项汇总
文章目录1、C++函数形参传递方式有哪几种?2、重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?3、内存的分配方式有几种?4、空指针和悬垂指针的区别?5、什么是封装6、C++中的空类,默认会产生哪些成员函数7、extern "C"的作用8、9、10、1、C++函数形参传递方式有哪几种?值传递、指针传递和引用传递。2、重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,原创 2020-08-23 13:21:37 · 2631 阅读 · 1 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(12) C++ 引用、常引用、引用和指针的区别、引用的作用、常引用的作用
引用的知识点好多,学崩了。文章目录引用引用和指针的区别引用的作用常应用引用引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。注意事项:(1)声明引用时,必须同时对其进行初始化。(2)引用声明完毕后,相当于目标变量名有两个名原创 2020-08-23 11:18:04 · 2488 阅读 · 2 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(11) malloc/free和new/delete区别、new/delete底层机制
嵌入式软件工程师不同于纯粹的C++程序员,常常要游走于C和C++之间,所以会考察C和C++的一些对比,比如说说malloc/free 和new/delete的区别。文章目录1、malloc/free和new/delete区别2、new/delete底层机制1、malloc/free和new/delete区别malloc/free为C的标准库函数new/delete则为C++的操作运算符malloc返回类型为void*,必须强制类型转换对应类型指针,new则直接返回对应类型指针malloc/fr原创 2020-08-20 16:39:15 · 2522 阅读 · 2 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较
C语言的++、–运算符在此不讨论。文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较1、前置后置增减运算符重载的形式自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载原创 2020-09-01 19:13:14 · 5555 阅读 · 3 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(9) C风格类型转换、C++四种类型转换、C++特殊隐式类型转换
文章目录1、C的类型转换方式2、C++新增的四种类型转换3、C++独特的隐式类型转换1、C的类型转换方式首先C++兼容C的类型转换方式。(1)隐式类型转换C在以下四种类型中会进行隐式转换:算术运算符中,低类型转换为高类型(有符号转无符号,char->short->int->float->double)赋值表达式中,右边的值自动隐式转换为左边变量的类型,并赋值函数调用参数传递,系统隐式将实参转换为形参的值函数有返回值,系统隐式将返回表达式类型转换为返回值原创 2020-08-23 00:22:43 · 2299 阅读 · 1 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(8) C++ 构造、析构、拷贝构造、默认构造、默认拷贝、赋值运算符、深浅拷贝、explict关键字面试问题汇总
1、构造函数特点无返回值,也不能写成void和类名相同支持函数重载2、构造函数分类默认构造函数(无参)普通构造函数(有参)拷贝构造函数默认拷贝构造函数(浅拷贝)3、什么是默认构造函数?在没有定义任何构造函数时,编译器将自动生成一个无参构造函数,也就是默认构造函数。一旦我们定义了自己的构造函数,编译器将不再生成默认构造函数。复制构造函数(也称为拷贝构造函数)复制构造函数参数为类对象本身的常引用,用于根据一个已存在的对象复制出一个新的该类的对象,一般在函数中会将已存在对象的数据成员的原创 2020-08-20 00:13:23 · 14748 阅读 · 1 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(7) C++ 继承、单一继承、派生列表、多继承、菱形继承、虚继承、虚基类面试问题汇总
文章目录继承单一继承派生列表多继承菱形继承虚继承继承继承是面向对象程序设计中复用代码的重要手段,它允许程序员在原有类特性的基础上进行扩展增加功能。这样产生的新的类叫派生类。继承体现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。重点:代码重用。单一继承一个类只继承于一个类叫做单一继承。class A{};class B :public A //单一继承{}派生列表派生类通过派生列表来指出其从哪个(哪些)基类继承而来。类派生列表的使用规则:①派生列表不能出现在类原创 2020-08-22 22:46:54 · 14736 阅读 · 1 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(6) 理解C++ static、struct、inline关键字
文章目录1、static作用3、struct和class区别4、inline作用1、static作用(1)保留C语言里的所有功能隐藏。(static函数,static变量均可)保持局部变量内容的持久。(static变量中的记忆功能和全局生存期)默认初始化为0(static变量)(2)C++新增功能C++中的类成员声明static(有些地方与以上作用重叠)对于非static数据成员是与类的对象相关联的,而static成员变量独立于类的对象而存在,与类相关联,所以:(1)类的静态成员函数是属于原创 2020-08-19 14:18:02 · 2674 阅读 · 2 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(5) C++ this、const关键字面试汇总
当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。成员函数函数体内所有对类成员的访问,都会被转化为“this->类成员”的方式。指针所指向的对象进行修改(即不能对这种对象的数据成员进行赋值操作);1、const成员函数为何不能对成员变量进行修改,背后的机制是啥?C++里const保留了C语言的一些用法,但也做了较多的扩展。指针是一个隐含于每一个非static成员函数中的特殊指针,指针赋值,也就是不能修改this的指向;static成员函数没有this指针。原创 2020-08-28 19:22:43 · 15162 阅读 · 1 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(4) C语言结构体对齐、枚举、宏、联合体面试问题汇总
结构体对齐问题常常是作为笔试题出现。文章目录结构体对齐问题枚举与宏联合体和结构体区别C和C++结构体区别结构体对齐问题网上总结的几条规则都不对,根据经验判断吧。(1)按结构体最大成员对齐,(但32位机下double、long long按照4字节对齐)案例1struct A{ char a; short b; int a; };8案例2struct A{ int a; double b;};12并非16。(2)结构体嵌套嵌套的结构体会在先内部完成对齐。案例3str原创 2020-08-23 16:35:11 · 2528 阅读 · 3 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(3) 理解static、register、volatile、const、extern关键字
这几个关键字是C语言面试常考知识点。面试时最好过一下,防止一时脑回路跟不上,不小心翻车。文章目录1、static作用2、register3、volatile5、extern1、static作用第一、static修饰的静态局部变量只执行一次初始化(即再次进入时不会重新赋值),而且延长了局部变量的生命周期,直到程序运行结束以后才释放,但其作用局仍为局部。第二、static修饰的全局变量和函数只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。第三、无论是修饰全局还是局部,如果原创 2020-08-18 16:53:57 · 1354 阅读 · 6 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(2) C语言经典笔面试题(下)
文章目录1、已知一个数组table,用一个宏定义,求出数据的2、对于一个频繁使用的短小函数,在C 语言中应用什么实现,在C++ 中应用什么实现?3、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)4、以下为Linux下的32位C程序,请计算sizeof的值。5、请写出bool flag 与“零值”比较的if 语句6、请写出int 变量n 与“零值”比较的if 语句7、请写出char *p 与“零值”比较的if 语句8、以下是求一个数的平方的程序,请找出错误9原创 2020-08-18 22:01:27 · 15707 阅读 · 8 评论 -
Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(1) C语言经典笔面试题(上)
C语言是嵌入式开发的常用语言,也是主要语言,很多企业在招聘嵌入式软件工程师时,C语言的熟练程度是一个重要考察点。笔试也是以C语言为主,所以想要拿到面试机会,还得通过C语言笔试,本专题总结了各大企业C语言笔面试常见的考题,并做了详细解答。文章目录1、sizeof在什么阶段执行?它是函数还是啥?2、指针的指针3、什么是大小端?写一个简单的程序判断系统的大小端。4、用变量a定义5、位操作6、符号转换7、typedef和define的区别8、C语言程序代码优化方法9、关键字static的作用10、const的使用原创 2020-08-16 13:17:29 · 33274 阅读 · 4 评论