(我只是个努力的搬运工,别人整理的,暂时发布,供我自己复习的。)
目录
1.你对泛型了解吗?简单说明一下泛型的有什么好处?
6.2 .NET WinForm部分
6.3 .NET Web开发部分
6.4 数据访问部分
6.5 集群与分布式
6.6 其他部分
1.你对泛型了解吗?简单说明一下泛型的有什么好处?
泛型:“泛型”的字面意思就是广泛的类型。通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用 好处是——可以复用代码,降低耦合性,而且还提高了代码的可读性以及安全性。
2 DateTime.Parse(myString); 这行代码有什么问题?
有问题,当myString不能满足时间格式要求的时候,会引发异常,建议使用DateTime.TryParse()
3 XML 与 HTML的主要区别?
- 1. XML是区分大小写字母的,HTML不区分。
- 2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略结束标记。在XML中,绝对不能省略掉结束标记。
- 3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。
- 4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
- 5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
4 请简述结构和类的区别
- 1、类型不同:结构是一种值类型,而类是引用类型。
- 2、存储不同:结构使用栈存储,而类使用堆存储。栈的空间相对较小.但是访问效率相对较高.堆的空间相对较大.但是访问效率相对较低。
- 3、作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性。
- 4、初始化不同:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。
5 请解释一下IClonable
IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone().
深度复制(Deep Copy)与浅表复制(Shadow Copy)
6 用接口或父类作为输入的参数有什么好处?返回值如果是接口是为了什么?
接口或父类作为参数,所有继承了此接口或父类的类都可以使用,即你给此方法传参数的时候,可以把继承了这个接口或父类的类的实例传给这个方法。可以一次性传入多种字段、方法等而不用定义多个形参,接口作为返回值,返回的是实现接口的对象。
7 = 和 == 的区别?
= 是赋值运算符, ==是关系运算符,用于等值判断
8 数组有没有length()这个方法?String 有没有length()这个方法?
数组是没有length()这个方法的,有length这个属性,可以计算数组的长度。
String是有length()这个方法的,用来计算字符串的长度。
9 数组和泛型集合的区别
泛型集合只能放定义类型的元素,会自动增大,取出时不用做类型转换。
数组只能放定义类型的元素,不会自动增大,取出时不用做类型转换。
10 System.Object中有什么方法?有什么用?
- 1.ToString():是获取对象的字符串表示的一种快捷方式
- 2.Finalize():允许对象在垃圾回收该对象之前尝试并执行释放资源并执行其他清理操作
- 3.GetType():获取当前实例的确切运行时类型
- 4.GetHashCode():用作特定类型的哈希函数
- 5.构造函数方法:主要用来在创建对象时初始化对象
11 Linq中concat union intersect的区别
Concat :连接两个序列。
Union : 通过使用默认的相等比较器生成两个序列的并集。
Intersect : 通过使用默认的相等比较器对值进行比较生成两个序列的交集。
12 请问哈希表(hashtable)是如何存储数据的?
以哈希表的形式存储数据,数据的形式是键值对。
13 .NET中的CTS、CLS和CLR
- CLR公共语言运行库
- CLS通用语言规范
- CTS通用类型系统
14 NET和C#的区别
.NET一般指.Net Framework框架,是Microsoft为开发应用程序而创建的一个具有革命意义的平台,C#运行在.NET(CLR)上的,用于创建应用程序的一种高级编程语言。
15 设计模式有哪些?
- 1.单例设计模式
- 2.工厂设计模式
- 3.代理设计模式
- 4.观察者设计模式
- 5.适配器模式
- 6.原型模式
16 StringBuilder 和 String的区别?
String是不可变化的字符,它只能赋值一次,每一次内容发生改变,都会生成一个新的对象。
StringBuilder是可以变化的字符,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充。
17 Linq与SQL语句的执行速度哪个更快?
SQL语句的执行速度更快
18 C#代码编译成中间语言有什么作用?
优点:一是可以实现平台无关性,既与特定CPU无关;二是只要把.NET矿建某种语言编译成IL代码,就实现.NET矿建中语言之间的交互操作。
IL是.NET矿建中的中间语言(Intermediate Language)的缩写。
6.2 .NET WinForm部分
1 在.NET(C# or vb.net)中如何取消一个窗体的关闭?
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
2 在.NET(C# or vb.net)如何启动另一个程序
Process.Start("cmd");
3 在.net(C# or vb.net)中,Appplication.Exit() 和 Form.Close()有什么不同
Appplication.Exit()是退出整个应用程序,Form.Close()是关闭其中一个form。
4 DataGridView的DataSource可以连接什么数据源?
- 第一种:
- DataSet ds=new DataSet ();
- this.dataGridView1.DataSource=ds.Tables[索引或表名];
- 第二种:
- ArrayList al = new ArrayList();
- this.dataGridView1.DataSource = al;
- 第三种:
- Dictionary
dic = new Dictionary (); - this.dataGridView1.DataSource = dic;
- 第四种:
- DataView dv = new DataView();
- this.dataGridView1.DataSource = dv;
6.3 .NET Web开发部分
1 Page_Onload里面一般会写什么代码?
通过判断IsPostBack属性判断是否首次加载。在页面首次加载时,编写控件初始化代码和页面变量初始化代码
2 什么时候会用到cookie,session?它们的区别分别是什么?
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
- 1.session 在服务器端,cookie 在客户端(浏览器)
- 2.session 默认被存在服务器的一个文件里(不是内存)
- 3.session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
- 4.session 可以放在 文件、数据库、或内存中都可以。
- 5.用户验证这种场合一般会用 session 因此,维持一个会话的核心就是客户端的唯一标识,即 session id
3 ASP.NET的WebPage的生命周期?
初始化-》加载视图状态-》处理回发数据-》加载-》发送回发更改通知-》处理回发事件-》预呈现-》保存状态-》呈现-》处置-》卸载
4 页面之间传值的几种方式?
页面间传值:
- 1.使用QueryString变量
- 2. PostBackUrl()方法
3.使用Server.Transfer方法。
5 应用程序范围内传值:
- 1.使用Cookie对象变量。
2.使用Session变量。
3.使用Application对象变量。
6 Ajax异步交互数据。
使用AJAX实现异步刷新就是在用户“无察觉”的情况下“偷偷”访问了远程服务器进行工作,然后将结果返回后由JS提供在客户端,让用户感受好像B/S架构的程序和C/S的差不多的感觉。
7 IIS如何进行配置
- 1.打开IIS管理器。
- 2.展开“本地计算机”-“网站”目录,选中“默认网站”节点,右键“属性”,设置主目录。
- 3.右键“默认网站”图标,选择“新建”-“虚拟目录”命令。IIS将启动“虚拟目录创建向导”对话框帮助我们完成创建虚拟目录的步骤。
- 4.单击对话框的“下一步”按钮以显示虚拟目录别名页,如HelloWorld。别名是我们用来标识该目录中的资源的名称。在VS.NET中,别名是用来指定项目位置的名称。
- 5.单击“下一步”按钮,以显示Web站点内容目录页。在此,输入包含此网站内容的目录的路径。
- 6.单击“下一步”按钮,打开虚拟目录访问权限设置页面。选中“读取”复选框和“运行脚本”复选框。
- 7.单击“下一步”按钮,再单击“完成”按钮创建虚拟目录并终止向导。查看IIS管理器中虚拟目录的创建结果,可以发现,默认网站中多了一个齿轮状图标的HelloWorld节点。
如果当前还不是齿轮状,右键节点,打开属性页,在虚拟目录中的应用程序设置中创建应用程序名为HelloWorld的应用程序就可以了
8 MVC中的视图是用来干什么的?
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)
从结构上看,可以分成三层,
- 1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。
- 2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。
- 3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。
这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。
9 asp.net状态管理技术中可用于保存与传递数据的方法的是
所谓 “状态管理”,是指使用ASP.NET中的ViewState、Cookie、Session和Application等对象实现页面数据缓存和传递的技术。
10 post和get的区别。
- 1. get/post均可向服务器传送页面数据。
- 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
- 3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
- 4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
- 5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
建议:
- 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
- 2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
11 某aspx页面中有一用户控件UserCtrl1,以及一web服务器控件Button1,用户控件内有uiAdd()方法用来动态添加显示效果,此页面AutoEventWireup="true",在页面page_load事件内有调用uiAdd()方法的代码,Button1点击后将触发Button1_Click事件。假设现在浏览该页面后点击了Button1,请列出页面page_load,按钮Button1_Click,用户控件uiAdd()以及用户控件的page_load的触发先后顺序。
- 1.aspx页面中的page_load
- 2.UserCtrl1中的page_load
- 3.用户控件uiAdd()
- 4.Button1点击后将触发Button1_Click事件
12 请编程遍历页面上所有TextBox 控件并给它赋值为空。
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
上边的方法只是针对于桌面软件类的,如果要针对于web开发中怎么实现呢?
首先.aspx文件一定会包含一个:



