C/C++常见面试题整理
C/C++常见面试题整理
一、总结
一句话总结:
事情皆有因果。却有未必好因造好果,看你是短看还是长看。从概率和从极长远来看,当然是好人好报,但是具体短期的随机性就无法预测了。
1、C++里面如何声明const void f(void)函数为C程序中的库函数?
在该函数前添加extern “C”声明。由于编译后的名字不同,C++程序不能直接调用C 函数。
2、c++中类和c语言中struct的区别(至少两点)?
a、c++中的类默认的成员是私有的,struct默认的是共有的。
b、c++中的类可以定义成员函数,struct只能定义成员变量。
3、变量的声明和定义有什么区别?
声明变量不分配空间,定义变量要分配空间。声明主要是告诉编译器,后面的引用都按声明的格式。定义其实包含了声明的意思,同时要分配内存空间。
4、memset ,memcpy 的区别?
memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为’\0′。
memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;
5、程序什么时候应该使用线程,什么时候单线程效率高?
1、耗时的操作使用线程,提高应用程序响应
2、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。
3、多CPU系统中,使用线程提高CPU利用率
4、改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。 其他情况都使用单线程。
6、介绍一下模板和容器。如何实现?(也许会让你当场举例实现)?
模板可以说比较古老了,但是当前的泛型编程实质上就是模板编程。 它体现了一种通用和泛化的思想。 STL有7种主要容器:vector,list,deque,map,multimap,set,multiset.
7、如何在C中初始化一个字符数组?
a、最简单的方法是char array[];
b、也可char array[5]={’1′,’2′,’3′,’4′,’5′};或者char array[5]={“12345″};
c、或者char array[2][10]={“China”,”Beijing”};也许更符合“初始化”的意思。
8、C与C++内存的分配方式有几种?
a、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。
b、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
c、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。
9、在C++程序中调用被C编译器编译后的函数,为什么要加extern"C"?
a、C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。
b、假设某个函数的原型为: void foo(int x, int y);该函数被C编译器编译后在库中的名字为foo,而C++编译器则会产生像foointint之类的名字。
c、C++提供了C连接交换指定符号extern"C"来解决名字匹配问题。
10、如何让局部变量具有全局生命期?
用static修饰就可以了,但是只是生命期延长,范围并没有扩大,除非把这个变量定义在函数体外的静态区,不过那样就变成全局变量了,仿佛不符合题目要求。
11、new、delete、malloc、free关系?
delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。
对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
二、C/C++常见面试题整理
转自或参考:C/C++常见面试题整理 - 简书
https://www.jianshu.com/p/6aafc59faa82
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-10-30:27岁,宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672