1、微软亚洲技术中心的面试题! 1什么是进程,线程?它们之间的区别和联系是什么?1进程和线程的差别。 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。 面试题: 线程与进程的区别和联系? 线程是否具有相同的堆栈 ? dll
2、 是否有独立的堆栈? 进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。 每个线程有自己的堆栈。 DLL 中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为 DLL 中的代码是被某些线程所执行,只有线程拥有堆栈,如果 DLL中的代码是 EXE 中的线程所调用,那么这个时候是不是说这个 DLL 没有自己独立的堆栈?如果 DLL 中的代码是由 DLL 自己创建的线程所执行,那么是不是说 DLL 有独立的堆栈? 以上讲的是堆栈,如果对于堆来说,每个 DLL 有自己的堆,所以如果是从DLL 中动态分配的内存,最好是从 D
3、LL 中删除,如果你从 DLL 中分配内存,然后在 EXE 中,或者另外一个 DLL 中删除,很有可能导致程序崩溃 8.描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性 2.测试方法 人工测试:个人复查、抽查和会审 机器测试:黑盒测试和白盒测试 11如果只想让程序有一个实例运行,不能运行两个。像 winamp 一样,只能开一个窗口,怎样实现? 用内存映射或全局原子(互斥变量) 、查找窗口句柄 FindWindow,互斥,写标志到文件或注册表,共享内存。 . 12如何截取键盘的响应,让所有的a变成b? 键盘钩子 SetWindowsHookEx 13Apartment 在 CO
4、M 中有什么用?为什么要引入? 14存储过程是什么?有什么用?有什么优点? 我的理解就是一堆 sql 的集合,可以建立非常复杂的查询,编译运行,所以运行一次后,以后再运行速度比单独执行 SQL 快很多 15Template 有什么特点?什么时候用? 3Windows 下的内存是如何管理的? 6C/C+编译器中虚表是如何完成的? 7谈谈 COM 的线程模型。然后讨论进程内/外组件的差别。 8谈谈 IA32 下的分页机制 小页(4K)两级分页模式,大页(4M)一级 10在 IA32 中一共有多少种办法从用户态跳到内核态? 通过调用门,从 ring3 到 ring0,中断从 ring3 到 ring0,进入 vm86 等等