20210601-C++面试

Posted 茴薏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20210601-C++面试相关的知识,希望对你有一定的参考价值。

1.协程了解过么?
协程是更轻量级的线程。用于解决线程间切换和进程间切换开销大的问题。协程各个状态(阻塞、运行)的切换是由程序控制,而不是内核控制,不需要内核态和用户态之间的切换,减少了开销。

2.C和C++ static的区别:
C++有静态成员和静态成员函数,其他应该都是一样的吧。

3.C和C++ 中struct的区别:
如没有typedef,struct Student{};…C++中可以直接使用 Student zhangsan; 而C中必须 struct Student zhangsan。
C++中struct可以当做类来使用,不过struct中的所有成员默认是public属性的

4.虚函数和纯虚函数的区别:
纯虚函数在基类中没有被实现,虚函数在基类中有实现。
有纯虚函数的类不能实例化对象,必须在子类中实现了纯虚函数之后才可以实例化对象。

5.进程和线程:
进程是资源分配的最小单位,有独立的虚拟内存,线程是CPU调度的最小单位,线程共享进程的如堆内存,文件句柄,全局变量,代码段等资源。一个进程可以有多个线程组成,线程没有独立的资源,所以必须依赖进程运行。
进程的切换开销很大,需要切换页表全局目录,内核态堆栈,硬件上下文(寄存器),刷新TLB,执行操作系统调度代码(还有缓存失效导致的缓存穿透到内存问题)。线程切换的开销较小,

以上是关于20210601-C++面试的主要内容,如果未能解决你的问题,请参考以下文章

C++面试题一

C++经典面试问题

面试必备 | 常见C++笔试面试题整理

面试通关秘籍(内含200道C++面试真题)

c++ 面试题 面试题复盘

华为机试真题 C++ 实现最少面试官数