诺瓦面试
为啥要设置long long类型?
long long 整型:可以在不同平台上有不同的长度,但至少有64位。
有符号类型:
long long、signed long long、long long int 、signed long long int 等价
无符号类型:
unsigned long long、unsigned long long int 等价
C++11定义的5种标准的有符号整型:
signed char
short int (2个字节,2*8=16位)
int (4个字节,4*8=32位)
long int (与int相同,32位)
long long int (8个字节,8*8=64位长度数据,最长的标准整型)
标准规定,每一种有符号整型都有一种对应的无符号整数版本,且有符号整型与其对应的无符号整型具有相同的存储空间大小。
1、早期的操作系统是16位系统
int用二字节表示,范围是-32768~32767;
long用4字节表示,范围是-2147483648~2147483647。
2、后来发展到32位操作系统
int 用4字节表示,与long相同。
3、目前的操作系统已发展到64位操作系统
因程序编译工艺的不同,两者表现出不同的差别:
32位系统:int占四字节,与long相同。
64位系统:int占四字节,long占8字节,long数据范围变为:-2^63~2^63-1
长整型至少和整型一样长,整型至少和短整型一样长。
short int 2个字节 int 2/4字节 long 4/8字节 long long 8字节
进程和线程?
进程:资源分配的最小单位 (启动进程,系统分配地址空间,操作昂贵,用数据表来维护代码段、栈堆、数据段)
线程:程序执行的最小单位,是进程的一个实体(CPU来切换和创建、花费小,通信更加方便,共享全局变量、静态变量。多进程的难点在于同步与互斥问题)
多进程:程序壮健,有自己独立的地址空间,一个进程死掉不会影响另一个进程。
多线程:没有独立的地址空间,一个线程死掉,整个进程撕掉。
线程与进程的区别:
- 不同的操作系统资源管理方式
- 强健性:线程更加强健(同时进行并又共享变量的并发操作,只可用线程),线程执行开销小,但不利于资源的管理和保护,而进程正好相反
- 线程划分尺度小于进程,多线程并发性高,但共享内存,程序效率高
- 多线程在一个应用程序中,有多个执行部分可以同时执行
进程更适应于跨机器迁移
运行多个进程,使用并发技术(时间片轮转进程调度算法)
总线程<=CPU :并行(效率高)
总线程>=CPU:并发
多任务操作系统:CPU时间片分给多个线程
线程同步: 线程同步四种方式
进程通信: 进程通信五种方式
TCP和UDP的协议(里边各自包含的协议内容)
递归和迭代:递归和迭代的区别