.NET C#面试攻略:重点知识与试题解析

需积分: 9 3 下载量 42 浏览量 更新于2024-08-02 收藏 176KB DOC 举报
"这是一份关于.NET、C#的面试题集,涵盖了基础概念、面向对象特性、ADO.NET组件、数据库操作、访问修饰符、SQL查询以及ASP.NET页面间数据传递等多个方面,旨在帮助求职者准备.NET相关的技术面试。" .NET 和 C# 面试题详细解析: 1. 填空: (1) 面向对象的语言具有**封装**性、**继承**性、**多态**性。这三个特性是面向对象编程的基础,封装用于隐藏内部实现细节,提供公共接口;继承允许子类继承父类的属性和方法;多态则提供了多种形态的同一行为,增强了代码的灵活性。 (2) 能用foreach遍历访问的对象需要实现**IEnumerator**接口或声明**GetEnumerator**方法的类型。这是.NET集合类遵循的协议,使得它们可以被foreach循环遍历。 2. 不定项选择: (1) 正确答案是:B. 一个类可以实现多个接口,C. 接口不能被实例化。接口中不能包含已实现的方法,只能声明方法、属性、事件等,A和D错误。 (2) 从数据库读取记录,可能用到的方法有:B. ExecuteScalar(返回单个值)、C. Fill(填充数据集)、D. ExecuteReader(获取数据读取器)。 3. 访问权限: - **private**:私有的,仅在类的内部可访问。 - **protected**:受保护的,可以在类内部及其派生类中访问。 - **public**:公有的,任何地方都可访问。 - **internal**:内部的,仅在同一程序集内可访问。这是.NET的默认访问级别。 4. SQL查询: 取出表A中第31到第40记录的SQL语句如下(假设ID为主键且自动增长): ```sql SELECT * FROM A WHERE ID BETWEEN 31 AND 40 ``` 注意:由于ID可能是不连续的,BETWEEN关键字确保了所有31到40之间的记录都被选取。 5. ASP.NET页面间传递值的方式: - QueryString:通过URL参数传递。 - Session:将值存储在服务器端的会话状态中。 - Viewstate:在客户端以隐藏字段的形式存储数据,保持页面刷新后值不变。 - Cookie:将数据存储在客户端的Cookie中。 - Server.Transfer:服务器内部转移,保留当前请求上下文。 - Application或Cache:全局共享数据,适用于多用户环境。 - Form域数据:将值放入POST请求的表单数据中。 6. 程序输出: ```csharp class Class1 { // ... } static void Main() { int i1 = 10; // 不变,Add方法接收的是值类型副本 int i2 = 20; // 变为21,AddWithRef使用引用传递修改了i2 Class1 c = new Class1(); // 不变,静态方法无法改变实例成员 Console.WriteLine(i1); // 输出10 Console.WriteLine(i2); // 输出21 Console.WriteLine(c.str); // 输出"Class1.str",类成员不受静态方法影响 } ``` 注意:静态方法不能直接修改实例成员,因为它们并不与特定的实例关联。在这个例子中,`Add`和`StringConvert`对局部变量或引用传递的参数有影响,但对实例成员`c.i`和`c.str`无影响。因此,`c.i`和`c.str`的初始值保持不变。