1.进程和线程的差别。
答:线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
2.测试方法
答:人工测试:个人复查、抽查和会审
机器测试:黑盒测试和白盒测试
2.Heap与stack的差别。
答:Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
3.Windows下的内存是如何管理的?
答: Windows的内存安排
![](https://i-blog.csdnimg.cn/blog_migrate/c1e048bb7030fb1ae99a2fb2391b9659.png)
4.介绍.Net和.Net的安全性。
答: .NET
“.NET 是 Microsoft 的用以创建 XML Web 服务(下一代软件)平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。”
“借助于 .NET 平台,可以创建和使用基于 XML 的应用程序、进程和 Web 站点以及服务,它们之间可以按设计、在任何平台或智能设备上共享和组合信息与功能,以向单位和个人提供定制好的解决方案。”
“.NET 是一个全面的产品家族,它建立在行业标准和 Internet 标准之上,提供开发(工具)、管理(服务器)、使用(构造块服务和智能客户端)以及 XML Web 服务体验(丰富的用户体验)。.NET 将成为您今天正在使用的 Microsoft 应用程序、工具和服务器的一部分,同时,新产品不断扩展 XML Web 的服务能力以满足您的所有业务需求。”=版权所有 软件 下载 学院 版权所有
这个美国时间2000年6月22日上午面世的新概念一经发布就引起了全球IT界的关注,因为发布它的微软公司向以改变业界的游戏规则而闻名,该公司另一个出名的地方就是精通“拿来主义”,善于继承别人的思想再经过封装变成自己的产品。在.NET的新产品中,VS.NET有Delphi的影子,C#更宛若JAVA的一个clone,甚至.NET的“网络计算”的概念也曾经在很早以前由SUN提出过。但是这并不能妨碍.NET成为去年最热门的技术词汇,随着VS.NET和Windows.net的发布,它还会成为今年人们谈论最多的话题之一。
发布.NET之后,盖茨说,网络将由呈现式的平台转为完全的平台。
在微软的WinXP的发布会上,我注意到主持人特别强调的一句话:在未来,我们可以在任何时间,任何地点,使用任何设备获取信息(any time, any place and on any device.)。但是这当然不是.NET的全部,正如盖茨所言,仅仅能够获取信息是不够的,通过.NET,用户还将会获得由程序封装过的数据,也就是服务。关于这一点,我有如下的想象:有了.NET,全世界的互联网络会组成一个庞大的服务中心,而你的终端设备(当然不仅仅是你的台式机,还包括手机、PDA、平板PC等,甚至家用电器,前面说过了,任何设备)就是你贴身的智能秘书。你不需要自己获得信息去分析,只需将你的要求说(自然语言技术也是.NET的一部分)给秘书听,她就会自动地去互联网络上查找相关的服务,经过自己的智能处理与整合,以最有效率的方式完成你交给她的任务。关于这一新的计算模型所带来的可能性,在下面这一假想的事例中可得到突出的体现:
Steve Masters 因公到旧金山出差,过街时被一名骑自行车的邮递员撞伤。Steve 用他的 Web 电话与远在他的故乡的 Jamie 联系,她是他医生办公室里的接待员。Jamie 不仅知道 Steve 的位置,而且还能访问离 Steve 较近的一些诊所列表,这些诊所可提供他的健康保险所包括的服务。她为 Steve 在一街之隔的某诊所约了医生。Steve 在得到所需的医护后又上路了。
很多人为这个前景欢欣鼓舞,其实这只是.NET体验的一小部分而已。.NET为开发人员提供了新的开发平台 (.NET框架) ,新的开发语言(C#) ,新的开发工具 (Visual Studio .NET) ,新的开发方式 (Web Service) ;为普通用户提供了Windows CE、Windows XP、Stinger、Xbox、Tablet PC、.NET My Services、MSN等产品;为企业提供了bCentral。在未来,最终大多数流行的 Microsoft 软件应用程序——包括 Office 和 Visual Studio .NET——将开始与 XML Web 服务实现交互,并把它们的主要功能作为 XML Web 服务公开,以便其他开发人员可以利用
现在,你看到了,Microsoft .NET是一个平台,是 Microsoft 的 XML Web 服务平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。这个平台包含广泛的产品系列,它们都是基于 XML 和 Internet 行业标准构建,提供从开发、管理、使用到体验 XML Web 服务的每一方面。现在,Microsoft 正在五个方面创建 .NET 平台,即工具、服务器、XML Web 服务、客户端和 .NET 体验。
Microsoft .NET更是微软的一个网络战略,是微软意图全面占领互联网领域的最强有力的武器。在全球互联网络市场的抢夺战上,微软似乎慢了半拍,在浏览器方面差点败在Netscape手中,还为此吃了老大的官司,在流媒体上又被Real斩于马下。随着互联网以前所未有的速度席卷全球,很多人都希望籍此机会重新洗牌,但是惯于制定游戏规则的微软又怎会轻易将主动权交到别人的手中。同时,由于开放源码组织的不断壮大,微软紧抱源码不放的做法召致越来越多人的不满,很多人出于不同的考虑(安全、开放、免费)投靠了Linux阵营。另外,微软正等待着法院关于拆分的判决,如果微软被拆分,微软的产品将很难再取得目前的市场绝对垄断地位,对于微软来说,在产品上必须要变,而这个变,就是.NET所带来的由一个软件公司向一个服务公司的转变。事实上,微软将来可能会变成一个全球最大的网络服务商(ASP)。Windows这个给微软带来令人眩目的财富和辉煌的十年视窗时代结束了,微软打算全面设计我们的未来,它将把它所有产品全部重新改写为与.NET构造相一致的形态,以ASP(应用服务供应商)方式提供,这之后微软不再主要依靠授权和销售软件光盘赚钱,而是要通过互联网上运行的大量软件服务赚钱,从软件供应商走向ASP——这就是微软的新战略。
事实上,很早就有人提出过,对计算机发展和普及做出巨大贡献的软件行业已经到了这样一个转折点:留在终端的软件会越来越少,目前通过软件包发行的方式即将消失,而改为网上出租的形式获得利润,用户只要在本地发出请求,就可以在网上直接使用它,而这个软件的供应商会依你使用的次数来收费。现在你明白微软为何一定要拼了老本也要对Netscape赶尽杀绝了,一旦这个设想成为现实,集成诸多功能的浏览器将取代现在操作系统的地位,成为终端上唯一需要预安装的软件。如果这个浏览器不是微软的产品,那后果可想而知。=版权所有 软件 下载 学院 版权所有
.NET还是微软的一个互联网之梦,是微软公司提出的下一代互联网构想。在这一构想中,计算超越了网络浏览,进入一个更为先进的互联网平台和极为丰富的软件服务的新世界。微软心中有一个梦想,它要通过.NET改变人们未来的生活方式。就像当年Windows的出现使电脑从精英手中的玩具变成了普通大众身边不可或缺的工具,.NET极有可能会使互联网成为人们生活中密不可分的一部分。在未来的i时代,人们的生活、工作、学习、娱乐,都将得到.NET的帮助。在那个时候,.NET或许不会有人再提起,但是它带来的产品与概念,却将时刻伴随我们左右。
Web服务从由简单网页构成的静态服务网站,发展到可以交互执行一些复杂步骤的动态服务网站,这些服务可能需要一个Web服务调用其他的Web服务,并且像一个传统软件程序那样执行命令。这就需要和其他服务整合,需要多个服务能够一起无缝地协同工作,需要能够创建出与设备无关的应用程序,需要能够容易地协调网络上的各个服务的操作步骤,容易地创建新的用户化的服务。
微软公司推出的.NET系统技术正是为了满足这种需求。.NET将Internet本身作为构建新一代操作系统的基础,并对Internet和操作系统的设计思想进行了延伸,使开发人员能够创建出与设备无关的应用程序,容易地实现Internet连接。
.NET系统包括一个相当广泛的产品家族,它们构建于XML语言和Internet产业标准之上,为用户提供Web服务的开发、管理和应用环境。.NET系统由以下5个部分组成。
..NET开发平台
.NET开发平台由一组用于建立Web服务应用程序和Windows桌面应用程序的软件组件构成,包括.NET框架(Framework)、.NET开发者工具和ASP.NET。
..NET服务器
NET服务器是能够提供广泛聚合和集成Web服务的服务器,是搭建.NET平台的后端基础。
..NET基础服务
.NET基础服务提供了诸如密码认证、日历、文件存储、用户信息等必不可少的功能。
..NET终端设备
提供Internet连接并实现Web服务的终端设备是.NET的前端基础。个人计算机、个人数据助理设备PDA,以及各种嵌入式设备将在这个领域发挥作用。
..NET用户服务
能够满足人们各种需求的用户服务是.NET的最终目标,也是.NET的价值实现。在这5个组成部分中,.NET开发平台中的.NET框架,是.NET软件构造中最具挑战性的部分,其他4个部分紧紧围绕.NET框架来进行组织整合。
.net 即DotNet。
首先我先给出微软的DotNet定义:
"Microsoft.NET 是 Microsoft.NET XML Web Services 平台。XML Web Services 允许应用程序通过 Internet 进行通讯和共享数据,而不管采用的是哪种操作系统,设备或编程语言。Microsoft.NET 平台提供XML Web Services 并将这些服务集成在一起,为个人用户的好处是无缝的,吸引人的体验。"
.net的开发工具主要是Visual Studio.net
现在流行的版本是Visual Studio.net 2003,最新是Visual Studio.net 2005, 可以到http://www.verycd.com/下载。
.NET 的安全性
编程上采用了.NET Framework 和 编译器,用以编译中间语言,实现了用.NET虚拟机机制实现代码安全托管。
服务框架上,整合了方便应用的加密算法类。
5.客户端如何访问.Net组件实现Web Service?
答:Step1. 加入Web Service的资源
Step2.确定远程Web Service提供的URL(可以用UDDI增加),和其提供的 Service,通过权限认证。
Step3.建立 Session
Step4.调用远程 Web Service
Step5.结束 Session
6.C/C++编译器中虚表是如何完成的?
答:如果类包含虚函数,在编译时,编译器会生成一虚函数的表,就是虚表,来存放虚函数。调用是都是从表里调用的,这也是实现多态性的原理。编译器为每个包含虚函数的类添加一个指针vptr,它指向一个保存有虚函数指针的表(每个不同的类都有一个对应的表), 在调用虚函数时,通过调用指针的运行起类型将该指针指向对应的虚表。《深入浅出MFC》侯捷,第一章就讲得很清楚了。
7.谈谈COM的线程模型。然后讨论进程内/外组件的差别。
答,中文翻译为“公寓”,有时候为“套间”,这里就翻译为“公寓”吧,都一个意思,指的就是COM的线程模式,这个概念很抽象,理解起来比较困难。因为公寓不像Windows内核对象那样有个“句柄”,并且跟公寓相关的Windows API很少,只有5个:CoInitialize,CoUninitialize,CoInitializeEx,OleInitialize和OleUninitialize,大家都很熟悉了,5个关于COM初始化和反初始化的函数。如何来理解公寓呢?可以这样:1、线程住在公寓中;2、对象住在公寓中。有时候,对象和创建它的线程住在同一个公寓中,有时候不是。这样还是很难理解对吧,但没事,这个先记下来,后面会明白的。
进程内/外组件的差别是Com组建的一种表现形式:.exe文件,它是进程外组建,dll是进程内组建.
8.谈谈IA32下的分页机制
答:小页(4K)两级分页模式,大页(4M)一级
9.给两个变量,如何找出一个带环单链表中是什么地方出现环的?
答:一个递增一,一个递增二,他们指向同一个接点时就是环出现的地方
10.在IA32中一共有多少种办法从用户态跳到内核态?
答:通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等
11.如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?
答:用内存映射或全局原子(互斥变量)、查找窗口句柄..
FindWindow、互斥、写标志到文件或注册表、共享内存....。.
12.如何截取键盘的响应,让所有的‘a’变成‘b’?
键盘钩子SetWindowsHookEx
13.Apartment在COM中有什么用?为什么要引入?
答:同7
14.存储过程是什么?有什么用?有什么优点?
答:存储过程就是在数据库中建立一个可以调用的sql的查询函数,可以有参数输入,参数return,数据库编译它时实际上就会生成该存储过程的dll,所以运行一次后,以后再运行速度比单独执行SQL快很多。另一个优点,存储过程可以作为一个业务层,将用户层和数据层分隔,降低系统的内聚,提高耦合度。
15.Template有什么特点?什么时候用?
答:Template 延伸出来的 C++ Generic Programming,最大的特点是它已经成为STL 的最重要的骨干的C++标准程序库,将template 广泛应用于容器,算法,仿函数,适配器,分配器,迭代器上,无处不在,无役不已,所以C++会被认为是工业化的语言。
16.谈谈Windows DNA结构的特点和优点。
答:Windows DNA是Windows Distributed interNet Applications Architecture 的缩写,如果直译成中文,是 "Windows 分布式集成网络应用体系结构" 的意思。
Windows DNA的核心是将Web和客户机/服务器的应用开发模型通过一套公共对象模型集成起来。Windows DNA使用一套公共服务集,如组件、动态 HTML、Web浏览器和服务器、脚本、事务处理、消息队列、安全性、目录、数据库和数据访问、系统管理以及用户界面等。这些服务在各个层次上以同一种方式开放给应用程序使用。
另外由于 Windows DNA是在W3C和IETF等制定的标准上构建的,所以它充分支持开放式的Web功能。
利用Windows DNA提供的优势,开发人员可以构建全新的应用程序,包括电子商务和其它个人之间及企业之间的通信应用,由于充分利用了标准网络服务和先进的基于组件的开发模式,开发人员可以比以往更快地开发出全新的应用。Windows DNA支持和旧有的计算机软硬件之间的集成和扩展,所以UNIX和一些大型机的系统在Windows DNA模式下仍然可以使用。
Windows DNA为网络应用提供了所有最基本的组件,所以开发人员可以把精力集中在产品的创新上,而无须关注底层结构和服务的构造。今天Windows DNA大部分的组件已被Microsoft的客户和合作伙伴广泛地利用了。在不远的日子里,随着Microsoft Windows NT 5.0操作系统和COM+(组件对象模型COM的增强版)的出现,将使Windows DNA的结构和组件更易于被开发人员创建和使用。
优点:
1.和Web结合:Windows DNA充分利用了Internet的优势,通过Microsoft Internet Information Server, Windows DNA的应用可以提供用动态HTML语言创建的用户界面。这样就给出了一个简单的浏览器的界面,集中的维护和高效的软件发送模型可以为用户提供最新的软件。通过Microsoft Internet Explorer 4.0, Windows DNA提供了对各种客户端操作系统的广泛支持,包括Windows NT , Windows 95, Windows CE, Macintosh和UNIX。
2.易于管理:通过Microsoft首创的零管理方案(Zero Administration),Windows DNA结构和它的组件都可以被集中地管理。这样网络管理员无须手工调整每个用户的PC就可以安装和更新应用程序。
3.动态:Windows DNA可以通过COM+中新增加的侦听功能动态地改变它的配置和能力。所以如果一旦业务条件或者其它环境因素改变了,应用程序逻辑也会自动随之改变。
4.支持固定或移动用户:差不多40%的个人计算机是所谓“膝上型计算机”,即意味着这些计算机是用于一个没有联网的环境中。所以我们的重要的任务之一就是充分考虑这些用户的需求。Windows DNA中包含了这样一种功能:当移动用户接入网络中时,智能地将数据和函数进行分区和存储。这样当用户离线时,仍可以使用一些特定的应用程序。
5. Internet 和Intranet的透明性:由于Windows DNA将Internet和客户机/服务器工作模式集成起来,用户可以如同浏览Web一样地浏览应用程序。通过提供单一的集成化的结构将Intranet和Internet紧紧捆绑起来,Windows DNA降低了系统维护和人员培训的费用。
6.更进一步的集成:Windows DNA结构不仅和网络紧密结合,而且和网络数据以及现存的应用程序都紧密联系。Windows DNA并没有构建一个独立的数据和应用的底层结构,而是将现存的系统进行扩展,使之能够共享数据和应用逻辑,并为它们创建可以在Web上使用的接口。
总而言之,Windows DNA将各种客户的各种系统集成起来,包括从基于页面的HTML应用程序到基于代码的Windows应用程序的用户界面,移动或是离线的用户,结构化的或是非结构化的存储,基于Web的或是基于客户机/服务器的应用程序。而且它还在充分发挥分布式计算资源的能力的同时,提供了集中管理的工具以降低系统部署和技术支持的开销。