码迷,mamicode.com
首页 > Web开发 > 详细

摘录-IT企业必读的200个.NET面试题-04 字符串、集合和流的使用

时间:2015-07-01 23:34:53      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

字符串处理

Q: System.String是值类型还是引用类型

System.String是引用类型,它的对象在初始化之后就不能再做修改,任何试图修改字符串对象的动作将导致一个新的字符串对象生成。

Q: 如何在string和Byte[]对象之间进行转换

字符串和字节数组的转换依赖于编码方式的使用,不同的编码标准将使用不同的算法进行。System.Text.Encoding类型提供了大部分常见编码算法支持,用以进行字符串和字节数组之间的转换。下面是代码例子:

class Program
    {
        static void Main(string[] args)
        {
            string s = "我是字符串, I am string";

            Byte[] utf8 = StringToByte(s, Encoding.UTF8);

            Byte[] gb2312 = StringToByte(s, Encoding.GetEncoding("GB2312"));

            Byte[] unicode = StringToByte(s, Encoding.Unicode);

            Console.WriteLine(utf8.Length);
            Console.WriteLine(gb2312.Length);
            Console.WriteLine(unicode.Length);

            Console.WriteLine(ByteToString(utf8, Encoding.UTF8));
            Console.WriteLine(ByteToString(gb2312, Encoding.GetEncoding("GB2312")));
            Console.WriteLine(ByteToString(unicode, Encoding.Unicode));

            Console.ReadLine();
        }

        //把字符串转换为字节数组
        static Byte[] StringToByte(string s, Encoding encoding)
        {
            return encoding.GetBytes(s);
        }

        //把字节数组转换为字符串
        static string ByteToString(Byte[] b, Encoding encoding)
        {
            return encoding.GetString(b);
        }
    }

Q: SecureString的实例如何被分配和释放

System.SecureString提供了加密的字符串类型。其对象会被分配在非托管的内存中,并且以加密的形式保存。对于SecureString的操作都是逐字符的,SecureString会负责在操作时进行解密和加密。

Q: 什么是字符串池机制

字符串池机制目的在于改善程序的性能。CLR会保留程序中出现过的字符串对象的集合,并且在需要新的字符串时,先检查已有的集合,在查找成功时返回已有对象的引用。

常用集合和泛型

Q: int[]是引用类型还是值类型

数组类型是一族类型,它们都继承自System.Array,而System.Array继承自System.Object。所有的数组类型都是引用类型。

Q: 数组之间如何进行转换

数组类型在符合条件的情况下可以进行隐式转换,条件为:数组维数必须相同,目标项目类型和源项目类型必须存在隐式或者显式转换关系;源数组的项目类型不是值类型。数组类型可以通过Array.ConvertAll方法进行内容转换,该方法需要使用者提供一个转换算法,以委托或者方法的形式传入Array.ConvertAll方法中。

Q:解释泛型的基本原理

泛型类似于C++中的模板,允许程序员定义更通用的类型和算法,并且在具体使用时再生成具体的封闭类型。所有带泛型参数的类型都是一个开放式类型,它不能被实例化,但具备所有封闭类型的其他特性。

Q: 什么是泛型的主要约束和次要约束

每个泛型参数可以有至多一个主要约束,泛型的主要约束是指指定泛型参数必须是或者继承自某个引用类型,有两个特殊的主要约束:class和struct,分别代表泛型参数是引用类型和值类型。每个泛型参数可以有无限个次要约束,次要约束和主要约束的语法基本相同,但它规定的是某个泛型参数必须实现所有次要约束指定的接口。

流和序列化

Q: 什么是流,.NET中有哪些常见的流

流是对于字节集合对象的一种操作。.NET中常见的流类型有FileStream、NetworkStream、MemoryStream等。

Q: Serializable特性有何作用

通过为类型添加Serializable特性,可以使对象申明为可被序列化,即可被诸如BinaryFormatter等类型的对象序列化和反序列化。

Q: 如何自定义序列化和反序列化的过程

通过实现ISerializable接口中的GetObjectData方法可以实现自定义的序列化,而通过添加带有SerializationInfo和StreamingContext参数的构造方法可以自定义反序列化的过程。

摘录-IT企业必读的200个.NET面试题-04 字符串、集合和流的使用

标签:

原文地址:http://www.cnblogs.com/laixiancai/p/4613744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!