### DONET开发面试题知识点详解 #### 一、线程与进程的区别 1. **进程**: 是系统资源分配的基本单位,具有独立的虚拟地址空间,可以看作是程序的一个实例。进程至少包含一个线程(主线程),可以创建多个线程以实现多线程并发执行。进程间的资源隔离性强,不同进程间不能共享代码和数据空间。 2. **线程**: 定义了代码执行堆栈和执行上下文的边界,同一进程内的线程共享代码和数据空间。线程是进程内的一个执行单元,多个线程可以同时运行在多核CPU支持下。 **总结**: 进程是资源分配单位,而线程是调度和执行的基本单位;线程间共享同一进程的数据空间,提高了数据访问效率,但也增加了线程间同步的复杂性。 #### 二、Windows服务的特点与生命周期 1. **定义**: Windows服务是在后台运行的应用程序,通常没有用户界面,可以在特定用户下(默认为System账户)运行。 2. **生命周期**: 与标准EXE程序不同,Windows服务在服务开始时启动,在服务结束时销毁。服务支持自动、手动和禁用三种启动模式。自动模式下,服务会在操作系统启动后自动运行;手动模式需手动启动服务;禁用模式下服务不会启动。 3. **用户**: 标准EXE程序默认使用当前登录用户的权限运行,而Windows服务默认使用System账户运行。这意味着Windows服务具有更高的权限,可以访问更多系统资源,但在处理敏感操作时需要额外注意安全性。 #### 三、Windows上的单个进程的最大内存量 1. **计算公式**: 单个进程最大内存量 = 2的处理器位数次方 / 2。例如,对于32位处理器,单个进程的最大内存量为2^32 / 2 = 2GB。 2. **最大虚拟内存**: 单个进程的最大内存量是最大虚拟内存的一半,因为需要留出一部分内存空间给操作系统使用。 3. **系统设计影响**: 在设计系统时,需要考虑到每个进程可用的最大内存量,合理规划进程数量和内存使用策略,避免内存溢出等问题。 #### 四、EXE与DLL的区别 1. **EXE**: 可执行文件,包含程序的入口点(如Main()函数),可以直接运行。 2. **DLL**: 动态链接库,不包含入口点,主要用于提供其他程序调用的函数和服务。 **总结**: EXE文件是可直接运行的应用程序,而DLL文件则是供其他程序调用的库文件。 #### 五、强类型与弱类型 1. **强类型**: 在编译时期确定变量类型,执行时类型不可改变,常见于C#、Java等编译型语言。优点是类型检查更加严格,提高程序的安全性和稳定性。 2. **弱类型**: 在运行时确定变量类型,常见于JavaScript等解释型语言。优点是灵活性高,但可能增加运行时错误的风险。 **选择建议**: 根据项目需求和开发习惯来决定。强类型适用于安全性要求高的场景,弱类型适合快速原型开发。 #### 六、PID及其应用 1. **定义**: PID(Process ID)是指进程标识符,用于唯一标识一个正在运行的进程。 2. **故障排除**: 当系统出现问题时,可以通过PID找到引发问题的具体进程,并通过工具如Visual Studio对进程进行调试或分析。 #### 七、TCP/IP端口监听限制 1. **限制**: 单个TCP/IP端口在同一时间只能被一个进程监听。 #### 八、GAC的作用 1. **定义**: GAC(Global Assembly Cache)是全局程序集缓存,用于存储.NET程序集。 2. **作用**: - 解决多个程序共享同一程序集的问题,无需将程序集复制到每个应用程序的目录。 - 放入GAC的程序集具有强名称,确保了版本控制和避免DLL地狱问题。 - 增强了程序集的安全性和可管理性。 #### 九、面向接口、面向对象与面向方面编程的区别 1. **面向接口**: 强调定义接口规范,实现依赖于接口,常用于实现多态性。 2. **面向对象**: 侧重于将复杂问题分解成一系列相互协作的对象,强调封装、继承和多态。 3. **面向方面**: 用于解决跨模块的横切关注点(如日志记录、事务管理),通过分离关注点来增强代码的可维护性和可扩展性。 #### 十、Interface与Abstract Class的区别 1. **Interface**: 定义了方法签名但无具体实现,多个类可以实现同一个接口,用于定义一组共同的行为规范。 2. **Abstract Class**: 可以包含抽象方法和具体实现的方法,一个类只能继承一个抽象类,用于定义基本的行为和共享状态。 #### 十一、反射的概念及用途 1. **定义**: 反射允许程序在运行时动态地创建对象、调用方法、访问字段等。 2. **用途**: - 动态创建对象实例。 - 获取对象的类型信息。 - 调用对象的方法或访问其字段。 - 支持动态绑定和延迟绑定。 反射是.NET框架中一个强大的功能,可用于实现插件架构、动态加载组件等功能,但需要注意性能开销和安全性问题。
- 粉丝: 2
- 资源: 71
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助