ET和LT模式各自应用场景是什么?为什么有了高效的ET还需要LT?
LT的编程更符合用户直觉,业务层逻辑更简单,不易出错,但效率较低;
ET的编程可以做到更加简洁,某些场景下更加高效,但另一方面容易遗漏事件,容易产生bug;
对于nginx这种高性能服务器,ET模式是很好的,Redis使用的是LT,避免使用的过程中出现bug;
当并发量比较小时,比较推荐LT,因为LT模式下应用的读写逻辑比较简单,不容易遗漏事件,代码不易出错好维护,而且性能损失不大。当并发量非常大时,推荐使用ET模式,可以有效提升EPOLL效率。
string是如何存储数据的,具体过程?为什么会扩容2倍或1.5倍?讲讲string的底层,string底层是如何分配空间的,为什么不100,200这样成倍分配
· 设计模式(单例的懒汉/饿汉、线程安全问题,装饰器模式,观察者模式,适配器模式、策略模式、迭代器模式)
c++11用过哪些特性
ssl和tls的握手过程
客户端如何收到服务端发来的公钥
服务端网页如果传输大文件,用什么解决
图用哪些结构来存储
mysql的join的用法,原理
union用过吗
线程共享资源有哪些,线程之间哪些是独立的,线程之间能否访问对方栈内的内容,协程了解多少
进程的内存分布是怎样的;多进程如何实现,资源如何回收;多线程如何实现,资源如何回收;线程同步相关;
mutex的锁的力度如何;还有没有其他类型的锁
虚函数表的内存分布
首先不考虑继承的情况。如果一个类中有虚函数,那么该类就有一个虚函数表。
这个虚函数表是属于类的,所有该类的实例化对象中都会有一个虚函数表指针去指向该类的虚函数表。在有继承情况下,只要基类有虚函数,子类不论实现或没实现,都有虚函数表。
基类的虚函数表和子类的虚函数表不是同一个表。虚函数表是在编译时确定的,属于类而不属于某个具体的实例。虚函数在代码段,仅有一份。
当有多个虚函数表时,虚函数表的结果是0代表没有下一个虚函数表。" * "号位置在不同操作系统中实现不同,代表有下一个虚函数表。
注意:
1.子类虚函数会覆盖每一个父类的每一个同名虚函数。
2.父类中没有的虚函数而子类有,填入第一个虚函数表中,且用父类指针是不能调用。
3.父类中有的虚函数而子类没有,则不覆盖。仅子类和该父类指针能调用。
https://www.huaweicloud.com/articles/12536861.html
派生类对象调用基类的函数
在一般情况下,子类中的函数与基类的函数不是同名函数,此时,可以直接通过子类对象调用基类的函
当子类中的函数与基类的函数,函数名相同,