C#面试题目含参考答案(三)

前言

面试是应聘一个工作岗位的环节,来考察一个人的工作能力与综合素质。在应聘C#程序员或与C#相关岗位时,我们都会被问到一些与.NET、C#、数据库、业务知识或编程思想等问题。本文列举一些问题及提供参考答案,题目(三)。

题目

61、C#语言中Property与Attribute的区别

参考答案: Property称属性 是用来对类、结构的成员变量进行读取或赋值。通常是一对get与set;Attribute称特性是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。

示例:

cs 复制代码
// 此处定义类的Name称属性(Property)
public class Cars
{
    /// <summary>
    /// 
    /// </summary>
    public string Name{get;set;}
}

// 此处在类上声明性标签Serializable 称特性(Attribute)
[Serializable]
public class Cars
{
    /// <summary>
    /// 
    /// </summary>
    public string Name{get;set;}
}

62、什么是强类型系统

参考答案:每个变量和常量都有一个类型,必须先声明才能使用。C# 是一种强类型语言。

63、调用WebService的常用方法有哪些

参考答案:1、通过引用wsdl文件的方式直接生成WebService调用类。2、指定的WebService地址的WSDL,生成一个代理类,通过反射动态调用里面的方法。

64、能用foreach遍历访问的对象需要实现什么接口或声明什么方法的类型

参考答案:需实现IEnumerable接口或声明GetEnumerator方法的类型。

65、C#语言有哪些主要的数据类型?它们之间是怎样进行相互转换的?

参考答案:值类型(整数类型、字符类型、浮点类型、布尔类型、结构类型和枚举类型)和引用类型(类、接口、委托、数组、字符串等)。它们可通过隐式类型转换或显式类型转换。

66、C#语言有几种表达式?根据什么确定表达式的类型?

参考答案:在C#中,基本表达式有5种:算术表达式、关系表达式、逻辑表达式、条件表达式和赋值表达式.表达式的类型由运算符的类型决定。

67、名空间有什么作用

参考答案:命名空间既是.NET提供系统资源的分层组织方式,也是分层组织程序的方式。命名空间有两种:一种是系统命名空间,一种是用户自定义命名空间。

68、根据get和set访问器是否存在,属性可以分成哪几种类型?

参考答案:如果只设置get访问器,则为只读属性,若只设置set访问器,则为可写属性,两个访问器均存在时,为既可读又可写属性。

69、接口声明主要由几部分组成,各部分的作用是什么?

参考答案:接口声明由访问修饰符、interface 关键字以及接口名。其中:接口的访问修饰符有new、public、protected、internal和private,各个修饰符都代表不同的访问权限。new修饰符仅允许在类中定义的接口内使用,它指定接口隐藏同名的继承成员。public、protected、private和internal修饰符用于控制接口的可访问性,与前面所介绍的意义相同。接口名称通常以I开头。要实现该接口,必须有类继承该接口。

70、概述三层结构体系

参考答案:三层结构体系,就是在客户端和数据库之间加入了一个中间层,三层是指逻辑上的三层,而不是物理上的三层。中间层通常包括业务逻辑层、数据访问层、数据对象模型层。常说三层结构体系就是将整个业务应用划分为:1、表现层(展现给用户的界面);2、业务逻辑层(按功能对业务逻辑进行处理后进行数据层操作);3、数据访问层(直接操作数据库,对数据的增添改查等)。

71、C#中的重载是什么

参考答案:重载是指在同一个作用域内,定义多个名称相同但参数个数、类型或顺序不同的方法。

72、DataGridView.DataSource 可以连接什么的数据源

参考答案:DataTabe、DataView、DataSet、DataViewManager等任何实现IListSource或IList接口的数据源。

73、C# 中 extern的作用是什么

参考答案:extern 是C#语言中的修饰符,用于声明在外部实现的方法。常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 特性一起使用。extern 与 DllImport 特性一起使用时必须将方法声明为 static。

cs 复制代码
/// <summary>
/// 设置窗口区域
/// </summary>
/// <param name="hwnd">设置区域的窗口句柄</param>
/// <param name="hRgn">设置的区域</param>
/// <param name="bRedraw">是否立即重画窗口</param>
/// <returns></returns>
[DllImport("user32.dll")]
public static extern int SetWindowRgn(IntPtr hwnd, int hRgn, Boolean bRedraw);

74、C# 中 params 的作用是什么

参考答案:params 是C#语言中的关键字,用于指定采用数目可变的参数的方法参数。方法参数只能出现一次并且在其后不能再有参数定义。

cs 复制代码
/// <summary>
/// 
/// </summary>
/// <param name="listItem"></param>
/// <returns></returns>
public List<string> GetList(params string[] listItem)
{
    List<string> list = new List<string>();
    for (int i = 0; i < listItem.Length; i++)
    {
       list.Add(listItem[i]);
    }
    return list;
}

75、私有成员会被继承吗

参考答案:继承后子类可以拥有父类所有的成员,也包括私有(private)成员,但子类访问不了。

76、C#中的数组有没有Length()这个方法?string是否有这个方法?

参考答案:数组和字符串都有 Length 属性,而不是Length() 方法。

cs 复制代码
int[] intArray = new int[]{1, 2, 3, 4, 5};
// 获取数组长度
int length = intArray.Length;

string sayContent = "Hello World";
// 获取字符长度
length = sayContent.Length;

77、概述ORM的原理

参考答案:ORM是对象关系映射,用于实现数据库中的关系数据和内存中的对象之间的映射。其原理是利用反射配置将对象和数据库表映射。

78、编程遍历窗体上所有TextBox控件并将其Text属性赋值为string.Empty?

参考答案:

cs 复制代码
foreach(System.Windows.Forms.Control control in this.Controls)
{
  if (control is System.Windows.Forms.TextBox)
  {
    System.Windows.Forms.TextBox textBox =(System.Windows.Forms.TextBox)control;
    textBox.Text = String.Empty;
  }
}

79、abstract 可以和 virtual 或 override 一起使用吗?

参考答案:abstract 修饰符不可以和 static、virtual 、 override 修饰符一起使用

80、什么是泛型

参考答案:泛型是指在编写类或方法时延迟指定数据类型,直到实际使用时才进行指定,达到同一个类或方法处理不同数据的技术。

81、命名空间System.Data的作用

参考答案:System.Data提供对 ADO.NET 体系结构的类的访问权限。

82、object是C#的关键字吗?请指出C#中有哪些类型关键字,如int、float。

参考答案:object是C#的关键字,类型关键字有object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、bool。

83、指出C#中是否有下列关键字?virtual、sealed、abstract、import、as、in、goto、final、Const、signed、String

参考答案:没有的关键字:import、final、Const(const才是C#的关键字)、signed、String(string 才是C#的关键字)

84、指出delegate(委托)、enum、int[]、string 分别属于引用类型还是值类型

参考答案:delegate引用类型、enum值类型、int[]引用类型、string引用类型。

85、如何在C#中实现继承?C#支持多重继承吗?

参考答案:在类名后加上一个冒号,再加上基类的名称。C#不支持多重继承。可以用接口来实现。

cs 复制代码
//基类
public class Animal
{   
}
// 派生类
public class Dog:Animal
{ 
}

86、能够将非静态的方法覆写成静态方法吗?

参考答案:不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。

87、virtual、sealed、override和abstract的区别

参考答案:virtual是声明虚方法的关键字,方法可以被重写;sealed是密封类的关键字, sealed的类不可被继承;override重写基类的方法;abstract声明抽象类或方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。

88、C#启动线程是用Run()还是Start()

参考答案:Start是Thread 类启动线程的方法;而Run是Tasks 类启动任务的方法,

cs 复制代码
Thread thread = new Thread(ThreadExeMethod);
thread.Start();
/// <summary>
/// 
/// </summary>
static void ThreadExeMethod()
{
  Console.WriteLine("线程调用方法");
}

89、两个对象值相同x.Equals(y)==true,但却可有不同的Hashcode,这句话对不对?

参考答案:不对,它们的Hashcode是相同的。

cs 复制代码
string x = "Hello";
string y = "Hello";

if (x.Equals(y)) 
{
    Console.WriteLine(string.Format("x的Hascode={0}",x.GetHashCode()));
    Console.WriteLine(string.Format("y的Hascode={0}", y.GetHashCode()));
}

输出:
x的Hascode=-327378614
y的Hascode=-327378614

90、软件开发过程一般有几个阶段?

参考答案:软件开发过程一般可分为:可行性研究、需求分析、概要设计、详细设计、实现、测试、使用与维护。

小结

以上是30个C#面试题目,后续继续列举一些问题及提供参考答案,敬请关注后续内容。

相关推荐
傻啦嘿哟8 分钟前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
大数据编程之光12 分钟前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
初九之潜龙勿用13 分钟前
C#校验画布签名图片是否为空白
开发语言·ui·c#·.net
Dola_Pan30 分钟前
C语言:数组转换指针的时机
c语言·开发语言·算法
ExiFengs30 分钟前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring
paj12345678931 分钟前
JDK1.8新增特性
java·开发语言
IT古董39 分钟前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
繁依Fanyi42 分钟前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
湫ccc1 小时前
《Python基础》之pip换国内镜像源
开发语言·python·pip
fhvyxyci1 小时前
【C++之STL】摸清 string 的模拟实现(下)
开发语言·c++·string