2009微软亚洲技术中心面试题

1.进程和线程的差别。
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. 
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

2.测试方法 
人工测试:个人复查、抽查和会审
机器测试:黑盒测试和白盒测试

3.Heap与stack的差别。
Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行

4.Windows下的内存是如何管理的?
内存分配方式有三种:
1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
2.在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
3.从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。


5.介绍.Net和.Net的安全性。
介绍NET:(微软官方描述) 
“.NET 是 Microsoft 的用以创建 XML Web 服务(下一代软件)平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。” 
“借助于 .NET 平台,可以创建和使用基于 XML 的应用程序、进程和 Web 站点以及服务,它们之间可以按设计、在任何平台或智能设备上共享和组合信息与功能,以向单位和个人提供定制好的解决方案。” 
“.NET 是一个全面的产品家族,它建立在行业标准和 Internet 标准之上,提供开发(工具)、管理(服务器)、使用(构造块服务和智能客户端)以及 XML Web 服务体验(丰富的用户体验)。.NET 将成为您今天正在使用的 Microsoft 应用程序、工具和服务器的一部分,同时,新产品不断扩展 XML Web 的服务能力以满足您的所有业务需求。”
.NET的安全性:
.NET 框架是 .NET 平台中居于核心地位的编程引擎,它通过其核心安全功能提供保护客户机和服务器的方法。由于公共语言运行库在核心层透明地处理安全性,因此开发人员可将精力集中于应用程序逻辑。开发人员仍然可以随时使用和扩展安全模型。


6.客户端如何访问.Net组件实现Web Service?
在VS中创建WebService项目扩展名为asmx.在Web工程项目中添加Web引用


7.C/C++编译器中虚表是如何完成的?
 1. 对相同的同一个class 创建多个object,可以发现 vfptr是指向同一个地址,可见一个class 维护一个虚表,与创建对象没有关系 
 2. 如果一个基类(没有通过继承创建)含有virtual 函数,则这个这个类会额外产生一个虚表,其大小是其成员变量,加上一个函数指针的大小。
 3.  虚表的作用用来实现多态, 其最终的原理是基类可以透明的通过vfptr[index] 来访问成员函数,这就意味着同一个继承里面的class群,其vfptr每个index对应的函数是相同的。


8.谈谈COM的线程模型。然后讨论进程内/外组件的差别。
COM提供的线程模型共有三种:Single-Threaded Apartment(STA 单线程套间)、Multithreaded Apartment(MTA 多线程套间)和Neutral Apartment/Thread Neutral Apartment/Neutral Threaded Apartment(NA/TNA/NTA 中立线程套间,由COM+提供)。

9.谈谈IA32下的分页机制
小页(4K)两级分页模式,大页(4M)一级

10.给两个变量,如何找出一个带环单链表中是什么地方出现环的?
一个递增一,一个递增二,他们指向同一个接点时就是环出现的地方

11.在IA32中一共有多少种办法从用户态跳到内核态?
通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等

12.如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?
用内存映射或全局原子(互斥变量)、查找窗口句柄.. 
FindWindow,互斥,写标志到文件或注册表,共享内存。
   
13.如何截取键盘的响应,让所有的‘a’变成‘b’?
键盘钩子SetWindowsHookEx

14.Apartment在COM中有什么用?为什么要引入?
Apartment被翻译成套间或是单元,是线程模型的一个实现者,只是一个数学模型,而Windows的线程、进程是它 (数学模型的线程、进程)的实现者。套间只是逻辑上的一个概念,实现时只是一个结构(由COM管理)而已,记录着相关信息,如它的种类,并由COM根据那个结构进行相应的处理。

15.存储过程是什么?有什么用?有什么优点?
我的理解就是一堆sql的集合,可以建立非常复杂的查询,编译运行,所以运行一次后,以后再运行速度比单独执行SQL快很多

15.Template有什么特点?什么时候用?
template <typename T> 
template和typename都是C++中的关键字。是类似于方法对值“参数化”,模板也采用同样的方法对数据类型进行"参数化"。 
在模板中是使用类型名(比如T)来代表调用该模板的程序所指定的数 据类型。 
template <int num>这样的格式就是使用已经有的类型,那么用户自己定义的类型如用typedef定义的类型,同样也可以这样使用,而且typename就表示任意的合法类型。

16.谈谈Windows DNA结构的特点和优点。
微软的Windows Distributed interNet Application Architecture(Windows分布式应用结构,简称Windows DNA)是微软创建新一代高适应性商业解决方案的框架,它使公司能够充分地挖掘数字神经系统的优点。Windows DNA是第一个将Internet、客户/服务器、和用于计算的PC模型结合并集成在一起的为新一类分布式计算方案而设计的应用软件体系结构。使用Windows DNA模型,用户可建造一个能在任何网络上实现现代的,可伸缩的多层应用软件。Windows DNA应用软件能够改善公司内部和外部的信息流;当公司业务扩展时,它可以动态而灵活地进行相应的变化;它还能够方便和现有的系统和数据进行集成。因为Windows DNA应用软件深深地利用了集成的Windows平台服务,因此公司可以把精力集中于实现业务方案,而并不是成为一个系统集成商。 

17.cc++中的struct有什么不同?
cc++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,
而class默认为private
cc++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

18.网络编程中设计并发服务器,使用"多进程"与"多线程" ,请问有什么区别?
 1.进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。 
 2.线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立 的执行序列。 
两者都可以提高程序的并发度,提高程序运行效率和响应时间。 
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值