摘录-IT企业必读的200个.NET面试题-05 常用类和接口

类型的基类System.Object

Q: 是否存在不继承自System.Object的类

通过运用ILasm.exe的noautoinherit开关,可以生成不从System.Object继承的类型,这种类型不是安全的类型,不建议使用。但是,因为有这种机制的存在,所以程序员在编写代码时不能随意地把任何对象默认看成System.Object的子类型。

Q: 在System.Object中定义的三个比较方法有何异同

静态方法ReferenceEquals实现了引用比较。静态Equals方法实现了比较高效地调用实例Equals方法的功能。实例Equals方法是一个虚方法,默认实现是引用比较,类型可以根据需要重写实例Equals方法。值类型的基类ValueType重写了Equals方法,实现了内容的比较。

Q: 如何重写GetHashCode方法

Object中GetHashCode的算法保证了同一对象返回同一HashCode,而不同对象则返回不同的HashCode,但对于值类型等视内容相等的对象为相等对象的类型时,默认的GetHashCode算法并不正确。

重写GetHashCode必须保证同一对象无论何时都返回同一HashCode,而相等的对象也必须返回相同的值。并且保证HashCode尽量随机散列分布。

时间的操作System.DateTime

Q: 什么是UTC时间,如何转换到UTC时间

UTC是格林威治标准时间(GMT),它是在0度经度测量到的时间。通过ToUniversalTime和ToLocal方法可以在本地时间和UTC时间之间进行转换。

管理文件和文件夹的类型

Q: 如何操作文件和文件夹

.NET内建类型中提供了FileInfo和DirectoryInfo两个类型,分别用来操作文件和文件夹。

Q: 如何实现文件和文件夹的监控功能

.NET提供了FileSystemWatcher类型来实现文件系统的监控。需要小心FileSystemWatcher缓存溢出的情况。

.NET中的定时器

Q: .NET提供了哪几个定时器类型

System.Windows.Forms.Timer、System.Threading.Timer、System.Timers.Timer。System.Windows.Forms.Timer有计时不准确和遗漏节拍的特点;推荐使用System.Threading.Timer。

补充:System.Threading.Timer和System.Timers.Timer有可能会发生方法重入的问题,System.Windows.Forms.Timer则不存在这个问题。事实上,System.Windows.Forms.Timer类型并没有涉及多线程的操作,定时器的设置、定时方法的执行都在同一个线程之上(UI线程)。

你可能感兴趣的:(.net)