C# .NET面试题(100道面试题)

1、 class和struct的区别?

Class可以被实例化,属于引用类型
Struct属于值类型

2、 C#中类成员的访问修饰符有哪些?

private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一程序集内可以访问。

3、 面向对象的三大特征是什么?/面向过程和面向对象的区别

封装,继承,多态;
面向过程和面向对象都是解决问题的逻辑方法,分析问题既可以用面向对象的方法 来思考,也可以用面向过程方法来解决,但两者还是有一定区别
面向过程:是分析问题并解决问题所需要的步骤,强调是解决问题的步骤。可以先定义多个函数,在使用的时候逐步调用函数即可
面向对象:是把问题分解成多个对象,强调的是解决问题的行为表现

4、 抽象类和接口的区别?接口支持多继承;抽象类不能实现多继承。
接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
接口是一组行为规范;抽象类是一个不完全的类
接口可以用于支持回调;抽象类不能实现回调,因为继承不支持
接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法
接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
5、 接口可以包含哪些成员?
接口可以包含属性、方法、索引指示器和事件,但不能包含常量、域、操作符、构造函数和析构
函数,而且也不能包含任何静态成员
6、 什么是装箱和拆箱?
从值类型转换到引用类型装箱。从引用类型转换到值类型拆箱
7、 C#中,哪些类型是值类型?哪些类型是引用类型?(数据类型)
C#的引用类型包括:数组、委托、接口、object、字符串、用户定义的类。
C#的值类型包括:数值类型、结构体、bool型、枚举、可空类型、用户定义的结构体。
8、 值类型和引用类型的区别?值类型:占用空间固定、保存与复制的是值本身、使用typeof检测数据的类型、基本类型数据是值类型
引用类型:占用空间不固定、保存与复制的是指向对象的一个指针、使用instanceof检测数据类型、使用new()方法构造出的对象是引用型
9、 C#中的基本数据类型有哪些?值类型:
有符号整数(由小到大):sbyte、short、int、long 无符号整数(由小到大):byte、ushort、uint、ulong 浮点型:float、double、decimal 布尔型:bool
字符型:char 引用类型:
string、object

10、 重写和重载的区别?方法的override和overload有什么区别?
重载:同类同名不同参,属于编译时多态。重载是在一个类中定义多个方法名相同的方法,表示一个行为有多种实现方式重写:同名同参不同类,属于运行时多态。重写是用子类的方法来重写父类的方法,表示相同的方法在父类和子类中具有差异性

11、 构造函数是否可以被继承?是否可以被重写?
构造函数不可以继承,因此不能被重写,但可以被重载
12、 C#中,运算符“?”和“??”的区别是什么?

int? x = null;//定义可空类型变量
i=3?2:5 //还可为三元运算符

int? y = x ?? 1000;//使用合并运算符,当变量x为null时,预设赋值1000 答案链接 https://www.cnblogs.com/xpvincent/p/10224087.html
13、 C#中,用const和readonly修饰的字段有什么区别?

readonly (只读)和const(常量)都是用来标示常量的。
初始化赋值不同。
const修饰的常量必须在声明的同时赋值

14、 C#中,new有几种用法?
用于创建对象和调用构造函数。
用于创建匿名类型的实例。
在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。

15、 C#中,ref和out在修饰方法参数时有什么区别?
ref和out都可以实现将一个指定的参数按照引用进行传递:
ref参数在传入方法之前必须进行初始化;而out参数在传入方法之前可以不用初始化。
ref参数在方法内部可以直接使用;而out参数在方法内部不能直接使用。
ref参数在方法内部可以使用也可以不使用;而out参数在方法返回之前必须对其赋值。

16、 C#中,using有几种用法? using指令,即引用命名空间。
using 定义对象的使用范围,即时释放对象。
using别名(using 别名=包括详细命名空间信息的具体的类型)
答案链接:https://www.zhihu.com/question/350014235/answer/852151327
17、 C#中,&和&&,|和||有什么区别?
&:不管前面的条件是否成立,后面的条件依旧会判断
&&:前面的条件不成立,后面的条件就不会判断
| 和 || 同上
18、 C#中,is和as有什么区别?
在C#中,is是用来判断类型A能否转化为类型B,一般用来作有继承关系的父类与子类是
否可以相互转化的判断。
而as是将类型A转化为类型B,一般也是用来做子类与父类的转换。
19、 什么是委托?事件跟委托是什么关系?
委托是一种方法容器,里面可以装载若干个方法引用地址,调用委托,就相当于同时调用了该容器内的所有方法。 委托可以将方法作为参数传递给方法.委托主要用来动态调用方法的。事件基于委托,事件的本质是委托字段的包装器,对委托字段的访问起限制作用,
事件隐藏了委托实例的大部分功能,仅暴露添加和移除事件处理器的功能。

20、 ADO.NET中访问数据库的基本步骤是什么?
Connection con=new Connection(“连接字符串”);//创建连接对象 con.Open();//打开连接对象
21、 ADO.NET中,DataSet和DataReader的区别是什么?
DataSet(断开式的):数据集,表示内存中的“数据库”。DataSet在从数据库中读取数据时是“面向非连接的”,即DataSet在读取数据的那一刻会与数据库进行连接,然后会一次性把数据库中所有的表以及数据读取到内存中,然后便断开数据库连接。
DataReader(连接式的):数据读取器。DataReader在从数据库中读取数据时是“面向连接的”,即DataReader在读取数据时是从数据库中一行一行读取,每次只会从数据库中读取一行数据(类似于数据库游标的行为),直到读完最后一行之后,才断开数据库连接。在整个读取的过程中,必须保持与数据库的连接处于打开状态。

22、 ADO.NET中常用对象有哪些?
Connection,Comand,DataAdapter,DataSet,DataReader 答案链接:https://wenwen.sogou.com/z/q729164703.htm
23、 Server.Transfer与Response.Redirect有什么区别?
Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX 页面,调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个
ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。
Response.Redirect则是客户端第一次请求服务器返回状态代码302及新URL,客户端再次请求新URL,服务器再返回新页面,比Server.Transfer多一次应答
24、 ASP.NET 中页面之间传递值的几种方式? session cookie
Application
Request.QueryString
25、 ASP.NET中调用Web Service的方法有哪些?
WebService的访问形式主要有:SOAP调用、XMLHTTP POST、GET调用、
MicroSoft.XMLDOMC调用、webbehavior.htc调用
地址:https://www.cnblogs.com/fengchengjushi/p/3358291.html
26、 向服务器发送请求有几种方式?
Post;Get;
1、 get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;

2、 在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
案例:一般情况下,登录的时候都是用的POST传输,涉及到密码传输,而页面查询的时候,如文章id查询文章,用get 地址栏的链接为:article.php?id=11,用post查询地址栏链接为:article.php, 不会将传输的数据展现出来。 27、Web Service有哪些优点?
Web Service是基于XML的,与具体的语言和平台无关,故可以实现跨平台、跨语言通信。
Web Service是采用SOAP协议(简单对象访问协议)进行通信的,该协议基于HTTP协议,故可以实现跨防火墙通信。
Web Service可以很容易的实现分布式的应用程序。

以一种最简单的方式实现异构系统之间的互通信和数据交换,且跨平台。用WebService则可以低成本的实现
WebService实现的技术难度要比CORBA和DCOM小得多

28、 ASP.NET缓存有几种实现方式?基于页面级缓存;基于数据源的缓存;自定义缓存 ;分布式缓存;
答案链接:https://www.cnblogs.com/fly-kw/archive/2012/02/26/2369061.html
29、 ASP.NET中常见文件的后缀名有哪些?
.sln:解决方案文件
.ashx 一般处理程序 .aspx webfrom
.ascx 用户控件
30、 ASP.NET中的六大对象有哪些?
1.Response
2.Request
3.Server
4.Application
5.Session
6.Cookie
31、 jquery中实现Ajax请求的常用方法有哪些?有什么区别?用jquery 的 load() 方法实现ajax请求用jquery 的 post() ,get() 方法用jquery 的 Ajax() 方法,
32、 手动(原生)实现Ajax请求的步骤是什么?首先,创建一个 XMLHttpRequest 对象。其次,创建一个回调函数,用于在服务器返回响应后执行操作第三步,打开请求。
第四步,发送请求
33、 MVC中的各个字母分别代表什么含义?在MVC框架中起什么作用?
M(Model):模型,程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
V(View):视图, 界面设计人员进行图形界面设计。
C(Controller):控制器,负责转发请求,对请求进行处理。

34、 MVC请求的处理过程?

  1. DispatcherServlet 拦截 http 请求
    2.DispatcherServlet 通过请求信息和HandlerMapping配置信息获取处理器Handler
    3.HandlerAdapter 适配并调用 Handler
    4.HandlerAdapter 返回 ModelAndView(逻辑视图名+模型数据)给 DispatcherServlet
    5.ViewResolver 将逻辑视图名解析成真实视图对象 View
    6.View 对象对模型数据进行视图渲染
    7.返回 http 响应

35、 写出一条Sql语句: 取出表A中第31条到第40条记录(SQL Server, 以自动增长的
ID作为主键, 注意:ID可能不是连续的)。
select *from(select row_number() over(order by ID asc)as id1,*from 表
名)t where t.id1>30 and t.id1<=40
36、 请说出SQL Server中三种表连接的方式inner join、left join、right join的区别及对最终查询的结果的影响。
right join 的区别及对最终查询的结果的影响。
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为 NULL) right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录(以右表数据为基准,不足补为 NULL)
inner join(等值连接) 只返回两个表中联结字段相等的行(条件 on 之相等的数据)
37、 在SQL server中存储过程和函数的区别?
1.存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2.存储过程来可以返回参数,而函数只能返回值或者表对象。
3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用
38、 数据库索引是什么?有什么作用?
索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构
意义就是通过缩小一张表中需要查询的记录(行)的数目来加快搜索的速度。
39、 SQL Server中索引的分类及区别?主键索引、聚集索引、非聚集索引聚集索引和非聚集索引的区别
1.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
2.聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。
3.聚集索引查询数据速度快,插入数据速度慢;非聚集索引反之。
40、 什么是事务?它有哪些特性?
事务:所谓事务就是用户定义的一个数据库操作系列,这些操作要么全不做要么全做,是一个不可分割的工作单位。
事务有四个特性,分别是:原子性、一致性、隔离性、持续性
41、 SQL Server中,触发器分为哪几种?分别代表什么含义?
1 、 DML 触发器,当数 据库中表中的数据发生变化时,包括 insert,update,delete 任意操作,如果对该表写了对应的 DML 触发器,那么该触发器自动执行。
2、 DDL 触发器,是 Sql Server2005 新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。
3、 登录触发器,登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。
42、 在SQL Server中union和union all的区别?
⒈UNION 和 UNION ALL 关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
⒉对重复结果的处理:UNION 在进行表链接后会筛选掉重复的数据,UNION ALL 不会去除重复的数据。
⒊对排序的处理:UNION 将会按照字段的顺序进行排序;UNION ALL 只是简单的将两个结果合并后就返回。
⒋从效率上说,UNION ALL 要比 UNION 快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序的话,那么就使用 UNION ALL。
43、 SQL Server中,有一张学生成绩表,有三个字段:学生ID,学生姓名,考试成绩。如何查询出成绩排在前三名的学生?(注意:可能会有并列名次)
select * from te where fenshu in (select top 3 fenshu from te group by fenshu order by fenshu desc)order by fenshu desc
44、 SQL Server中排名函数有哪些?以及它们的区别?
ROW_NUMBER、RANK、DENSE_RANK、NTILE
ROW_NUMBER 函数实际上是一个序列,每个分组内都会创建一个序列,序列从
1 开始,按照顺序依次 +1 递增。
RANK 函数用于排名时,不会返回连续的整数。RANK 函数的语法是:在分组内,按照特定的顺序排名,序号从 1 依次递增,排名函数以 tie 为单位,每个 tie 中的所有行的排名是相同的,排名可能是不连续的。
DENSE_RANK 函数用于排名时,会返回连续的整数。每个 tie 占用一个排名,每个 tie 中的所有行的排名是相同的。排名值是连续的
在每个分组中,NTILE 按照指定的顺序,把数据行分为 N 个小组(tile),NTILE 返回小组编号。在每个分组内,具有相同的小组编号的数据行,位于同一个小组。
45、 SQL Server中,向一个表中插入了新数据,如何得到自增长字段的当前值?
1.select SCOPE_IDENTITY() as id
2.select IDENT_CURRENT (‘Tb_People’)
3.select MAX(id) from Tb_People
46、 使用递归计算1~100之间整数的和
function getSum(n) {
if (n === 1) {
return 1;
}
//返回 n 和前 n-1 的和相加
return n + getSum(n - 1);
}
var s = getSum(100);
console.log(s);

47、 实现一个冒泡排序
int [] array = new int ; int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ; array[i] = array[j] ;
array[j] = temp ;
}
}
}
48、 JSON对象与JavaScript中字面量对象有什么不同?
1.json 没有声明变量(json 中没有变量的概念)
2.没有末尾的分号(因为这不是 javascript 语句,所有不需要分号)
3.json 对象的属性必须加双引号,js 中可加可不加
49、 CSS全称是什么?有什么用途?
①Cascading Style Sheet
②可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。
50、 在一般处理程序中怎样使用session?一般处理程序实现 ireadonlysessionstate 即可
51、 简述jQuery.ajax方法的原理

  1. 通过 new XMLHttpRequest 或其它的形式(指 IE)生成 ajax 的对象 xhr。
  2. 通过 xhr.open(type, url, async, username, password)的形式建立一个连接。
  3. 通过setRequestHeader 设定 xhr 的请求头部(request header)。
  4. 通过send(data)请求服务器端的数据。
  5. 执行在 xhr 上注册的 onreadystatechange 回调处理返回数据。

52、string与StringBuilder的区别

  1. string 对象时恒定不变的,stringBuider 对象表示的字符串是可变的。 stringBuilder 是.net 提供的动态创建 string 的高效方式,以克服 string 对象恒定性带来的性能影响。
  2. 对于简单的字符串连接操作,在性能上 stringBuilder 并不一定总是优于 string。因为 stringBuider 对象创建代价较大,在字符串目标连接较少的情况下,过度滥用 stringBuilder 会导致性能的浪费,只有大量的或者无法预知次数的字符串操作,才考虑 stringBuilder 来实现。事实上,一般连接次数设置 100 次以内,根本看不出两者的性能差别。

53、 ADO.NET中如何避免SQL注入漏洞的?
利用 sql 关键字对网站进行攻击。过滤关键字’等
54、 在ASP.NET中ispostback的含义与作用
指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。
55、 CSS中如何设置字体颜色与字体大小、字体
Font-size,Font-family,color

方法一、直接使用 font 标签:123 
方法二、使用 p 标签

123

方法三、使用 span 标签

56、 在< a >标签中target的作用

< a > 标签的 target 属性规定在何处打开链接文档。
分为4种,_blank,_self,_parent,_top

_blank 在新窗口中打开被链接文档。
_self 默认。在相同的框架中打开被链接文档。
_parent 在父框架集中打开被链接文档。
_top 在整个窗口中打开被链接文档。

57、 请写出input标签中type属性的7中或以上的属性值
值 描述

button 定义可点击按钮(多数情况下,用于通过 JavaScript 启动脚本)。
checkbox 定义复选框。
file 定义输入字段和 "浏览"按钮,供文件上传。
hidden 定义隐藏的输入字段。
image 定义图像形式的提交按钮。
password 定义密码字段。该字段中的字符被掩码。
radio 定义单选按钮。
reset 定义重置按钮。重置按钮会清除表单中的所有数据。
submit 定义提交按钮。提交按钮会把表单数据发送到服务器。
text 定义单行的输入字段,用户可在其中输入文本。默认宽度为 20 个字符。

58、 简述三层架构层与层之间的关系、以及优缺点?
表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)
DAL–>BLL–>UI
优点:
1、可以降低层与层之间的依赖;
2、有利于标准化;
3、利于各层逻辑的复用。
缺点:
1、 降低了系统的性能。
2、 有时会导致级联的修改。
3、 增加了代码量,增加了工作量

59、 在c#中,反射是什么?处理反射相关的namespace是什么?反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获 得.NET 中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。

System.Reflection命名空间中的类以及System.Type,
60、 a=100,b=200在不声明第三方变量的情况下,如何交换两个变量的值?
利用位运算 ^ (异或):异或的特点是:一个数据a与另一个数据b做异或运算之后,变成了另外一个数c,再读取这个数据就不是原来的数据了,我们如果再拿这个数据c和数据b异或一次,这个数据又变回原来的数据a。

static void Main(string[] args){   
int a = 100; 
int b= 200; 
a = a ^ b;  
b = a ^ b; 
a = a ^ b; 
Console.WriteLine("a={0};b={1}", a, b); 
} 

61、Linux中修改目录权限的指令是什么?修改文件权限命令chmod、chgrp、chown 62、在.net中接口、类、抽象类有什么异同?抽象类:
(1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法
(2) 抽象类不能被实例化
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类接口:接口不能被实例化接口只能包含方法声明接口的成员包括方法、属性、索引器、事件接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员。
相同点:都可以被继承都不能被实例化都可以包含方法声明派生类必须实现未实现的方法不同点:抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。
抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范接口可以被多重实现,抽象类只能被单一继承接口可以用于支持回调,而继承并不具备这个特点
63、请写出单例设计模式两种或以上的实现方式
饿汉模式:

class Single 
{     
private static Single s=null;     
private Single(){ } 
public static synchronized Single getInstance() 
{ 
	if(s==null)	
		s=new Single();        
    return s; 
    } 
} 

64、 请写出.net中两种常用内置委托以及它们的异同
Func和Action,
Func委托必须有且只有一个返回值
Action泛型委托没有返回值,只能带入参数
65、 简述jQuery中选择器的几种类型
9种:基本选择器,层次选择器,基本过滤器选择器,内容过滤器选择器,可见性过滤器选
择器,属性过滤器选择器,子元素过滤器选择器,表单选择器,表单过滤器选择器
66、 写出c#中4中循环结构语法
while循环,do while循环,for循环,foreach循环
67、 简述Ajax是什么?为什么要使用Ajax?
Ajax 是指一种创建交互式网页应用的网页开发技术。可以在不刷新页面的情况下更新页面内容。
68、 你使用过什么源码管理工具?简单说一下使用步骤和方法
Github,下载GitHub,使用密钥连接仓库,然后上传文件到本地仓库,然后提交本地仓库到
GitHub仓库
69、 写出jQuery两种入口函数第一种:

$(document).ready(function () 
    { 
        console.log("抗击疫情,武汉加油,中国加油"); 
    }); 

第二种:

$(function () 
    { 
        console.log("抗击疫情,武汉加油,中国加油"); 
    }); 

70、 JavaScript有哪几种基本数据类型?
JavaScript中有五种基本数据类型(也叫做简单数据类型)分别为:undefined、null、bolean、 number、string;另外还含有一种复杂的数据类型:object.
71、 行内元素和块级元素的区别?如何相互转换?区别:
1.行内元素与块级元素直观上的区别:行内元素会在一条直线上排列,都是同一行的,水平方向排列。
块级元素各占据一行,垂直方向排列。块级元素从新行开始结束接着一个断行。
2.块级元素可以包含行内元素和块级元素。行内元素不能包含块级元素。
3.行内元素与块级元素属性的不同,主要是盒模型属性上:
行内元素设置width无效,height无效(可以设置line-height),margin上下无效,padding 上下无效
如何转换:display
块级元素默认display:block;行内非替换元素(a,span)默认为display:inline;;行内替换元素(input)默认为display:inline-block; display:none;不显示该元素,也不会保留该元素原先占有的文档流位置。
display:block;转换为块级元素。
display:inline;转换为行内元素。
display:inline-block;转换为行内块级元素。
72、 ExecuteScalar 和 ExecuteNonQuery 的区别
ExecuteNonQuery:返回受影响的行数。
ExecuteScalar:返回结果集的第一行第一列,忽略其他行。
73、 进程和线程分别该怎么理解?进程:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,一个进程中,至少要有一个线程线程:线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率,同一个进程中的多个线程可以并发执行。
74、 能用foreach遍历访问的对象需要实现?
IEnumerable接口或声明GetEnumerator方法的类型注:不一定要实现IEnumerable接口,但一定要实现GetEnumrator方法。
75、 用HTML5、CSS3如何画一个圆?写一个高度和宽度一样的正方形,用css设置border-radius的值为长和宽的一半值。
76、 写出4中HTTP状态以及它们代表的含义
202(Accepted),服务器已接受请求,但尚未处理。
404(Not-Found),请求的资源没有被找到。
500(Interval Server Error),服务器内部错误。
200(OK),表示请求成功,请求所希望的响应头或数据体将随此响应返回。
77、 谈谈SQL中视图的概念、以及它的有点
概念:
1、 视图是表?没错,但是是一张虚拟表,视图的字段是由我们自定义的,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。
2、 使用视图的优势?视图可以将多个复杂关联表,提取出我们需要的信息,优化查询速度。
优点:第一点:使用视图,可以定制用户数据,聚焦特定的数据。
第二点:使用视图,可以简化数据操作。
第三点:使用视图,基表中的数据就有了一定的安全性
第四点:可以合并分离的数据,创建分区视图
78、 在c#中“==”和equals 的区别?
首先、==是判断两个变量或实例是不是指向同一个内存空间 而 equals 是判断两个变量或实例所指向的内存空间的值是不是相同 其次、是指对内存地址进行比较 equals()是对字符串的内容进行比较 最后、指引用是否相同 equals()指的是值是否相同 另外,值相同,地址不一定相同,而地址相同,值一定相同,即用equals比较的值为true,用进行比较就不一定返回true,而用比较为true,那么用equals比较就一定为true。 顺便提一句: == 是一个运算符。equals则是string对象的方法,可以.(点)出来。
79、 Redis支持哪些数据类型? string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
80、 请写出c#中所有数据类型
C# .NET面试题(100道面试题)_第1张图片

81、 UDP和TCP连接有和异同?
TCP面向连接,而UDP是无连接的;
TCP提供的服务更可靠;
TCP面向字节流,UDP则是面向报文的,与TCP连接只能是点到点相比,UDP连接方式更加多样化,另外,UDP的首部开销
8个字节比TCP的20字节要小。
82、 在c#中sleep() 和 wait() 有什么区别?
①. sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。
而wait是Object类的方法,它是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。
②. Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。
而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其他的线程可以访问。
③. 线程执行wait方法时,需要另一个线程调用notify进行唤醒。
而sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒。
83、 堆和栈的区别?
1.申请方式的不同。栈由系统自动分配,而堆是人为申请开辟;
2.申请大小的不同。栈获得的空间较小,而堆获得的空间较大;
3.申请效率的不同。栈由系统自动分配,速度较快,而堆一般速度比较慢;
4.存储内容的不同。栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其中静态变量是不入栈的。而堆一般是在头部用一个字节存放堆的大小,堆中的具体内容是人为安排;
5.底层不同。栈是连续的空间,而堆是不连续的空间。
84、 什么是虚函数?什么是抽象函数?虚函数在继承类中必须有实现部分,抽象函数没有提供实现部分,虚函数是一种强制派生类覆盖的函数,否则继承类将不能被实例化。
85、 .net的错误处理机制是什么?
.net错误处理机制采用 try->catch->finally 结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
86、 解释ADO。NET中的使用Connection 类的CLOSE()和DISPOSE()的区别?
sqlconnection的close和dispose实际是做的同一件事,唯一的区别 是Dispose方法清空了connectionString,即设置为了null. 87、深度为6(根的层次为1)的二叉树至多有几个节点、为什么?
63个,因为根的层次为1时共有2^6-1 个节点,根的层次为-1时,有2^7-1个节点
88、说明C#中的方法声明参数关键字params,ref,out的意义及用法
1) params关键字,官方给出的解释为用于方法参数长度不定的情况。有时候不能确定一个方法的方法参数到底有多少个,可以使用params关键字来解决问题
2) ref关键字:使用引用类型参数,在方法中对参数所做的任何更改都将反应在该变量中
3) out 关键字:out 与ref相似但是out 无需进行初始化。
89、 什么是泛型?泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。
泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。
90、 简单描述Ihtttphandler和Ihttpmodule的区别和各自的作用?区别:
1.先后次序.先IHttpModule,后IHttpHandler. 注:Module要看你响应了哪个事件,一些事件是在Handler之前运行的,一些是在Handler之后运行的
2.对请求的处理上:
IHttpModule 是属于大小通吃类型,无论客户端请求的是什么文件,都会调用到它;例如 aspx,rar,html的请求.
IHttpHandler则属于挑食类型,只有ASP.net注册过的文件类型(例如aspx,asmx等等) 才会轮到调用它.
3.IHttpHandler按照你的请求 生成响应的内容,IHttpModule对请求进行预处理,如验证、修改、过滤等等,同时也可以对响应进行处理
91、 CTS、CLS、CLR分别作何解释?CLR 提供了.NET 的哪些功能?(中间语言编译器、JIT 等等)
CTS即通用类型系统,它定义了如何在.NET Framework运行库中声明、使用和管理类型,同时也是.NET Framework运行库支持跨语言集成的一个重要组成部分。
CLS 即公共语言规范,它是许多应用程序所需的一套基本语言功能
CLR 即公共语言运行库,是.NET Framework 的基础,可以将其看作一个在执行时管理代码的代理,它提供了内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。
功能:内存管理 版本发布 汇编指令

92、 什么是托管代码、非托管代码托管代码 (managed code)
由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
非托管代码 (unmanaged code)
在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。

93、 GC是什么? 为什么要有GC?
1.GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理.
2 .NET的GC机制有这样两个问题:首先,GC并不是能释放所有的资源。它不能自动释放非托管资源。
第二,GC并不是实时性的,这将会造成系统性能上的瓶颈和不确定性。
GC就是对“不可达“的对象进行回收,释放内存。

94、 什么是序列化?
序列化是将对象的状态信息转换为可以存储或传输的形式过程。

95、 写出input标签中type属性的7个或以上的属性值
Button点击按钮,checkbox复选框,hidden隐藏字段,image图像形式交按钮,password 定义密码字段,radio单选按钮,text文本字段。

96、 写出6个HTML5新增语义化标签

<article>定义文章
<nav>定义导航栏
<time>定义日期和时间
<footer>定义页脚
<header> 定义页眉。 
<article> 定义文章    
<aside> 定义文章的侧边栏 
<figure> 一组媒体对象以及文字  
<figcaption> 定义 figure 的标题 
<footer>定义页脚    
<header>定义页眉 

97、 在css中,解释块级元素、行内元素、行内块级元素的区别,以及如何互相转换
区别:块级元素:1.独自占据一整行 ,一般作为其他元素的容器,可以容纳块级元素和行内元素; 2.可以设置宽高,magin外边距,padding内边距 上下左右都有效;
行内元素:1.多个行内元素共占一行 2*.不可以设置宽高和margin上下;行内块元素:1.具有行内元素的特点(可以同行显示),还具有块级元素的特征(可以设置宽高)转换:
display:inline;转化为行内元素; display:block;转化为块状的元素;
display:inline-block; 转化为行内块元素。

98、 说说CSS三大特性
继承性( Inherited ):给父元素设置的属性,子孙元素也可以使用。
层叠性:CSS 处理冲突的一种能力 注意点:层叠性只有在多个选择器中选择同一个标签,然后又设置了相同的属性,才会发生层叠。
优先级:当多个选择器选择同一个标签,并且给同一个标签设置属性时,如何层叠由优先级来决定。

99、 在css3中,box-sizing常见值以及效果
content-box:默认标准盒模型,总宽=width+padding+border+margin border-box:IE标准,怪异盒模型,总宽=width+margin inherit:从父元素继承box-sizing属性 100、说说call()、apply()、bind()的作用与区别
作用:call()apply()接收两个参数,第一个是在其中运行函数的作用域,另一个是参数数组 bind()创建一个函数的实例,其this值会被绑定到传给bind()函数的值
区别:call()和apply()都会立即执行,而bind()会先创建一个函数实例,然后手动的去执行;它们都会继承传递给它们的函数的属性和方法

101、 在JavaScript中,说说什么是原型链
原型链是基于 proto 的。JavaScript 对象有一个指向一个原型对象的链

102、 JavaScript中,详细介绍数组对象中的slice()与splice()的用法 slice(start,end):从已有的数组中返回选定的元素。括号内有两个参数,第一个参数为 start,第二个参数为end。
splice(index,howmany,item1,item2…itemX):从数组中添加/删除项目,然后返回被删除的项目,括号内有3个参数部分。
会改变原始数组(操作的数组对象)

103、 写出JavaScript原生绑定事件兼容性写法
1.形如内联样式的时间绑定:
2.使用addEventlisener(event,fn,useCapture)这个方法其实有三个参数,最后一个参数代表是否使用事件捕获,true为使用事件捕获,false则为使用事件冒泡,默认使用事件冒泡。事件捕获是相对于事件冒泡的一种机制,事件冒泡是事件会随着子元素向上传播,而事件捕获则是事件沿着父元素向子元素传播,这也就衍生除了事件委托这一机制
3.使用elementObject.onXXX

104、 在css中,display有哪些值?说明他们的作用?
none 隐藏 block 块显示 inline 内嵌 table 表格显示
list-item 项目列表

105、 为什么要初始化CSS样式
每一个html标签都有其自己的默认样式,而css则可以改变html的样式。

106、 什么情况下会出现上下margin重合的问题兄弟级的块之间,margin这个属性上下边距,经常会发生重叠的情况,以数值大的为准,而不会相加。
父子级的块之间,子级的上下margin会与父级上下margin重叠,以数值大的为准,而不会相加

107、 jQuery 里的 each() 是什么函数?如何使用? each() 函数就像是 Java 里的一个 Iterator,它允许你遍历一个元素集合。你可以传一个函数给 each() 方法,被调用的 jQuery 对象会在其每个元素上执行传入的函数。有时这个问题会紧接着上面一个问题,举个例子,如何在 alert 框里显示所有选中项。我们可以用上面的选择器代码找出所有选中项,然后我们在 alert 框中用 each() 方法来一个个打印它们

$('[name=NameOfSelected] :selected').each(function(selected) {  
 alert($(selected).text()); 
}); 

其中 text() 方法返回选项的文本

108、 What is the difference between .bind(), .live(), and .delegate() in jQuery?
bind()函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均支持未来新添加元素的事件设置
live()函数和delegate()函数两者类似,但是live()函数在执行速度,灵活性和CSS选择器支持方面较delegate()差些

109、 JavaScript window.onload 事件和 jQuery ready 函数有何不同?
window.onload事件会等DOM创建完毕,还要等到包括图片、音频、视频在内的所有外部资源都加载完毕才会执行。
缺点:如果加载图片和媒体内容花费了大量时间,用户就会感受到定义在window.onload事件上的代码在执行时,有明显的延迟,影响用户体验。
jQuery中的ready函数只须等待DOM加载完毕,无须等待图像或外部资源的加载,执行起来更快 window.onload事件,如果编写多个,后面的会覆盖前面的,所以只能订阅一次。 jQuery中的$(document).ready()可以在代码里编写多个,浏览器会根据它们在页面中出现的先后顺序依次执行它们。

110、 在JavaScript中,将字符串str=”abc TUabhRaAJ”中的‘a’转换成大写,生成一个新字符串并打印(结果:”Abc TUAbhRAA J”)

var str = 'abc TUabhRaAJ', 
arr = str.split(''),            
i = 0,            
len = arr.length,            
len2 = arr.length,            
newArr = []; 
 
for(; i < len; i++) {            
	var s = '',             
	j = 0; 
	for(; j < len2; j++) {             
		if(i == j) 
		{              
			s += arr[j].toUpperCase(); 
    	} 
    	else 
    	{             
 			s += arr[j];             
		} 
    } 
    newArr.push(s); 
} 
console.log(newArr); 

111、在c#中error和exception有什么区别?
Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题。比如:内存资源不足等。对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛出的。
Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计
的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
Exception又分为运行时异常,受检查异常。
运行时异常,表示无法让程序恢复的异常,导致的原因通常是因为执行了错误的操作,建议终止程序,因此,编译器不检查这些异常。
受检查异常,是表示程序可以处理的异常,也即表示程序可以修复(由程序自己接受异常并且做出处理), 所以称之为受检查异常。

你可能感兴趣的:(c#,asp.net,面试)