IT公司笔试题(四)

1.解释堆和栈的区别。

在传统的C中堆和栈实际是一块物理内存,堆主要用来动态分配内存,从堆栈内存的低端向上分配;而栈主要用来传递函数参数、返回值和局部参数内存分配,是从堆栈内存的高端向下分配,俗称压栈和出栈;堆是动态分配,比如用new,malloc分配,需要手工释放,不然会导致memory leak,栈是静态分配,比如函数调用是需要分配堆栈,但堆栈能自动释放.
2.论述含参数的宏与函数的优缺点。
宏是编译期的,函数是运行期的;宏不是实体,而函数是一个可寻址的实体;宏只是编译期替换,在程序里每遇到S(a,b),就用a*b代替,a和b两个实体并没有由宏实际产生,而函数S会在栈中定义两个对象a和b。宏没有生存期、作用域之类的概念,而函数就有。

3.全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁。

 局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在;内存中分配在全局数据区。
使用方式不同:通过声明后全局变量程序的各个部分都可以用到。 
 局部变量只能在局部使用;分配在栈区。
操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面。

4.MFC和SDK有什么区别?
SDK是软件开发包,是一系列的API函数;
MFC是微软的类库,一种特殊的架构。


 5.驱动程序的buffer能swap到硬盘上吗?
能,因为驱动程序的buffer也是占用内存的一部分,如果长期不使用,就会被放到swap上。

 6.简述软中断、硬中断、信号的区别?应用?
(1)硬中断是外部设备对CPU的中断;软中断通常是硬中断服务程序对内核的中断;信号则是由内核(或其他进程)对某个进程的中断。
区别:

①硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。
②硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。
③硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,无需使用中断控制器。
④硬中断是可屏蔽的(NMI硬中断不可屏蔽),软中断不可屏蔽。

应用:

软中断典型应用下半部,网卡数据的处理;
硬中断应用:磁盘中断请求

7. 什么是进程,线程?它们之间的区别和联系是什么?

 

进程和线程的差别。

线程是指进程内的一个执行单元,也是进程内的可调度实体.

与进程的区别:

(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。 

8. .描述实时系统的基本特性

在特定时间内完成特定的任务,实时性与可靠性

IT公司笔试题

你可能感兴趣的:(笔试)