任何一个使用.NET的人
· 描述线程与进程的区别?
进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。
· 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
Windows服务只是运行于后台的一种进程而已,并且它们的绝大部分并不要求用户交互。由三部分组成:1.一个服务可执行文件;2.一个服务控制程序(SCP);3.服务控制管理器(SCM),负责在 HKLM/SYSTEM/CurrentControlSet/Services 下创建服务键值。用户可通过 SCP 控制服务的启动、停止、暂停等,SCP 会通过 SCM 调用服务程序。
· Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?
32位单个进程所能访问的最大内存量是4G.虚拟内存是用硬盘空间做内存来弥补计算机RAM空间的缺乏。当实际RAM满时(实际上,在RAM满之前),系统就会使用虚拟内存,应用把虚拟内存和实际内存看作是一样的。两者不是一个层次的东西。
在设计时候应注意到这里的内存空间是指代码空间和数据空间的集合。代码等资源也是占空间的。
· EXE和DLL之间的区别是什么?
Windows系统中,EXE 和 DLL都是可执行文件(没错,DLL也是可执行文件),EXE通常是可以直接运行的可执行文件,包含数据和代码;而 DLL是动态链接库文件,同时也有可能是纯资源文件,只包含数据,不含程序代码。更多的时候DLL是一个函数的集合,其目的之一就是能被更多的应用程序所复用。EXE 和DLL的区别就是DLL能提供函数级的复用,而EXE比较困难。
· 什么是强类型,什么是弱类型?哪种更好些?为什么?
强类型语言有JAVA、C#等。强类型语言在一块内存定义的某种类型后是无法改变其类型的。比如string s;那么s不能再当作int来使用了,除非进行类型转换。
弱类型语言有javascript、PHP等。弱类型语言可以把一块内存定义为多种类型的。比如
var s="";
s=5;
var a=s+3;//a=8
s在定义了string类后还能再当作int来使用。
没有好坏之分,但总体来说强类型语言容易维护和容易理解。
· PID是什么?在做系统的故障排除时如何使用它?
PID (Process Identifier), 是一个全局唯一的用来标识进程的整数。在多任务系统中,可用来诊断系统中发生错误的进程。
· 单个TCP/IP端口上能够侦听多少个进程?
一个进程启动一个TCP/IP端口去抓取到进来的包,如果有另外一个进程想利用这个端口将提示“端口已经被占用”。
· 什么是GAC?它解决了什么问题?
GAC全称是Global Assembly Cache,简单的讲他是一个可以存放一些有很多程序都要用到的公共Assembly,或者你可以理解为共享文件夹。