.Net/C# 面试题总结

时间:2020-04-29 11:27:42   收藏:0   阅读:126

.Net 面试题汇总#

一、基础概念

1. 简述 private, protected, public, internal 修饰符的访问权限

2. 列举ASP.NET 页面之间传递值的几种方式

3. C#中的委托是什么? 事件是不是一种委托?

委托和事件的区别:

4.实现多态过程中,overload重载与override重写的区别?

5.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

索引器简介

C#通过提供索引器,可以像处理数组一样处理对象。特别是属性,每一个元素都以一个get或set方法暴露,索引器不单能索引数字(数组下标),
还能索引一些HashMap的字符串,所以通常来说,C# 中类的索引器通常只有一个,就是this,单也可以有无数个,只要你的参数列表不同就可以了,
索引器最大的好处是代码看起来很自然,很符合实际的思考模式。

微软范例:

class SampleCollection<T>
{
    private T[] arr = new T[100];
    //this关键字用于定义索引器
    public T this[int i]
    {
        get { return arr[i]; }
        set { arr[i] = value; }
    }
}

//使用索引器查找
class Program
{
    static void Main(string[] args)
    {
        SampleCollection<string> sampleCollection = new SampleCollection<string>();
        sampleCollection[0] = "Hellow world";
        Console.WriteLine(sampleCollection[0]);
    }
}

总结:

6.用.net 做B/S 结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

答:一般是用 MVC 模式分层,一般分为 3 层,数据访问层,业务层,表示层。

7.ADO.NET 中的 5 个对象分别是什么?

总结:

8.属性和public字段的区别是什么?调用set方法为一个属性设值,然后用get方法读取出来的值一定是set进去的吗?

9.什么是装箱(boxing)和拆箱(unboxing)?

Object是引用类型,但是它的子类Int32不能去Object能去的“ 要求必须是引用类型 ”的地方,违反了继承原则,所以要把Int32 装在Object中才能传递。

拆箱和装箱必须涉及了解CTS:

10.CTS、CLS、CLR 分别是什么?

11..net中,类(class)与结构(struct)的异同?

12.堆(Heap)和栈(Stack)的区别?

13.能用foreach遍历访问的对象的要求是什么?

14.GC 是什么?为什么要有GC?

15.值类型和引用类型的区别

16.C# 中接口和类有什么区别?

不同点:

相同点:

基础知识:接口只能定义方法(只能定义行为,不能定义实现也就是字段),因为事件、索引器、属性本质上都是方法,所以接口中也可以定义事件、索引器、属性。

17. 抽象类(abstract class)和接口(interface)有什么区别?

相同点:

不同点

18.是否可以继承String类?

19.int、DateTime、string 是否可以为null?

如下:

int i1 = null;// int是值类型,值类型不能为null,会报错
int? i2 = null;// 值类型后面加 ? 就变成了可空类型。
int i3 = i2;//(报错) 把可空类型赋值给值类型,一定会报错。
int i4 = (int)i2; //可以显示转换,由程序员保证 赋值不能为空。
int? i5 = i4;// 一定会成功,因为将值类型赋值给可空类型是允许的。
//注意:
int? 翻译生成.Net 的Nullable<int>,CTS 

注意:

int? 是微软的一个语法糖,是一种int没有直接关系的Nullable 类型。

Nullable<int> d1 = new Nullable<int>();//int? d1=null;
Nullable<int> d2 = new Nullable<int>(3);//int? d2=3;
Console.WriteLine(d1==null);

20.using关键字有什么用?什么是IDisposable?

21.XML 与 HTML 的主要区别

切记: XML是用来 存储和传输 数据的,HTML是用来显示数据

22. string str = null 与 string str = "" 说明其中的区别。

string str = null //是不给它分配内存空间,而string str = \"\" 给他分配长度为空字符串的内存空间。
string str = null //没有string对象,string str = "" 有一个字符串对象。
例如:
string s3 = string.Empty; // 反编译发现,string.Empty就是在类构造函数中 Empty = "";

23、写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。

答:解1: select top 10 * from A where id not in (select top 30 id from A)

演变步骤:
1)select top 30 id from T_FilterWords--取前条
2)select * from T_FilterWords
where id not in (select top 30 id from T_FilterWords)--取id不等于前三十条的

--也就是把前条排除在外

3)select top 10 * from T_FilterWords    
where id not in (select top 30 id from T_FilterWords)

--取把前条排除在外的前条,也就是-40条

解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

24、.Net中,所有可以被序列化的类都标记为: [serializable]

25.什么是code-Behind 技术?

26.接口是一种类型,在接口中可以声明(方法、属性、索引器和事件),但不可以声明 公有的域私有的成员变量

27.在ADO.NET 中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面描述错误的是(C

28、StringBuilder 和 String 的区别?

详解:

29.请叙述属性与索引器的区别:

属性 索引器
通过名称标识 通过签名标识
通过简单名称或成员来访问 通过元素来访问
可以为静态成员或实例 必须为实例成员
属性的get访问器没有参数 索引器的 get 访问器具有与索引器相同的形参表。
属性的set访问器包含隐式value参数 除了value 参数外,索引器的set访问器还具有与索引器相同的形参表

31.在什么情况下,会用到虚方法(virtual)?它与接口有什么不同?

32. DataReader 和 DataSet 的区别?

33.public static const int A = 1;这段代码有错误么?

34.传入某个属性的set方法的隐含参数的名称是什么?

35.C# 支持多继承吗?

36. C# 中所有对象的共同基类是什么?

37. 通过超链接怎么传递中文参数?

38.string、String;int、Int32;Boolean、bool的区别

39.Server.Transfer和Response.Redirect的区别是什么?(常考)

Server.Transfer Response.Redirect
仅是服务器中 控制权的转向 , 在客户端浏览器地址栏中不会显示出转向后的地址 是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址
是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 这个过程中浏览器和Web服务器之间经过了一次交互。 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求。这个过程中浏览器和Web服务器之间经过了两次交互
不可以转向外部网站 可以转向外部网站

40.不是说字符串是不可变的吗?string s = "abc"; s="123"; 不就变了吗?

41.是否可以从一个static方法内部发出对非static方法的调用?

42、说出一些常用的类、接口,请各举5个

常用的类 常用的接口
StreamReader、WebClient、Dictionary、StringBuilder、SqlConnection、FileStream、File、Regex、List IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary

43、编写一个单例(Singleton)类

44.什么是sql 注入?

如何防止SQL 注入攻击:

45、数据库三范式是什么?

46、post、get的区别(必考)

GET POST
get的参数会显示在浏览器地址栏中 post的参数不会显示在浏览器地址栏中
get提交点击刷新时,浏览器不会提示“是否重新提交” post 提交页面在点击刷新按钮时,浏览器一般会提示“是否重新提交”
用get的页面可以被搜索引擎抓取 用post则不可以
get 提交时,数据量通常比较小(2K),受限于网页地址长度 post提交数据量可以非常大
get 不可以进行文件提交 post 可以进行文件提交

常用http 状态码

47、.Net、ASP.Net、C#、VisualStudio之间的关系是什么?

48、AJAX解决什么问题?如何使用AJAX?AJAX有什么问题需要注意?项目中哪里用到了AJAX?

49、Application 、Cookie和 Session 两种会话有什么不同?

50.什么是受管制(托管)的代码?

注意: Visual Basic .NET和C#只能产生托管代码
Visual C++可以创建非托管程序。

51.在.net中,配件的意思是?

52.SqlServer 服务器中,给定表table1 中有两个字段ID、LastUpdateDate,ID 表示更新的事物号,LastUpdateDate 表示更新时的服务器时间,请使用一句SQL 语句获取最后更新的事物号。

Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)

53.String s = new String("xyz");创建了几个String Object?

解释:

54.如何处理几十万条并发数据?

55.成员变量和成员函数前加static的作用?

56.请给出GAC 的含义

57.什么是SOAP,有哪些应用?

58.C# 中Property 和 Property 区别?各有什么用处?这种机制的好处在哪里?

在C#中有两个属性,分别为PropertyAttribute

Attribute就是干这事的。它允许你将信息与你定义的C#类型相关联,作为类型的标注。这些信息是任意的,就是说,它不是由语言本身决定的,你可以随意建立和关联任何类型的任何信息。你可以作用属性定义设计时信息和运行时信息,甚至是运行时的行为特征。关键在于这些信息不仅可以被用户取出来作为一种类型的标注,它更可以被编译器所识别,作为编译时的一种附属条件参加程序的编译。定义属性:属性实际上是一个派生自System.Attribute基类的类。System.Attribute类含有几个用于访问和检查自定义属性的方法。尽管你有权将任何类定义为属性,但是按照惯例来说,从System.Attribute派生类是有意义的。

59.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

60.&&& 的区别?

61.HasMap 和Hashtable 的区别?

62.<%# %><% %> 有什么区别?

63. .net的Remoting 的工作原理是什么?

64.启动一个线程是用run()还是start()?

65.sleep() 和 wait() 有什么区别?

66.数组有没有length() 方法? String有没有length() 方法?

67.UDP连接和TCP连接的异同。

68.ref 和 out 的区别?

69.const 和readonly 的区别?

常量分为:

例如:静态常量const声明,编译时就指定,高效、不消耗内存。

	const double pi = 3.1415926;//初始化声明时赋值,编译时就解析,声明后不能改变常量值
	static void Main(string[] args)
	{
		Console.WriteLine(pi);
	}

例如:动态常量readonly声明,可以先不指定初值,而可以在构造函数中延迟指定

	class Person
	{
	    public readonly string Name;
	    public Person(string name)
	    {
	        this.Name = name;// 在构造函数中给readonly 常量赋值,一旦赋值,就不能再次改变
	    }
	}

70.什么是链式委托?

71.C#中的 lock 关键字有何作用

72.下面这段代码有错误吗?

switch(i){
    case(): 答://case()条件不能为空
    CaseZero();
    break;
    case1:
    CaseOne();
    break;
    case2:
    dufault; 答://wrong,格式不正确
    CaseTwo();
    break;
}

73.char和varchar和nvarchar的区别?必考

注意:如果包含特殊字符和中文,建议使用nvarchar

74.常用字符集:

75.Main 函数是什么?在程序中使用Main函数有什么需要注意的地方?

76.值类型的默认值是什么?(情况一:字段或全局静态变量;情况二:局部变量)

77.声明一个变量时在内存中做了什么?初始化一个变量时又在内存中做了什么?

初始化时:

78.new关键字能做的事情?

79.数组一旦创建后,能不能修改数组长度?

80.类和对象的关系?

81.创建一个类的对象时,在内存中做了什么?例如 Person p = new Person();

82.为什么要有构造函数呢?

83.类的命名规则是什么

84. this关键字在方法中使用,它代表什么?

85.值类型变量初始化(内存分配)?(两种情况:一是类的成员变量,二是:方法的局部变量)

86.什么是里氏替换原则?

SOLID 原则(面向对象的五大原则)

87.子类和父类之间的转换?

88、is操作符和 as 操作符的区别是什么?

注意: is 和 as 都不会抛出异常。

二、.Net Core 相关#

1、什么是.net core?

2、.net core 有哪些好的功能?

3、.net core跟 .net比,有哪些更好的地方?

4、什么是meta packages?

5、.net core 应用能跟.net 4.x架构一起工作吗?

6、什么是dot net core的startup class?

7、Startup class的config service方法有什么作用?

8、startup class的configure方法有什么作用?

9、什么是中间件?

10、application builder的 use 和 run 方法有什么区别?

11、dot net core 管道里面的map拓展有什么作用?

12、dot net core里面的路径是如何处理的?

13、如何在dot net core中激活session功能?

14、dot net core工程里面有多少个工程文件?

15、什么是dot net core里面的tag helper?

16、如何使tag helper在元素这一层上失效?

17、什么是Razor页面?

18、如何在Razor页面中实现数据模型绑定?

19、 如何在controller中注入service?

20、描述一下依赖注入后的服务生命周期?

原文:https://www.cnblogs.com/vpersie2008/p/12800748.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!