3.4 就业面试技巧与解析

本章详细介绍了常量与变量,通过大量的举例说明,读者能更好地掌握C#的基础知识,在工作时才能编写出更好的程序,因此基础知识部分也是面试时考官很看重的一个部分。

3.4.1 面试技巧与解析(一)

面试官:变量和常量有什么区别?

应聘者:变量是指在程序的运行过程中随时可以发生变化的量。常量是指在程序运行过程中不会发生变化的变量。

面试官:在程序中使用常量有哪些优点?

应聘者:至少有以下三个优点。

(1)常量用易于理解的清楚的名称替代了含义不明确的数字或字符串,使程序更易于阅读。

(2)常量更容易避免程序出现错误。如果要把另一个值赋给程序中的一个常量,而该常量已经有了一个值,编译器就会报告错误。

(3)常量是静态的。不用在常量声明中包含修饰符static。

3.4.2 面试技巧与解析(二)

面试官:简述值类型与引用类型的区别。

应聘者:两种类型有以下区别:

(1)值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。

(2)值类型存取速度快,引用类型存取速度慢。

(3)值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用。

(4)值类型继承自System.ValueType,引用类型继承自System.Object。

(5)栈的内存分配是自动释放;而堆在.NET中会有垃圾回收来释放。

面试官:在使用值类型和引用类型的变量时,对内存有哪些影响?

应聘者:在设计一个应用程序时,如果都是引用类型,那么应用程序的性能将显著下降,因为这会加大托管堆的压力,增加垃圾回收的次数。虽然值类型是一个轻量级的类型,但是如果大量使用值类型的话,也会有损应用程序的性能。

由于值类型实例的值是自己本身,而引用类型实例的值是一个引用,所以如果将一个值类型的变量赋值给另一个值类型的变量,会执行一次逐字段的复制,将引用类型的变量赋值给另一个引用类型的变量时,只需要复制内存地址,所以在对对象进行赋值时要避免使用值类型。