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++面试的主要内容,如果未能解决你的问题,请参考以下文章