.NET Framework面试题及答案1-22

  1. .Net的优点有哪些?

1、良好的设计

2、面向对象的编程

3、支持多语言<c#,VB.NET,F#,Managed C++>,支持的语言都编译成中间语言(IL)

4、代码共享、高安全性

5、支持动态网页、支持Web 服务、GUI应用程序、组件库、数据库存储过程

6、跨平台 .NET Core

  1. 什么是 .Net Framework ?
       .NET framework 是 Microsoft提供的编程框架。开发者可以使用.Net Framework 开发应用,安装运行应用程序在不同的操作平台上。

  2. 什么是微软中间语言 (Microsoft Intermediate Language) ?
      程序在.Net 上编译时,代码会被转换为微软中间语言,由JIT完成。代码在调用时得到编译,而不是在启动时编译整个代码,代码仅仅会被编译一次,且将一直存在直到应用程序退出。因此性能较好。

  3. 什么是公共语言运行时(Common Language Runtime) ?

CLR是.Net Framework 运行时的环境。CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理、线程同步等,可由面向CLR的所有语言使用。将微软中间语言转换为平台特定代码。跨平台,支持三大平台。

  1. 什么是通用类型系统 (Common Type System ) ?

CTS用于描述类型的规范和行为,以便可以实现语言的互操作性。

1、CTS规范规定一个类型可以包含零个或者多个成员。 例如:字段Field、方法Method、属性Property、事件Event

2、指定类型的可见性规则及类成员的访问规则。例如:public、private、等。

3、定义类型继承、虚方法、对象生存周期等。

  1. 什么是公共语言规范(Common Language Specification) ?

CLS范配合CTS实现语言的互操作性。CLS定义了一组标准,针对.NET的编译器都支持这些标准。例如:VB.Net 不区分大小写,C#区分大小写。

  1. 什么是垃圾回收器(Garbage Collector) ?

GC用于内存管理。应用程序调用new操作符创建对象时,可能没有足够的空间分配该对象,发现空间不够或者内存中对象不在使用时,垃圾回收器清除内存中不在使用的对象。

号外:微软的COM(Component Object Mode)使用引用计数,堆上的每个对象都维护着一个计数字段,计数字段变为0时,对象就可以从内存中删除。GC的假设:对象越新,生存期越短,反之越长。回收堆的一部分,速度快于回收整个堆。

  1. 如何调用垃圾回收?

使用“GC.Collect(); “

  1. 什么是托管代码 (Managed Code) ?

托管代码就是由CLR运行和管理的代码。

  1. 什么是程序集 (Assembly) ?
      程序集是一个或者多个类型定义文件及资源文件的集合。程序集定义了可重用的类型,有版本标记,可以关联安全信息。

  2. 什么是程序集清单 (Assembly Manifest) ?

程序集清单是一个元数据的表集合,主要包括程序集的组成部分的文件名称,成绩的版本,语言文化,发布者等

  1. 程序集有哪些类型 ?

共享程序集、私有程序集

  1. 什么是命名空间(NameSpace) ?

NameSpace是一个逻辑分组,每一个类都有一个命名空间。

  1. 什么是全局程序集缓存 (Global Assembly Cache) ?
      放在公用公认目录下供多个应用程序使用的程序集。CLR在检测到对该程序集的使用时必须知道检查该目录。这个公认目录就是GAC。

  2. 如何添加和移除程序集到 GAC?

开发和测试时在GAC中安装程序集的常用工具是GACUtil.exe.

用法: Gacutil <命令> [<选项>]

1、添加 Gacutil -i A.DLL

2、移除 Gacutil -u A.DLL

号外:之前论坛中有人鄙视Windows程序员较多使用图形界面,没有命令行帅气。命令行没有多么高大上,工具而已。图形界面方便万千大众,当然做运维开发等命令行还是方便高效。

  1. 什么是反射(Reflection)?

Reflection是动态加载一个类,创建对象并在运行时调用方法。可用于读取元数据,在运行时查查找程序集,模块,类型信息。

号外:高效的.NET ORM Dapper 使用到反射。

  1. 什么是延时签名(Delay signing)?

Delay signing也称部分签名。延时签名允许只使用公钥生成程序集,暂不用私钥。

  1. 什么是 Value types 和 Reference types ?

.Net中有两种数据类型:值类型存储在堆栈stack、引用类型存储在托管堆heap。

  1. 系统异常 (System exceptions) 和应用程序异常 (Application exceptions)有何不同?
      System exceptions由CLR抛出,application exceptions用户可以自定义。

  2. 如何预防DLL被反编译(decompiled)?

源代码保护,可以使用加密的win32包装器。但不能绝对保证不被反编译。

  1. 什么是本机代码生成器(Ngen.exe) ?

使用Ngen.exe 将IL代码编译成本机代码。由于代码在安装时已经编译好,所以CLR的JIT编译器不需要在运行时编译IL代码,有助于提升应用程序性能。

  1. 什么是代码对象模型 (CodeDom) ?

Code Document Object Model 是代码生成器,可以减少人的代码工作量。一般企业开发中三层结构都会用到代码生成器。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值