1、进程和线程的差别?
答:线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
2、测试方法
答: 人工测试:个人复查、抽查和会审
机器测试:黑盒测试和白盒测试
3、Heap与stack的差别。
答:Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
4、Windows下的内存是如何管理的?
分页管理
8、谈谈IA32下的分页机制
小页(4K)两级分页模式,大页(4M)一级
9、给两个变量,如何找出一个带环单链表中是什么地方出现环的?
一个递增一,一个递增二,他们指向同一个接点时就是环出现的地方
10、在IA32中一共有多少种办法从用户态跳到内核态?
通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等
11、如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?
用内存映射或全局原子(互斥变量)、查找窗口句柄…
FindWindow,互斥,写标志到文件或注册表,共享内存。
.
12、如何截取键盘的响应,让所有的’a’变成’b’?
答:键盘钩子SetWindowsHookEx
14、存储过程是什么?有什么用?有什么优点?
答:我的理解就是一堆sql的集合,可以建立非常复杂的查询,编译运行,所以运行一次后,以后再运行速度比单独执行SQL快很多
15、Template有什么特点?什么时候用?
答: Template可以独立于任何特定的类型编写代码,是泛型编程的基础.
当我们编写的类和函数能够多态的用于跨越编译时不相关的类型时,用Template.
模板主要用于STL中的容器,算法,迭代器等以及模板元编程.
(C++的template是实现在库设计和嵌入式设计中的关键。
template能实现抽象和效率的结合;同时template还能有效地防止代码膨胀)
16、谈谈Windows DNA结构的特点和优点。
答:Windows Distributed interNet Application Architecture(Windows分布式应用结构,简称Windows DNA)是微软创建新一代高适应性商业解决方案的框架,它使公司能够充分地挖掘数字神经系统的优点。Windows DNA是第一个将Internet、客户/服务器、和用于计算的PC模型结合并集成在一起的为新一类分布式计算方案而设计的应用软件体系结构
17、网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
答:1)进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。
2)线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。