最近找工作遇到一些面试问题,回答的不是很好。特此回顾一下,做一下总结。
考研面试:static关键字的作用
1.static 关键字可以隐藏全局变量或者函数,被隐藏的全局变量获函数不能被其他文件使用。使用static后可以在不同文件中定义同名函数和同名变量,而不必担心命名冲突。
2.static 关键字可以保持变量内容的持久,static变量存在静态存储区,因此它具备持久性(函数内的局部变量加static关键字后下一次调用仍然能使用它的值)。static修饰的变量默认值为0。
const 和 define的区别
const是在编译过程中使用的,define是在预处理阶段展开的。
const 定义的是变量,而宏定义的是常量,因此const 后面加数据类型,而define 后面不加数据类型。
编译器会对const 进行类型安全检查,而对define 定义的常量只是简单的替换。
RISC和CISC指令集的区别
CISC指令集多 RISC指令集少
CISC指令长度可变 RISC指令集长度固定
CISC可访问指令不加限制 RISC只有LOAD/STORE指令
CISC各种指令执行时间相差大 RISC多数指令在一个时钟周期内完成
CISC指令各种指令使用频率相差较大 RISC多数指令只在一个时钟周期内完成
CISC指令通用寄存器较少 RISC指令通用寄存器多
CISC指令难以用优化编译生成高效的目标代码 RISC采用优化的编译程序,生成代码较为高效
CISC指令大多数用微程序控制 RISC绝大多数为组合逻辑控制
进程和线程的区别
进程由程序段、相关数据段和PCB组成,线程共享其隶属进程的进程映像,仅拥有线程ID、寄存器集合和堆栈等
进程在没有引入线程的操作系统中,进程是独立运行的基本单位。线程是独立运行的基本单位,一个进程可以拥有一个或多个线程。
进程是资源分配和拥有的基本单位,线程自己基本不拥有系统资源,但它可以访问进程所拥有的全部资源。
在没有引入线程的操作系统中,进程是独立调度和分派的基本单位。在引入线程后的操作系统中,线程是独立调度和分派的基本单位。
进程通信:PV操作,共享存储,消息传递,管道通信。线程通信:同一进程的各线程直接读写进程数据段,不同进程的线程之间通信属于进程间通信
系统开销:进程切换时涉及当前CPU环境的保存及新进程CPU环境的设置,开销较大。线程切换时只需保存和设置少量寄存器内容,开销较小。
进程的地址空间互相独立。同一进程的各线程间共享进程的地址空间。