2011年.NET面试题总结---献给即将找工作的同行们 .
严重声明:本文转自:http://blog.csdn.net/aspnet2002web/archive/2010/12/18/6084149.aspx 转发请注明出处
.Net基础知识
1.Asp.net 服务器端控件属性NavigateUrl指定要跳转到的Url地址
2. NavigateUrl是可以在服务器端使用代码修改,这个区别于<a>
3.由于HyperLink本身没有事件所以要在服务器端其它事件中设置NavigateUrl
<Asp:HyperLink id=”hyperlink” runat=”server” NavigatoeUrl=”test.aspx”>
1.过程:发送一个Http响应到客户端,通知客户端跳转到一个新的页面,然后客户端再发送跳转请求到服务器端。
2.页面跳转之后内部控件保存的所有信息丢失,当A跳转到B,B页面将不能访问A页面提交的数据信息。
3.使用这个方法使用这个方法跳转后浏览器地址栏的Url信息改变
4.可以使用Session Cookies Application等对象进行页面间的数据传递
5.重定向操作发生在客户端,总共涉及到两次与Web服务器的通信:一次是对原始页面的请求,另一次是重定向新页面的请求
2.页面跳转过程中Request Session等保存的信息不变,跳转之后可以使用上一个页面提交的数据
4.这种方法的重定向请求是在服务器端的进行的,浏览器不知道页面已经发生了一次跳转
2.页面执行完毕之后重新回到原始页面发出Server.Execute()的位置。
3.这种方式类似针对页面的一次函数调用被请求的页面可以使用原始页面的表单数据和查询字符串集合
4.被调用页面的Page指令的EnableViewStateMac属性设置为False
通过超链接怎样传递中文参数?
请说出强名的含义
对程序集,进行公钥/私钥对签名,称为强名。用名称,版本,文化,公钥唯一确定程序集
请列出c#中几种循环的方法,并指出他们的不同
Do…while:次数不确定条件随机变化,但至少要保证能被执行一次
请指出.Net中所有类型的基类
C#中有没有运算符重载?能否使用指针?
有,重载操作符意味着使该操作符具有不同的行为;使用操作符可以使方程式简单易懂;重载运算符使用operator关键字来创建一个运算符方法,只能在类或结构中使用 Operator
Public Shared Operator And(ByVal x As abc, ByVal y As abc) As abc
' Insert code to calculate And of x and y.
Public Shared Operator Or(ByVal x As abc, ByVal y As abc) As abc
' Insert code to calculate Or of x and y.
能使用指针, 在 C# 中很少需要使用指针,但仍有一些需要使用的情况。例如,在下列情况中使用允许采用指针的不安全上下文是正确的:
不鼓励在其他情况下使用不安全上下文。具体地说,不应该使用不安全上下文尝试在 C# 中编写 C 代码。
C#可否对内存进行直接的操作?(这可是个难点哦?要注意!)
C#在unsafe 模式下可以使用指针对内存进行操作, 但在托管模式下不可以使用指针,C#NET默认不运行带指针的,需要设置下,选择项目右键->属性->选择生成->“允许不安全代码”打勾->保存
using System;
public class Program
{
public static void Main()
{
int n = 123;
unsafe
{
int* p = &n;
Console.WriteLine("{0:X}", n);
Console.WriteLine("{0:X}", *p);
Console.WriteLine("{0}", p->ToString());
}
}
}
结果:
7B
7B
123
请按任意键继续. . .
用Visual C++ 6.0编写的代码(unmanaged code),如何在CLR下和其他dot net component结合?
net 与 Com 互操作 在.net中可以通过添加引用的方式将COM 加载在CLR下,将原有的COM中的类型相应变化为.Net 下可识别的类型
私有程序集与共享程序集有什么区别?
什么是GAC?它解决了什么问题?
请指出GAC的含义
全局程序集缓存(Global Assembly Cache)可全局使用的程序集的缓存。大多数共享程序集都安装在这个缓存中,其中也安装了一些私有程序集。存放共享程序的文件夹,可被任何项目使用
在全局程序集缓存中部署的应用程序必须具有强名称。.Net提供的命令行工具gacutil.exe用于支持这一功能。gacutil.exe可以将具有强名称的程序集添至全局程序集缓存。
怎样理解静态变量?
向服务器发送请求有几种方式?区别?
get post get一般为链接方式,post一般为按钮方式。主要区别如下:
3、对于get,服务器端用Request.QueryString获取变量提交的值,对于post服务器端用Request.Form获取提交的数据。
4、因受到URL长度的限制,get传输的数据量少,不能大于2K,post传输的数据量较大,一般默认没限制。理论上IIS5中为100K,最大可以达到2M
软件开发过程一般有几个阶段?每个阶段的作用?
分析(需要,概要,详细),开发(编程,单元测试),测试(集成测试),维护。
有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析。
如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明。
A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程。
需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个。
inputStr=Regex.Replace(inputStr.Trim()," *"," ");
new有几种用法
2、new 修饰符 覆盖方法,隐藏父类的成员。public new XXXX(){}
public class ItemFactory<T> where T : IComparable, new()
在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
下面这段代码输出什么?为什么?
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Not Equal");
输出Not Equal 。不相等,因为比较的是对象。ReferenceEquals(object a,object b),里面的两个参数是object对象
写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“,”、“。”,对其设计测试用例
inputStr=inputStr.ToCharArray().Reverse().ToString();
用Singleton如何写设计模式
什么是Application Pool?
链表和数组的区别,各有什么优缺点。
一个可以动态增长,一个固定(VB中可以Redim),性能数组教好
什么是友元函数?
什么是虚函数?
什么是抽象函数?
什么是内存泄漏,怎样最简单的方法判断内存泄漏 ?
C#中有很多类被定义为public有什么意义?
public 关键字将公共访问权限授予一个或多个被声明的编程元素。对公共元素的可访问性没有限制。
Internal修饰符有什么含义?
简述 private、 protected、 public、 internal 修饰符的访问权限。
protected : 保护成员,该类内部和继承类中可以访问。
JAVA的代码是半编译半解释的C#的代码是否也是这样
C#源码经过语言编译器执行第一次编译,变为中间语言,然后再由CLR编译成可执行代码.
进程和线程的区别
1、单位:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位。
进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,有一个进程中,至少要有一个线程,线程的划分尺度要比进程要小。
3、进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。
4、边界:二者都定义了某种边界,进程是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程是代码执行堆栈和执行上下文的边界。
成员变量和成员函数前加static的作用
它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。
malloc和new的区别
堆和栈的区别
栈:编译期间就分配好的内存空间,是由是操作系统(编译器)自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数的传递也是在栈上进行的。
堆:程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。
栈是机器系统提供的数据结构,而堆则是C/C++函数库提供的。
在.Net中,类System.Web.UI.Page 可以被继承么?
你觉得ASP.Net 2。0(VS2005)和你以前使用的开发工具(.Net 1。0或其他)有什么最大的区别?你在以前的平台上使用的哪些开发思想(pattern / architecture)可
1 ASP.Net 2。0 把一些代码进行了封装打包,所以相比1。0相同功能减少了很多代码。
2 同时支持代码分离和页面嵌入服务器端代码两种模式,以前1。0版本,.Net提示帮助只有在分离的代码文件,无法在页面嵌入服务器端代码获得帮助提示,
3 代码和设计界面切换的时候,2。0支持光标定位。这个我比较喜欢
4 在绑定数据,做表的分页。UPDATE,DELETE,等操作都可以可视化操作,方便了初学者
5, 在ASP.Net中增加了40多个新的控件,减少了工作量
.Net的错误处理机制是什么
.Net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
如何把一个array复制到arrayList里
例1、foreach( object o in array )
例2、string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);
例3、string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);
DataGrid.Datasouse可以连接什么数据源
DataTable、DataView、DataSet、DataViewManager
概述反射和序列化
通过反射命名空间中的类以及 System.Type,可以使用反射在运行时动态地创建类型的实例,然后调用和访问这些实例。也可以获取有关已加载的程序集和在其中定义的类型(如类、接口和值类型)的信息。
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
概述o/r mapping 的原理
用sealed修饰的类有什么特点
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
UDP连接和TCP连接的异同。
UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。
TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后才能传输数据。TCP提供超时重拨,检验数据功能。
前者只管传,不管数据到不到,无须建立连接。后者保证传输的数据准确,须要连结。
.net中读写数据库需要用到哪些类?列举ADO.Net中的五个主要对象,他们的作用
DataAdapter用来将数据填充到DataSet,在数据源和DataSet间起数据传输
DataSet可以视为一个暂存区(Cache),把从数据库中所查询到的数据保留起来用来无连接的储存多个表的数据,并包含表与表之间的关联关系。
是否可以继承string类
.net Remoting 的工作原理是什么?
服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
Remoting的作用?
讲一讲你理解的web service,在dot net framework中,怎么很好的结合xml?
remoting和webservice(简述webservice中概念和原理)
简单的说,WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。
1、Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一些。
2、Remoting不是标准,而Web Service是标准。
3、Remoting一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需要IIS进行启动。
4、在VS.net开发环境中,专门对Web Service的调用进行了封装,用起来比Remoting方便。
我建议还是采用Web Service好些,对于开发来说更容易控制。Remoting一般用在C/S的系统中,Web Service是用在B/S系统中,后者还是各语言的通用接口,相同之处就是都基于XML。
为了能清楚地描述Web Service 和Remoting之间得区别,我打算从他们的体系结构上来说起:
WebService的运行机理。首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class)
2、一般来说,Remoting是和平台相关的不跨平台的,需要客户和服务器都是.NET,但可配置特性比较好,可以自定义协议。WebService可以做到跨平台通信,但必须采用SOAP协议。
web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么?
所传输的数据必须是可序列化的。因为需要转换为XML格式以可以穿越防火墙,做到真正的数据共享。因为DataSet处理DataTable的序列化以便进行封送处理,所以无法传递单个DataTable
常用的调用webservice方法有哪些?
使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?
SOAP是简单对象访问协议,Web服务正是通过WSDL来约定服务器和客户端基于xml的SOAP来通讯,而无论客户端和服务器都不需要知道对方的平台、编程语言等信息。
Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不同平台,不同语言,Remoting只适用于.Net。效率上Remoting高于Xml Web Service
解释一下UDDI、WSDL的意义及其作用。
WSDL描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述。这是一个基于XML的,关于如何与Web服务通讯和使用的服务描述;
装箱和拆箱的含义
装箱:将值类型转换为引用类型。拆箱:将引用类型转换为值类型。
装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。
取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。取消装箱操作包括:
这个过程前2句是将i装箱,后一句是将obj拆箱!再写个代码,看看进行了几次装拆箱!
Console.WriteLine(i+","+(int)obj);
页面生命周期 (关于以下生命周期这部分,建议大家上网找找更详细的资料来看)
页生命周期阶段
1、页请求:发生在页面生命周期之前,用户请求页时,ASP.NET将确定是否需要分析和编译页,从而确定是否开始页面的生命周期,或者是否可以在不运行页的情况下发送页面缓存以进行响应。
2、开始:设置页属性,如:HttpContext以及其他属性;在此阶段,页面需要确定是回发请求还是新请求,并设置IsPostBack属性;设置页面的UICulture属性。
3、页面初始化:加载所有主题;控件生成,并设置UniqueID;
注:ViewState、ControlState中的值还未加载至控件;如果页面是回发,则回发数据也还未加载;故此时控件可以访问,但值可能出错。
4、加载:如果当前请求是回发请求,则为控件加载ViewState和ControlState中的值。
5、验证:调用所有验证程序控件的Validate方法,此方法将设置验证程序控件和页的IsValid属性。
6、回发事件处理:如果请求是回发请求,则调用所有事件处理程序。
7、呈现:首先对该页和所有控件进行保存视图状态,然后对每个控件调用Render方法,它会提供一个文本编写器,用于将控件的输入写入页的Response属性的OutputStream中。
8、卸载:完成呈现,并已将页发送至客户端、准备丢弃该页后,调用卸载。将卸载属性如:Response和Request等等。
页生命周期事件:
完成操作:检查IsPostBack属性来确定是不是第一次处理该页;
注:如果请求是回发请求,则控件的值尚未从视图状态恢复,即:不应该在此事件中设置控件属性。
完成操作:在所有控件都已经初始化并且应用所有外观设置后引发。使用该事件来读取和初始化控件属性。
完成操作:由Page对象引发,使用该事件来处理要求完成所有初始化工作的任务。
完成操作:为页和所有控件加载视图状态,然后处理Request 实例包括的任何回发数据。
注:如果需要在Load之前对页或控件进行处理,需要该事件。
注:在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查Page和各个验证控件的IsValid属性。
Page对所有控件递归进行EnsureChildControl操作
设置了DataSourceID属性的数据绑定控件会调用DataBind方法。
在该事件发生前,已经对控件的ViewState进行了保存。将忽略对页和控件所作的所有修改。
大概描述一下ASP.NET服务器控件的生命周期
初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载
应用程序生命周期
asp.net页面在什么时候产生?又在什么时候销毁?
这一过程主要是初始化包括页面本身的所有控件,每次的页面载入就会执行一次初试过程,而在这里面访问到的也是控件的初始值。还有就是可以通过OnInit()来重载初试化事件
(2) LoadViewState---导入Viewstate数据
在初试化事件后,在loadvireState事件中所有控件将获得他们的第一个属性ViewState属性,这个属性最终将被返回给服务器以判断这个页面是已经被用户访问完毕还是仍然在被
用户所访问。也可重载loadvireState事件对相应的控件进行值设定。
(3) Load Postback data;---用LoadPostData处理Postback数据
Postback数据也可以理解成就是服务器页面提交的表单数据,每一次表单数据的提交都会触发执行IPostBackDataHandler接口操作的控件。
(5) Handle control events;---具体的控件事件
(6) Page_PreRender();---预先呈递对象
Render方法将一个HtmlTextWriter对象作为参数并用它将Html在浏览器上以网页的形式显示。这时仍然可以做一些修改动作,不过它们只是客户端的一些变化而已了。亦可以重载Render事件。
当想服务器请求一个对象的时候,就会在内存里生成一个继承页面对象,也就是页面的类,它继承自System.Web.UI.Page.当页面对象从内存中卸载时发生,将触发该事件.
如何部署一个ASP.net页面。
VS 2005和VS 2003都有发布机制。2003可以发布然后再复制部署。VS2005基本上可以直接部署到对应位置。
Session有什么重大BUG,微软提出了什么方法加以解决?
如何处理几十万条并发数据?
用存储过程或事务。取得最大标识的时候同时更新。注意主键不是自增量方式这种方法并发的时候是不会有重复主键的,取得最大标识要有一个存储过程来获取.
谈谈final, finally, finalize的区别。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
sleep() 和 wait() 有什么区别?
wait():释放对象上的锁,并阻塞当前线程,直到它重新获取该锁。线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
数组有没有length()这个方法? String有没有length()这个方法?
数组和string都没有Length()方法,只有Length属性。
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
List, Set, Map是否继承自Collection接口?
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整型,字符或字符串,因此可以作用在byte和long上,也可以作用在string上。
两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
String s = new String("xyz");创建了几个String Object?
对JAVA来说两个对象,一个是"xyx",一个是指向"xyx"的引用对象s。
String a="xyz";首先会到常量池中去查找,如果存在就不再分配,如果不存在就分配,常量池中的数据是在编译期赋值的,也就是生成class文件时就把它放到常量池里了。
GC是什么? 为什么要有GC?
GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
能用foreach遍历访问的对象需要实现_____接口或声明_____方法的类型。
在.net中,配件的意思是?
什么叫应用程序域
一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置)。
应用程序域有助于将在一个应用程序中创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。隔离正在运行的应用程序。
在一个单独的进程中可以存在多个应用程序域。应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。
就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。
什么是强类型,什么是弱类型?哪种更好些?为什么?
什么是受管制的代码?什么是强类型和弱类型系统? CTS、CLS和CLR分别作何解释?
公共语言基础(CLI)是微软公司向ECMA提交的一份语言和数据格式规范,CLR是目前为止唯一一个公共语言基础的实现版本。
.net中哪项技术(CLR、CTS、CLS)实现跨多语言?
CLR与IL分别是什么含义?
CLR(公共语言运行库):能管理内存,能够轻松地设计其对象可以跨语言互动的组件和应用程序,编译一次,并可以在任何支持运行库的CPU和操作系统上运行,跨语言集成(特别是跨语言继承)
IL(中间语言):可用于语言互操作性,IL不是字节代码,但很接近字节代码,因此执行应用程序时,IL到机器代码的转换要快很多。独立于CPU的指令集。由CLR转换为特定于CPU的代码。
对象能否调用静态方法
PID是什么?在做系统的故障排除时如何使用它?
PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visual studio.net等ide将故障进程附加到进程中进行调试(debug)
单个TCP/IP端口上能够被多少个进程侦听?
描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
索引器可以使客户程序很方便地访问类中的集合或数组,类似通过索引访问数组,并且索引器向客户程序隐藏了内部的数据结构。
类似于属性,访问类或结构的集合或数组时,可以用索引器实现,索引器用this关键字声明,声明方法如下:
数据类型 this[参数列表]
{
get
{
以参数为索引返回集合或数组数据
}
set
{
分配值到参数索引的元素
}
}
例:自己建立一个数组
using System;
class MyArray
{
private string[] str = new string[5];
//定义索引器,并有可读可写属性,用this声明属性,接收一个整型类型参数
public string this[int i]
{
get
{
return str[i];
}
set
{
str[i] = value;
}
}
//获得数组长度
public int Length
{
get
{
return str.Length;
}
}
}
public class LxIndex
{
static void Main(string[] args)
{
MyArray ma = new MyArray();
//给数组赋值
Console.WriteLine("给数组赋值,请输入数组元素值:");
for (int i = 0; i < ma.Length; i++)
{
ma[i] = Console.ReadLine();
}
//输出数组中的元素
Console.WriteLine("你输入的内容是:");
for (int i = 0; i < ma.Length; i++)
{
Console.Write(ma[i] + " ");
}
}
}
结果:
给数组赋值,请输入数组元素值:
78
tom
**
100
23
你输入的内容是:
78 tom ** 100 23 请按任意键继续. . .
不是。索引器可以用任意类型进行索引。
MVC模式
MVC(Model View Controller)模型-视图-控制器
Assembly.Load("foo.dll"); 这句话是否正确?
错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");
DateTime是否可以为null?
不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null
using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的
有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。不明白什么是确定性终结
三层架构,用.Net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。目的即为了“高内聚,低耦合”的思想。
表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候的所见所得。
业务逻辑层(BLL):业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层:为了与用户交互例如用户添加表单针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等每层之间是一种垂直的关系。
三层结构是N层结构的一种,一般来说,层次之间是向下依赖的,下层代码未确定其接口(契约)前,上层代码是无法开发的,下层代码接口(契约)的变化将使上层的代码一起变化。
C#函数中无参数修饰符、out修饰符、params修饰符、ref修饰符的区别
out修饰符:表示按引用传递,传递前不需赋初值,但在传入的方法内赋值,否则报错
params修饰符:可将不确定个数的一组相同类型的数据作为参数传递,函数签名中只能有一个params修饰符,并且应为最后一个参数。
ref 与out有什么不同?
方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
extern 是什么意思?
extern 修饰符用于声明由程序集外部实现的成员函数,经常用于系统API函数的调用(通过 DllImport )。注意,和DllImport一起使用时要加上 static 修饰符
也可以用于对于同一程序集不同版本组件的调用(用 extern 声明别名)
using System.Runtime.InteropServices;
using System;
namespace TestExtern
{
class ClassHello
{
//extern与DllImport一起使用时必须再加上一个static修饰符
[DllImport("User32.dll")]
public static extern int MessageBox(int Handle, string Message, string Caption, int Type);
static void Main()
{
string myString;
Console.Write("请输入提示信息: ");
myString = Console.ReadLine();
MessageBox(0, myString, "我的测试", 0);
}
}
}
结果:
对象构造器
使用对象构造器,可以使初始化对象像初始化数组一样简单,即在构造函数后直接添加多个初始化语句代码,并用逗号分隔,整体用{}括起来,定义形式如下:
类型声明 实例名称 = new 类型名称() {初始化语句1,初始化语句2};
如果相同成员的不同初始化语句,则以最右面的语句为准。初始化的顺序是先执行构造函数的语句,然后执行对象构造器中的语句。如下例:
Snake s = new Snake () {name="眼镜蛇",length=12,weight=20};
C#匿名类型的的实际应用
通过var和对象构造器,声明一个没有名称(其名称是由编译器分配的)的类,同时创建并初始化成员。如:var pc1 = new {cpu="Intel",memory="AMD"};
const和readonly区别
1、初始化位置不同。const必须在声明的同时赋值;readonly即可以在声明处赋值,也可以在静态构造方法(必须是静态构造方法,普通构造方法不行)里赋值。
2、修饰对象不同。const即可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段
3、const是编译时常量,在编译时确定该值;readonly是运行时常量,在运行时确定该值。
4、const默认是静态的;而readonly如果设置成静态需要显示声明
5、修饰引用类型时不同,const只能修饰string或值为null的其他引用类型;readonly可以是任何类型。
如果类型限制了不能在编译时确定它的值,可以使用static readonly来代替。
请解释virtual的含义?
virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称作虚拟成员。虚拟成员的实现可由派生类中的重写成员更改。
通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性
sealed、new、virtual、abstract与override关键字的区别
sealed修饰类代表密封类,不能被继承,修饰方法代表密封方法,不能被重写。通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构混乱
new 显式隐藏基类的成员。不用new隐藏基类的成员也可以,但会给出警告。
virtual为了子类来重写的,子类需要override,如果不用会给个警告
override子类重写基类的abstract,virtual成员,。不能重写非虚拟方法或静态方法
new和override相同点和区别
相同点:都可以对基类成员进行隐藏,都可以用base调用基类的成员
1、用override重写基类的方法,要求与基类必须有完全相同的访问修饰符、返回值类型和方法名称名称,参数,异常。new不用
2、用override重写基类的方法,要求基类的方法必须为虚拟的,抽象的或重写的(virtual,abstract,override),而new不必要
3、继承后,用一个基类的对象调用基类的virtual方法时,override重写的子类方法会被访问,而new重写的子类方法不会被访问(只访问基类的virtual方法)
4、new作为运算符时,创建对象,调用构造函数。new 用于约束时 用于在泛型声明中,约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
using System;
public class BaseClass
{
public BaseClass()
{
Console.WriteLine(" 基类构造");
}
//使用virtual才可以在子类中使用override,而new不必要
public virtual void Method()
{
Console.WriteLine(" 基类.Method()");
}
}
public class ClassA : BaseClass
{
public ClassA()
{
Console.WriteLine(" 类A.构造");
}
public override void Method()
{
//base.Method();
Console.WriteLine(" 类A.Method() in override");
}
}
public class ClassB : BaseClass
{
public ClassB()
{
Console.WriteLine(" 类B.构造");
}
public new void Method()
{
//base.Method();
Console.WriteLine(" 类B.Method() in new");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass ba1 = (BaseClass)new ClassA();//类型转换
//用override重写方法,是基类的一个派生,
//所以这里通过基类的虚函数,会访问到派生类的方法。
ba1.Method();
Console.WriteLine(" =================");
BaseClass bb2 = (BaseClass)new ClassB();//类型转换
//用new重写方法,是一个和基类无关的新方法,
//所以这里基类调用的时候,访问基类的方法。
bb2.Method();
Console.WriteLine(" =================");
ClassA a1 = new ClassA();
a1.Method();
Console.WriteLine(" =================");
ClassB b2 = new ClassB();
b2.Method();
Console.WriteLine(" =================");
Console.ReadKey();
}
}
运行结果:
基类构造
类A.构造
类A.Method() in override
=================
基类构造
类B.构造
基类.Method()
=================
基类构造
类A.构造
类A.Method() in override
=================
基类构造
类B.构造
类B.Method() in new
=================
Web.config配置Windows身份认证
Global.asax文件中配置自定义的错误
答:在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
在DataGrid控件的Footer显示员工合计数
问:您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?
答:重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。
如何在这个程序中使用Web Service
答:在“Web引用”对话框中输入这个XML Web service的地址。
修改程序
货币的值如何按各个不同国家的习惯来输出
static void Main(string[] args)
//CultureInfo 类呈现区域性特定的信息,如关联的语言、子语言、国家/地区、日历和区域性约定。
System.Globalization.CultureInfo myCultureUS = new System.Globalization.CultureInfo("en-US");
CultureInfo myCultureEN = new CultureInfo("en-GB");
CultureInfo myCultureCN = new CultureInfo("zh-CN");
double x = 10321.5, y = 122235401.21644;
string str = String.Format(myCultureUS, "My amount={0:c}(美国)", y);
str = String.Format(myCultureEN, "My amount={0:c}(英国)", y);
error和exception有什么区别?
要用新浪网上的天气预报,怎么办?
用webservice,请求国家气象局的接口。用ajax把新浪网上的网页请求过来,然后解析一下。
母板页与内容页中怎么传参(除Session、Cookie、Application、QuerySting、this.Server.Transfer之外)?
this.TextBox1.Text = (Master.FindControl("textBox1") as TextBox).Text;
TextBox1.Text = (this.ContentPlaceHolder1.FindControl("textBox1") as TextBox).Text;
两根分布不均匀的香,全部烧完需1个小时,如何确定一段15分钟的时间?
同时点燃第一根的两端和第二根的一端,第一根烧完是半个小时,这时点燃第二根的另一端并开始计时,全部烧完就是15分钟。
Xml文档定义的形式?它们的本质区别?解析Xml文档的方式?
a: 两种形式 dtd schema;b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的);c:有DOM,SAX,STAX等。
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。
STAX:Streaming API for XML(流的API的XML) (StAX)。
.在.net(C# or vb.net)中如何取消一个窗体的关闭。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?
62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
获得枚举中的常数名称和常数值
通过Enum.GetNames(typeof(枚举))获得枚举名称,Enum.GetValues(typeof(枚举))获得枚举常数值
static void Main(string[] args)
string[] sa = Enum.GetNames(typeof(Color)); // Red, Green, Blue, Orange
Console.WriteLine("枚举中的常数名称:");
byte[] sb = (byte[])Enum.GetValues(typeof(Color)); // 0,1,2,3
Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
HashMap和Hashtable的区别。
分析以下代码。
public static void test(string ConnectString)
{
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = ConnectString;
try
{
conn.Open();
//……
}
catch (Exception Ex) {
MessageBox.Show(Ex.ToString());
}
finally {
if (!conn.State.Equals(ConnectionState.Closed))conn.Close();
}
}
1)以上代码可以正确使用连接池吗?
如果传入的connectionString是一模一样的话,可以正确使用连接池。不过一模一样的意思是,连字符的空格数,顺序完全一致。
2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?
只可以捕捉数据库连接中的异常吧. (finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。所以理论上并非所有异常都会被捕捉。)
什么是WSE?目前最新的版 本是多少?
WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。
请谈谈对正则表达式?
请解释web.config文件中的重要节点
请解释ASP.NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下:
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件
Inherits="T1.Tst1" 表用运行时使用哪一个隐藏类
当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决
很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
请解释什么是上下文对象,在什么情况下要使用上下文对象
某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:
问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?答案:B
问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?答案:A
A) KLLN B) LOML C) MLLO D)NMKO
请解释流与文件有什么不同?
类型系统是由XMLSchema表示的吗?CLS是XMLSchema表示的吗?
XmlSchema是一个特定的XML文档,必须满足的一套标准。这些标准能够描述不同的数据类型。比如:xs:Boolean
CLS不管值类型还是引用类型都是一套类型系统,比如System.Boolean.
从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
举个例子,比如spring在运行时才取类和类的对象,就是后期绑定
调用Assembly.Load算静态引用还是动态引用?
个人理解其实应该是一个反射,System.Reflection.Assembly.Load.所以嘛肯定动态引用了。因为静态引用在编译时就已经引用,并使用。
何时使用Assembly.LoadFrom?何时使用Assembly.LoadFile?
(声明以下是抄的,我不太了解Assembly.LoadFrom)。区别如下:
Assembly.LoadFrom则不一样,它会载入相应的dll文件及其引用的其他dll,比如上面的例子,b.dll也会被载入。
Assembly.LoadFile的话则不会做这样的检查,比如上面的例子换成Assembly.LoadFile的话,则能正确载入版本2。
什么叫Assembly Qualified Name?它是一个文件名吗?它有什么不同?
做强签名的assembly与不做强签名的assembly有什么不同?
强签名的程序集可以确认assembly name是唯一的(因为使用了public key token)。
DateTime是否可以为null?
不能为null,包括int什么的都不能等于null。当然2.0可以里加可空类型,但是在编译后你会发现可空类型其实是假的。
什么叫JIT?什么是NGEN?它们分别有什么限制和好处?
.NET 采用中间语言(IL)机制。JIT(Just In Time)即时编译是指程序第一次运行的时候才进行把中间语言(IL)编译成机器代码,JIT增加了执行效率。
本机映像生成器 (Ngen.exe) 是一个提高托管应用程序性能的工具。
.NET CLR中一代的垃圾收集器是如何管理对象的生命周期的?什么叫非确定性终结?
垃圾收集器不能管理对象的生命周期吧??我认为他只能跟踪对象的生命周期
垃圾收集是在第4步。有三种方法:Finalize、Dispose、Close。
但垃圾收集执行的时机不定的,初学者可以认为对象销毁的时机是在垃圾收集器认为对象需要被销毁的时候进行的,他对于程序员是透明的,初学者根本不需要知道垃圾收集器的存在。
Finalize()和Dispose()之间的区别?
Finalize自动释放资源,Dispose()用于手动释放资源。
Finalize很像C++的析构函数,我们在代码中的实现形式为这与C++的析构函数在形式上完全一样,但它的调用过程却大不相同。
可见,这种“自动”释放资源的方法并不能满足我们的需要,因为我们不能显示的调用它(只能由GC调用),而且会产生依赖型问题。我们需要更准确的控制资源的释放。
using System;
using System.Globalization;
class DisposePattern :IDisposable
{
private System.IO.FileStream fs = new System.IO.FileStream("test.txt", System.IO.FileMode.Create);
//析构函数
~DisposePattern()
{
Dispose(false);
}
//IDisposable Members
#region IDisposable Members
public void Dispose()
{
//告诉GC不需要再调用Finalize方法,
//因为资源已经被显示清理
GC.SuppressFinalize(this);
Dispose(true);
}
#endregion
protected virtual void Dispose(bool disposing)
{
//由于Dispose方法可能被多线程调用,
//所以加锁以确保线程安全
lock (this)
{
if (disposing)
{
//说明对象的Finalize方法并没有被执行,
//在这里可以安全的引用其他实现了Finalize方法的对象
}
if (fs != null)
{
fs.Dispose();
fs = null; //标识资源已经清理,避免多次释放
}
}
}
}
在注释中已经有了比较清楚的描述,另外还有一点需要说明:如果DisposePattern类是派生自基类B,而B是一个实现了Dispose的类,那么DisposePattern中只需要override基类B的带参的Dispose方法即可,而不需要重写无参的Dispose和Finalize方法,此时Dispose的实现为:
class DerivedClass : DisposePattern
{
protected override void Dispose(bool disposing)
{
lock (this)
{
try
{
//清理自己的非托管资源,
//实现模式与DisposePattern相同
}
finally
{
base.Dispose(disposing);
}
}
}
}
当然,如果DerivedClass本身没有什么资源需要清理,那么就不需要重写Dispose方法了,正如我们平时做的一些对话框,虽然都是继承于System.Windows.Forms.Form,但我们常常不需要去重写基类Form的Dispose方法,因为本身没有什么非托管的咚咚需要释放。
了解GC的脾性在很多时候是非常必要的,起码在出现资源泄漏问题的时候你不至于手足无措。我写过一个生成excel报表的控件,其中对excel对象的释放就让我忙活了一阵。如果你做过excel开发的话,可能也遇到过结束excel进程之类的问题,特别是包装成一个供别人调用的库时,何时释放excel对象以确保进程结束是一个关键问题。当然,GC的内部机制非常复杂,还有许多内容可挖,但了解所有细节的成本太高,只需了解基础,够用就好。
using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。
比如:using()会自动调用MyObject的Dispose方法
using ( MyObject myObject = new MyObject ( ) )
Console.WriteLine ( "quit" ) ;
IDisposiable是显示释放对象的接口,实现IDisposiable接口的类,可以显示的释放对象。通过编写Dispose方法来实现显式释放资源;
class MyClass : IDisposable
{
// 构造函数
public MyClass() {
}
// 析构方法 (不确定的) (编译器通过重载virtual void Finalize来实现),与C++/CLI的!MyClass()等效
~MyClass() {
}
// Dispose方法
public void Dispose() { }
public static void Test()
{
using (MyClass auto = new MyClass())
{
}
// 因为使用了using句法,编译器自动调用auto.Dispose()
// 以上代码等效于:
MyClass user = new MyClass();
try {
}
finally {
user.Dispose();
}
}
}
tasklist /m "mscor*" 这句命令是干嘛的?
列出所有使用了以" mscor"作为开头的dll或者exe的进程和模块信息
in-proc和out-of-proc的区别
in-proc是进程内,进程内能共享代码和数据块,out-of-proc是进程外,进程外的互操作需要用进程间通讯来实现。
.NET里的哪一项技术能够实现out-of-proc通讯?
当你在ASP.NET中运行一个组件时,它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面?
在.Net中所有可序列化的类都被标记为什么?
DateTime.Parse(myString); 这行代码有什么问题?
有问题,当myString不能满足时间格式要求的时候,会引发异常,建议使用DateTime.TryParse()
PDB是什么东西? 在调试中它应该放在哪里?
PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。
什么叫圈复杂度(cyclomatic complexity)?为什么它很重要?
写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查",
public void LockTest()
{
Object lockObj = new Object();
lock (lockObj)
{
//
}
}
什么叫FullTrust?放入GAC的assembly是否是FullTrust的?
FullTrust完全信任。放入GAC中的Assembly是否FullTrust我的理解不是。我理解FullTrust是可以通过代码设定的
代码加上需要安全权限的特性有什么好处?
可以更加灵活的设置对代码的访问权限,实现代码级保护。这点不是特清楚,有明白的给讲解下
gacutil /l | find /i "Corillian" 这句命令的作用是什么?
全局程序集缓存中如果有Corillian就更新该程序集,没有就安装
sn -t foo.dll 这句命令是干嘛的?
DCOM需要防火墙打开哪些端口?端口135是干嘛用的?
135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下,DCOM不能穿越防火墙。因为根本不晓得开哪个端口。但有解决办法可以使DCOM分配的端口号固定,
有关内容我在http://www.cnblogs.com/jillzhang/archive/2008/02/20/1075057.html 有过一些描述。135是远程过程调用(RPC)的默认端口
对比OOP和SOA,它们的目的分别是什么?
XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?
我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限.
ACL(access control list) 访问控制表
为什么不提倡catch(Exception)?
原因可能有两点:1)try..catch在出现异常的时候影响性能 2)应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等
Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?
Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。
PDB 程序数据库文件,文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。
JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响?
方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么
a.Equals(b)和a == b一样吗?
不一样。a.Equals(b)表示a与b一致, a==b表示a与b的值相等
在对象比较中,对象一致和对象相等分别是指什么?
对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同
在.NET中如何实现深拷贝(deep copy)?
请解释一下IClonable
IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。
而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone().
深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较
using System;
public class Name
{
public string FirstName;
public string LastName;
}
public class Person : ICloneable
{
public Name PersonName;
public string Email;
<summary>
/// Deep Copy的例子
/// </summary>
/// <returns></returns>
public Object Clone()
{
Person p = new Person();
p.Email = this.Email;
p.PersonName = new Name();
p.PersonName.FirstName = this.PersonName.FirstName;
p.PersonName.LastName = this.PersonName.LastName;
return p;
}
public void ChangLastName(string lastName)
{
this.PersonName.LastName = lastName;
}
public static void Main()
{
Person p = new Person();
p.PersonName = new Name();
p.PersonName.LastName = "jill";
p.PersonName.FirstName = "zhang";
p.Email = "jillzhang@126.com";
Person sameNamePerson = p.Clone() as Person;
sameNamePerson.ChangLastName("clr_");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Person samePerson = p.MemberwiseClone() as Person;
samePerson.ChangLastName("Shadow");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Console.Read();
}
}
结果:
jill
clr_
Shadow
clr_
string是值类型还是引用类型?
XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?
只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。
特性能够放到某个方法的参数上?如果可以,这有什么用?
[AttributeUsage(AttributeTargets.Parameter)]
public class ParameterAtt : Attribute
public void TestMethod([ParameterAtt(Min = 100)] int par1)
ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0];
ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as ParameterAtt;
用什么方法比较2个字符串相似,且在系统运行时长驻内存?
Collection和Collections的区别?
Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
死锁的必要条件?怎么克服?
系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。
什么是死锁?死锁(Deadlock):是指两个或两个以上的进程在运行过程中,因争夺资源而造成的一种互相等待(谁也无法再继续推进)的现象,若无外力作用,它们都将无法推进下去。
l 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
l 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
l 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
l 循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
1.忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的的情况下。为什么叫鸵鸟算法呢,因为传说中鸵鸟看到危险就把头埋在地底下,可能鸵鸟觉得看不到危险也就没危险了吧。跟掩耳盗铃有点像。
什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
请解释转发与跳转的区别?
转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面,跳转就是指客户端的跳转
请简述一下用Socket进行同步通讯编程的详细步骤
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
什么叫做SQL注入,如何防止?请举例说明。
所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。
请叙述属性与索引器的区别。
属性的get访问器没有参数。 索引器的get访问器具有与索引器相同的形参表
属性的set访问器包含隐式value参数。除了value参数外,索引器的 set 访问器还具有与索引器相同的形参表。
String类与StringBuilder类有什么区别?为啥在.Net类库中要同时存在这2个类?
选择题
A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。
E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。
F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。
A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI”
B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”
C. “Data Source= AllWin /PubBase;Initial Category=PubBase;Integrated Security= SSPI”
D. “Data Source= AllWin / PubBase;Database=Test;Integrated Security= SSPI”
D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件。
4、您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。
所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:
b、 所有雇员除了Tess和King都允许访问这个应用程序。
请问您应该使用以下哪一个代码段来配置这个应用程序?( A )
<deny users=”allwin/tess, allwin/king”>
<deny users=”allwin/tess, allwin/king”>
<deny users=”allwin/tess, allwin/king”>
<allow users=”allwin/tess, allwin/king”>
<deny users=”allwin/tess, allwin/king”>
5.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )
A.Int32 B.Object C.ValueType D.Int16
9.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
10.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?( B )
A.public B.protected C.internal D.protected internal
using System;
abstract class BaseClass
{
public virtual string MethodA()
{
return "aaaa";
}
public virtual string MethodB()
{
return "bbbb";
}
}
class Class1: BaseClass
{
public string MethodA(string arg)
{
return "cccc";
}
public override string MethodB()
{
return "dddd";
}
}
class Class2: Class1
{
new public string MethodB()
{
return "eeee";
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
Console.WriteLine(o.MethodA());
}
}
结果:
aaaa
请按任意键继续. . .
请问,o.MethodA调用的是: ( A )
A.BaseClass.MethodAB.Class2.MethodA
C.Class1.MethodAD.都不是
13.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。
a)方法、属性、索引器和事件; b)方法、属性信息、属性; c)索引器和字段; d)事件和字段;
14.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A )
a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件 d)HTML控件和IIS控件
15.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( D)
a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>
b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>
c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>
d)以上皆非
16.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。
a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
c)Select操作的Sql语句只能由ExecuteReader()方法来执行;
d)ExecuteReader()方法返回一个DataReder对象;
17.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。
a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);
d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
18.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。
a)Buttons属性表示ToolBar控件的所有工具栏按钮
b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键
d)ButtonClick事件在用户单击工具栏任何地方时都会触发
19.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。
a)大小; b)上限; c)初始值; d)类型;
20.如果将窗体的FormBoderStyle设置为None,则( B)。
a)窗体没有边框并不能调整大小; b)窗体没有边框但能调整大小;
c)窗体有边框但不能调整大小; d)窗体是透明的;
21.如果要将窗体设置为透明的,则( B)
a)要将FormBoderStyle属性设置为None; b)要将Opacity属性设置为小于100%得值;
c)要将locked 属性设置为True; d)要将 Enabled属性设置为True;
22.下列关于C#中索引器理解正确的是(B/C )
a)索引器的参数必须是两个或两个以上 b)索引器的参数类型必须是整数型
c)索引器没有名字 d)以上皆非
23.下面描述错误的是( C/D)。
a)窗体也是控件; b)窗体也是类; c)控件是从窗体继承来的; d)窗体的父类是控件类;
24.要对注册表进行操作则必须包含( D)。
a)System.ComponentModel命名空间; b)System.Collections命名空间;
c)System.Threading命名空间; d)Microsoft.Win32命名空间;
25.要创建多文档应用程序,需要将窗体的(D )属性设为true。
a)DrawGrid; b)ShowInTaskbar; c)Enabled; d)IsMdiContainer;
26.如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。
a)TreeNode;
b)int;
c)string;
d)TreeView;
27.下面关于XML的描述错误的是(D)。
a)XML提供一种描述结构化数据的方法;
b)XML 是一种简单、与平台无关并被广泛采用的标准;
c)XML文档可承载各种信息;
d)XML只是为了生成结构化文档;
28.装箱、拆箱操作发生在: ( C )
A.类与对象之间 B.对象与对象之间
C.引用类型与值类型之间 D.引用类型与引用类型之间
29.用户类若想支持Foreach语句需要实现的接口是: ( A )
A.IEnumerableB.IEnumerator
C.ICollectionD.ICollectData
30..Net Framework通过什么与COM组件进行交互操作?( C )
A.Side By SideB.Web Service
C.InteropD.PInvoke
31..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?( A )
A.Side By SideB.Interop
C.PInvokeD.COM+
32.装箱与拆箱操作是否是互逆的操作?( B )
A.是B.否
33.以下哪个是可以变长的数组?( D )
A.Array B.string[]
C.string[N] D.ArrayList
34.用户自定义异常类需要从以下哪个类继承:( A )
A.Exception B.CustomException
C.ApplicationException D.BaseException
35 以下叙述正确的是: B C
A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
36从数据库读取记录,你可能用到的方法有:B C D
A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader
37.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )
A.Close B.Dispose C.Finalize
D.using E.Quit
38.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
39.在对SQL Server 数据库操作时应选用(A)。
a)SQL Server .NET Framework 数据提供程序;
b)OLE DB .NET Framework 数据提供程序;
c)ODBC .NET Framework 数据提供程序;
d)Oracle .NET Framework数据提供程序;
40.下列选项中,(C)是引用类型。
a)enum类型 b)struct类型 c)string类型 d)int类型
41.关于ASP.NET中的代码隐藏文件的描述正确的是(C)
a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d)以上都不正确。
42.以下描述错误的是(A)
a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
43.C#的数据类型有(A)
a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;
44.下列描述错误的是(D)
a)类不可以多重继承而接口可以;
b)抽象类自身可以定义成员而接口不可以;
c)抽象类和接口都不能被实例化;
d)一个类可以有多个基类和多个基接口;
45.在DOM中,装载一个XML文档的方法(D)
a)save方法 b)load方法 c)loadXML方法 d)send方法
46.下列关于构造函数的描述正确的是(C)
a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰
c)构造函数必须与类名相同
d)构造函数不能带参数
47.以下是一些C#中的枚举型的定义,其中错误的用法有()
a)public enum var1{ Mike = 100, Nike = 102, Jike }
b)public enum var1{ Mike = 100, Nike, Jike }
c)public enum var1{ Mike=-1 , Nike, Jike }
d)public enum var1{ Mike , Nike , Jike }
48.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(D)。
a)9 b)2 c)6 d)越界
代码书写和阅读
变量A、B如何不通过第三变量来交换(C#实现)?
static void Main(string[] args)
Console.WriteLine("交换前:A=" + A + " B=" + B);
请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
using System.Windows.Forms;
//部分代码略
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
TextBox tb = (TextBox)c;
tb.Text = "aaa";
}
}
公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路
根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。
给定以下XML文件,完成算法流程图。
<FileSystem>
<DriverC>
<Dir DirName="MSDOS622">
<File FileName =" Command.com" ></File>
</Dir>
<File FileName ="MSDOS.SYS" ></File>
<File FileName =" IO.SYS" ></File>
</DriverC>
</FileSystem>
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。下面只是个算法思路,不是代码
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
test(i);
}
}
}
不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
private void toolBar_ButtonClick(object sender, System.Windows.Forms.
ToolBarButtonClickEventArgs e)
{
if (e.Button.Equals(BtnNew))
{
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
}
答:if( OnNew != null )
OnNew( this, e );
分析以下代码,计算运行结果
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
分析以下代码,计算运行结果
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields() { }
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
当使用new B()创建B的实例时,产生什么输出?
X=1,Y=0,new B()时,首先运行父类的构造方法,构造方法里运行PrintFields()方法,此方法被B类重新,按B类的方法来运行。
求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
static void Main(string[] args)
int Num = int.Parse(Console.ReadLine().ToString());
for (int i = 0; i < Num + 1; i++)
产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
13 11 2 52 74 7 56 42 69 20 58 84 15 19 87 78 53 36 5 16 34 54 82 22 55 76 61 79
23 8 98 71 44 45 41 26 100 83 86 65 10 1 60 30 81 46 50 43 17 48 62 91 64 35 72
21 6 75 14 9 92 12 96 49 80 33 37 39 93 18 88 63 38 70 28 27 40 95 3 24 97 25 8
5 29 66 68 73 31 59 90 4 57 99 94 89 51 67 77 47 32
程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
要求:1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。
using System;
public sealed class Cat
{
//猫叫时引发的事件
public event EventHandler Calling;
public void Call()
{
Console.WriteLine("猫叫了...");
if (Calling != null) //检查是否有事件注册
Calling(this, EventArgs.Empty); //调用事件注册的方法.
}
}
//老鼠,提供一个方法表示逃跑
public sealed class Mouse
{
public void Escape(object sender, EventArgs e)
{
Console.WriteLine("老鼠逃跑了...");
}
}
//主人,发生猫叫的时候惊醒
public sealed class Master
{
public void Wakened(object sender, EventArgs e)
{
Console.WriteLine("主人惊醒了...");
}
}
//用于测试的执行方法
//程序入口点
public class Program
{
public static void Main(string[] args)
{
//建立猫
Cat cat = new Cat();
//建立老鼠
Mouse mouse = new Mouse();
//建立主人
Master master = new Master();
//注册事件
cat.Calling += new EventHandler(mouse.Escape);
cat.Calling += new EventHandler(master.Wakened);
//猫开始叫
cat.Call();
}
}
结果:
猫叫了...
老鼠逃跑了...
主人惊醒了...
请按任意键继续. . .
以下采用观察者模式
//要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法.2. 对老鼠和主人进行抽象
//评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
//<2>从Mouse和Master中提取抽象(5分)
//<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒.(3分)
using System;
using System.Collections;
public interface Observer
{
//观察者的响应,如是老鼠见到猫的反映
void Response();
}
public interface Subject
{
//针对哪些观察者,这里指猫的要扑捉的对象---老鼠
void AimAt(Observer obs);
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine("Host waken!");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
Cat cryed!
mouse1 attempt to escape!
mouse2 attempt to escape!
Host waken!
请按任意键继续. . .
写出程序的输出结果
using System;
class Program
{
private string str = "Class1.str";
private int i = 0;
static void StringConvert(string str)
{
str = "A string being converted.";
}
static void StringConvert(Program c)
{
c.str = "B string being converted.";
}
static void Add(int i)
{
i++;
}
static void AddWithRef(ref int i)
{
i++;
}
static void Main()
{
int i1 = 10;
int i2 = 20;
string str = "str";
Program c = new Program();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str); //string无法被改变
StringConvert(c); //传递对象string可以被改变
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str);
}
}
运行结果:
10
21
0
str
B string being converted.
请按任意键继续. . .
写出程序的输出结果
using System;
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
运行结果:
A
B
A.Fun()
请按任意键继续. . .
有继承关系,在构造子类的时候会先构造父类;Fun函数在子类是被new了一下,只是显示隐藏,并没有重写,所以输出还是A.Fun()。如果子类是被override,则最后输出B.Fun
写出程序的输出结果
using System;
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1); //以传递进来的对象选择哪个Fun1
Fun1(5); //以调用此方法的对象选择哪个Fun1
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
输出结果:
冒泡排序
public static void ArraySort()
int[] Arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
for (int i = 0; i < Arr.Length - 1; i++) //总共需要N-1趟
for (int j = 0; j < Arr.Length - 1 - i; j++) //每趟总共需要(N-1-趟数)次比较
输出:1,2,3,4,5,6,7,8,9,请按任意键继续. . .
写出程序的输出结果
using System;
class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B() { }
static void Main()
{
Console.WriteLine("X={0},Y={1}", A.X, B.Y);
}
}
输出结果:
X=1,Y=2
请按任意键继续. . .
在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
protected override void DefWndProc(ref System.WinForms.Message m)
{
switch (m.msg)
{
case WM_Lbutton:
///string与MFC中的CString的Format函数的使用方法有所不同
string message = string.Format("收到消息!参数为:{0},{1}", m.wParam, m.lParam);
MessageBox.Show(message);///显示一个消息框
break;
case USER:
//处理的代码
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}
请说明如下代码的结果
using System;
class Father
{
public virtual void show()
{
Console.WriteLine("Father");
}
static void Main(string[] args)
{
Father obj = new Child();
obj.show();
}
}
class Child : Father
{
public override void show()
{
Console.WriteLine("Child");
}
}
输出:
Child
请按任意键继续. . .
如果把virtual和override去掉,输出结果为Father
2011年.NET面试题总结---献给即将找工作的同行们 .相关推荐
- 2011年.NET面试题总结---献给即将找工作的同行们
什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP: 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成 ...
- .NET面试题总结---献给即将找工作的同行们
什么是面向对象 http://blog.csdn.net/aspnet2002web/article/details/6084149 转自 面向对象OO = 面向对象的分析OOA + 面向对象的设计O ...
- 嵌入式面试题 | 为年后求职找工作做准备
关注.星标公众号,不错过精彩内容 来源:志博PCB 虽然今年疫情推迟了上班时间,但是该做的事还是要做,求职找工作在恢复工作之后依然会进行,刚好趁此机会复习一下. 下面是关于嵌入式常见的面试题: ‧‧‧ ...
- 面试经历|为即将找工作的你保驾护航
图片发自简书App 聊一聊我的面试经历,那年数九寒冬,坐标北京,初冬的第一场雪,零下十几度. 如果你也是第一次找工作,不要忧伤不要焦虑,因为有一天,你也会像我现在这样,上班时间,开着微信和扣扣,该聊天 ...
- 60道Python面试题答案精选!找工作前必看
需要Word/ PDF版本的同学可以在实验楼微信公众号回复关键词"面试题"获取. 1. Python 的特点和优点是什么? 答案:略. 2. 什么是lambda函数?它有什么好处? ...
- 2023年java基础面试题,适合年初找工作的小伙伴
一. Java语言有哪些特点 1.简单易学.有丰富的类库 2.面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 3.与平台无关性(JVM是Java跨平台使用的根本) 4.可靠安全 5.支 ...
- 写给大四即将找工作的同学
如要转载,请注明出处http://student.csdn.net/space.php?uid=124362&do=blog&id=13084,个人Blog为http://blog.c ...
- 谨以此篇献给即将奔三十的人们
谨以此篇献给即将奔三十的人们 二十岁和三十岁 三十岁的女人会怎么样? 二十岁的时候 三十岁的时候 我穿着一条背心式牛仔裙在校园里走来走去,一说话就脸红. 我穿着名牌套装,坐在办公桌前,满脸冷酷地对下属 ...
- 2011分区联赛模拟试题 电子眼(树形dp)
2011分区联赛模拟试题 电子眼 Description 中山市石一个环境优美.气候宜人的小城市.因为城市的交通并不繁忙,市内的道路网很稀疏.准确地说,中山市有N-1条马路和N个路口,每条马路连接两个 ...
最新文章
- MindSpore循环神经网络
- ORBBuf : 一种鲁棒的协同视觉SLAM缓冲方法
- 【 C 】字符分类函数
- (转)python协程2:yield from 从入门到精通
- 【Qt】Qt中信号与槽
- 60usebean创建实例对象
- myeclipse中如何在整个工程中搜索字符串
- 如何运行没有Root权限的Docker?干货来了!
- 三网融合试点,是一个商机还是烫山芋?
- docker镜像启动后端口号是多少_java项目docker云化入门
- 华为S2600T------v1版本
- APL开发日志--2012-11-14
- jmeter下载安装配置(超细)
- [学习][记录] c++语言:从放弃到入门 <一> c++11新关键字以及引入的新特性
- Cursor android.content.ContentResolver.query() on a null object reference和Caused by: java.lang.Secur
- 机器学习模型的部署上线方式
- S2B2C模式有何优势?S2B2C电商系统赋能皮革企业渠道,提升供应链管理效率
- Word2007从指定页插入页码,不包括封面和目录,指定页为首页第1页
- 微信useragent java_微信内置浏览器和小程序的 User Agent 区别及判断方法
- RN:分包/拆包技术调研