服务端开发工程师常见面试题目
多进程多线程的区别
1.进程是资源调度的最小单位,线程是cpu调度的最小单位
2.数据共享和同步:多进程(数据共享复杂,需要ipc;数据是分开的,同步简单)多线程(共享进程数据,数据同步复杂)
3.内存,cpu: 多进程(占用内存多,切换复杂,cpu利用率低)多线程(占用内存少,切换简单,cpu利用率高)
4.编程调试:多进程(编程调试简单)多线程(变成调试复杂)
5.可靠性:多进程(进程间不会互相影响)多线程(一个线程挂掉导致整个进程挂掉)
6.分布式:多进程(适应于多核,多机分布式;如果一台机器不够,扩展到多台机器比较简单)多线程(适应于多核分布式)
c++类里面编译器默认生成的函数有哪几个?
1.构造函数
2.拷贝构造函数
3.赋值构造函数
4.析构函数
voliate关键字的作用
使用voliate声明变量值的时候,系统总是重新从它所在的内存读取数据;用voliate声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错.
使用场景:多任务环境下各任务间共享的标志应该加voliate;存储器映射的硬件寄存器通常也要加voliate,因为每次对它的对写都可能有不同意义;
指针和引用的区别:
本质:指针是一个指向另一个地址的变量,引用是变量的别名
初始化:指针可以不用初始化,引用必须要初始化
c++中多态的实现:
1.函数重载
2.虚函数(虚函数的机制:虚表)
string类的实现:
class String{
public:
String(const char* data = NULL);
String(const String& str);
~String();
String& operator=(const String& str)
多进程多线程的区别
1.进程是资源调度的最小单位,线程是cpu调度的最小单位
2.数据共享和同步:多进程(数据共享复杂,需要ipc;数据是分开的,同步简单)多线程(共享进程数据,数据同步复杂)
3.内存,cpu: 多进程(占用内存多,切换复杂,cpu利用率低)多线程(占用内存少,切换简单,cpu利用率高)
4.编程调试:多进程(编程调试简单)多线程(变成调试复杂)
5.可靠性:多进程(进程间不会互相影响)多线程(一个线程挂掉导致整个进程挂掉)
6.分布式:多进程(适应于多核,多机分布式;如果一台机器不够,扩展到多台机器比较简单)多线程(适应于多核分布式)
c++类里面编译器默认生成的函数有哪几个?
1.构造函数
2.拷贝构造函数
3.赋值构造函数
4.析构函数
voliate关键字的作用
使用voliate声明变量值的时候,系统总是重新从它所在的内存读取数据;用voliate声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错.
使用场景:多任务环境下各任务间共享的标志应该加voliate;存储器映射的硬件寄存器通常也要加voliate,因为每次对它的对写都可能有不同意义;
指针和引用的区别:
本质:指针是一个指向另一个地址的变量,引用是变量的别名
初始化:指针可以不用初始化,引用必须要初始化
c++中多态的实现:
1.函数重载
2.虚函数(虚函数的机制:虚表)
string类的实现:
class String{
public:
String(const char* data = NULL);
String(const String& str);
~String();
String& operator=(const String& str)