C/C++面经

C/C++

2、结构体内存对齐问题?

形参和实参(区别、背后实现过程)、返回值

4、在传递函数参数时,什么时候该使用指针,什么时候该使用引用呢?
45、形参与实参的区别?
46、值传递、指针传递、引用传递的区别和效率
77、C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?
85、 函数调用过程栈的变化,返回值和参数变量哪个先入栈?
106、你什么情况用指针当参数,什么时候用引用,为什么?
111、在进行函数参数以及返回值传递时,可以使用引用或者值传递,其中使用引用的好处有哪些?
113、将引用作为函数参数有哪些好处?

内存

5、堆和栈的区别
6、你觉得堆快一点还是栈快一点?
8、new / delete 与 malloc / free的异同
9、new和delete是如何实现的?
10、malloc和new的区别?
11、既然有了malloc/free,C++中为什么还需要new/delete呢?直接用malloc/free不好吗?
12、被free回收的内存是立即返还给操作系统吗?
41、C++中有几种类型的new
42、C++的异常处理的方法
52、new和malloc的区别
53、delete p、delete [] p、allocator都有什么作用?
54、new和delete的实现原理, delete是如何知道释放内存的大小的?
55、malloc申请的存储空间能用delete释放吗?
56、malloc与free的实现原理?
57、malloc、realloc、calloc的区别
61、什么是内存泄露,如何检测与避免
62、对象复用的了解,零拷贝的了解
76、方法调用的原理(栈,汇编)
78、类如何实现只能静态分配和只能动态分配
98、C++如何处理多个异常的?
109、怎么快速定位错误出现的地方?
132、delete和delete[]区别?

变量

15、变量声明和定义区别?
47、静态变量什么时候初始化
73、全局变量和局部变量有什么区别?
75、 怎样判断两个浮点数是否相等?
84、 结构体变量比较是否相等
93、定义和声明的区别
94、全局变量和static变量的区别
95、 静态成员与普通成员的区别是什么?
99、如何在不使用额外空间的情况下,交换两个数?你有几种方法
105、你知道const char 与string之间的关系是什么吗?*

指针和引用

17、常量指针和指针常量区别?

名字需要核查

26、数组名和指针(这里为指向数组首元素的指针)区别?
31、野指针和悬空指针
44、指针和const的用法
50、从汇编层去解释一下引用
72、引用是否能实现动态绑定,为什么可以实现?
74、指针加减计算要注意什么?
80、 继承机制中对象之间如何转换?指针和引用之间如何转换?
82、函数指针?
114、你知道数组和指针的区别吗?

语言

19、C++和Python的区别
20、C++和C语言的区别
21、C++与Java的区别
32、C和C++的类型安全
104、C++中标准库是什么?
128、用C语言实现C++的继承

函数

16、strlen和sizeof区别?

16.2、(补充题)一个指针占多少字节?
在16题中有提到sizeof(str)的值为8,是在64位的编译环境下的,指针的占用大小为8字节;

而在32位环境下,指针占用大小为4字节。

???一个指针占内存的大小跟编译环境有关,而与机器的位数无关。

66、C++函数调用的压栈过程
87、你知道printf函数的实现原理是什么吗?
90、cout和printf有什么区别?
100、你知道strcpy和memcpy的区别是什么吗?
101、程序在执行int main(int argc, char *argv[])时的内存结构,你了解吗?
108、如何设计一个计算仅单个子类的对象个数?
112、说一说strcpy、sprintf与memcpy这三个函数的不同之处
118、main函数的返回值有什么值得考究之处吗?
120、strcpy函数和strncpy函数的区别?哪个函数更安全?
*122、成员函数里memset(this,0,sizeof(this))会发生什么
123、你知道回调函数吗?它的作用?
126、为什么友元函数必须在类内部声明?
127、友元函数和友元类的基本情况
133、为什么不能把所有的函数写成内联函数?
134、为什么C++没有垃圾回收机制?这点跟Java不太一样。

22、C++中struct和class的区别
29、初始化和赋值的区别
88、为什么模板类一般都是放在一个h文件中
63、介绍面向对象的三大特性,并且举例说明
103、如果有一个空类,它会默认添加哪些函数?
115、如何阻止一个类被实例化?有哪些方法?

构造函数

28、拷贝初始化和直接初始化
34、C++有哪几种的构造函数
40、什么情况下会调用拷贝构造函数
58、类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一些?
59、有哪些情况必须用到成员列表初始化?作用是什么?
64、成员初始化列表的概念,为什么用它会快一些?
68、说说移动构造函数
69、C++中将临时变量作为返回值时的处理过程
110、成员初始化列表会在什么时候用到?它的调用过程是什么?
116、 如何禁止程序自动生成拷贝构造函数?

拷贝、赋值

35、浅拷贝和深拷贝的区别
51、深拷贝与浅拷可以描述一下吗?
*60、C++中新增了string,它与C语言中的 char 有什么区别吗?它是如何实现的?

继承

49、什么是类的继承?
79、如果想将某个类用作基类,为什么该类必须定义而非声明?
81、知道C++中的组合吗?它与继承相比有什么优缺点吗?
107、你知道静态绑定和动态绑定吗?讲讲?

重载运算符

91、你知道重载运算符吗?
92、当程序中有函数重载时,函数的匹配原则和顺序是什么?

关键字

86、define、const、typedef、inline的使用方法?他们之间有什么区别?
96、说一下你理解的 ifdef endif代表着什么?

const

23、define宏定义和const的区别
24、C++中const和static的作用
25、C++的顶层const和底层const
48、const关键字的作用有哪些?

宏定义

13、宏定义和函数有何区别?
14、宏定义和typedef区别?
27、final和override关键字
30、extern"C"的用法
36、内联函数和宏定义的区别
70、如何获得结构成员相对于结构开头的字节偏移量

overload、override、overwrite

33、C++中的重载、重写(覆盖)和隐藏的区别

访问权限

37、public,protected和private访问和继承权限/public/protected/private的区别?
89、C++中类成员的访问权限和继承权限问题

volatile

39、volatile、mutable和explicit关键字的用法
102、volatile关键字的作用?

static

43、static的用法和作用?
71、静态类型和动态类型,静态绑定和动态绑定的介绍

转换

65、C++的四种强制转换reinterpret_cast/const_cast/static_cast /dynamic_cast
97、隐式转换,如何消除隐式转换?
121、static_cast比C语言中的转换强在哪里?

模板

119、模板会写吗?写一个比较大小的模板函数

网络编程

38、如何用代码判断大小端存储?
131、介绍一下几种典型的锁

调试

67、写C++代码时有一类错误是 coredump ,很常见,你遇到过吗?怎么调试这个错误?
117、你知道Debug和release的区别是什么吗?
125、C++从代码到可执行程序经历了什么?
129、动态编译与静态编译
130、hello.c 程序的编译过程

算法?

124、什么是一致性哈希?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值