NET面试笔试题 2.docx
- 文档编号:779451
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:14
- 大小:24.40KB
NET面试笔试题 2.docx
《NET面试笔试题 2.docx》由会员分享,可在线阅读,更多相关《NET面试笔试题 2.docx(14页珍藏版)》请在冰点文库上搜索。
NET面试笔试题2
1.在.net(C#or)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。
答案:
this(C#)Me().
2.在.net(C#or)中如何取消一个窗体的关闭。
答案:
privatevoidForm1_Closing(objectsender,System.ComponentModel.CancelEventArgse)
{
e.Cancel=true;
}
3.在.net(C#or)中,Appplication.Exit还是Form.Close有什么不同?
答案:
一个是退出整个应用程序,一个是关闭其中一个form
4.在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。
比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22
答案:
publicstaticvoidMain()
{
//System.Globalization.CultureInfoMyCulture=newSystem.Globalization.CultureInfo("en-US");
System.Globalization.CultureInfoMyCulture=newSystem.Globalization.CultureInfo("en-GB");//为英国货币类型
decimaly=9999999999999999999999999999m;
stringstr=String.Format(MyCulture,"Myamount={0:
c}",y);
Console.WriteLine(str);
}//{0,10:
c}0下标,10字符串要占用的字符数如果字符数不够也会完整显示,
:
c格式说明符d,e,f,g,n,p,x
5.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:
(1) 密码单词的最小长度是两个字母,可以相同,也可以不同
(2) K不可能是单词的第一个字母
(3) 如果L出现,则出现次数不止一次
(4) M不能使最后一个也不能是倒数第二个字母
(5) K出现,则N就一定出现
(6) O如果是最后一个字母,则L一定出现
问题一:
下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?
A)K B)L C)M D)N
答案:
B
问题二:
如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?
A)1个 B)3个 C)6个 D)9个
答案:
ALL
问题三:
下列哪一个是单词密码?
A)KLLN B)LOML C)MLLO D)NMKO
答案:
C
6.62-63=1等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
答案:
62移动成2的6次方
7.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?
并简要说明理由。
(10分)答案:
不会引起死锁(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。
但如果把int换做一个object,那么死锁会发生)
publicvoidtest(inti)
{lock(this)
{if(i>10)
{i--;
test(i);
}
}
}
8.简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。
(10)
答:
WS主要是可利用HTTP,穿透防火墙。
而Remoting可以利用TCP/IP,二进制传送提高效率。
9.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:
点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。
根据您的知识,请简要谈一下您的思路:
(10)
答:
根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中
10.String和StringBuilder的区别?
答案:
(1)System.String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错。
但是在.NET框架下,这个操作实在是划不来。
因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。
这一来二去的,耗了不少时间,产生两个垃圾。
(2)而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。
如果想要编写将连续操作依次连接起来的单个语句,这将很方便。
如果要操作一个不断增长的字符串,请你不要再用String类了。
当然,一般情况下你是觉察不出这二者效率的差异的,但如果你要对某个字符串进行大量的添加操作,那么用StringBuilder类所耗费的时间和String类简直不是一个数量级的。
11.能用foreach遍历访问的对象需要实现 _______接口或声明_________方法的类型。
答:
IEnumerable 、 GetEnumerator。
12.GC是什么?
为什么要有GC?
答:
GC是垃圾收集器。
程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
13.String s = new String("xyz");创建了几个String Object?
答:
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
14..abstract class和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。
不能创建abstract 类的实例。
然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。
不能有抽象构造函数或抽象静态方法。
Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。
取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。
在接口中,所有方法都是抽象的。
多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个有程序体。
接口只可以定义static final成员变量。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
15.sleep() 和 wait() 有什么区别?
答:
sleep()方法是使线程停止一段时间的方法。
在sleep 时间间隔期满后,线程不一定立即恢复执行。
这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
16.short s1 = 1; s1 = s1 + 1;有什么错?
short s1 = 1; s1 += 1;有什么错?
答:
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。
可修改为s1 =(short)(s1 + 1) ;short s1 = 1; s1 += 1正确。
17.如何处理几十万条并发数据?
答:
用存储过程或事务。
取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.
18.Session有什么重大BUG,微软提出了什么方法加以解决?
答:
是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
19.进程和线程的区别?
答:
进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源
20.堆和栈的区别?
答:
栈:
由编译器自动分配、释放。
在函数体中定义的变量通常在栈上。
堆:
一般由程序员分配释放。
用new、malloc等分配内存函数分配得到的就是在堆上。
21.ASP。
NET与ASP相比,主要有哪些进步?
答:
asp解释形,aspx编译型,性能提高,有利于保护源码。
22.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();//动态数组(数组列表)
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
If(!
myList.Contains(num))
{myList.Add(num);}
}
for(int i=0;i<100;i++)
{
intArr[i]=(int)myList[i];
}
23.列举ASP.NET 页面之间传递值的几种方式。
答. 1.使用QueryString, 如....?
id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
24.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答 :
this.Server.Transfer
25.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:
不是。
可以用任意类型。
26.求以下表达式的值,写出您想到的一种或几种实现方法:
1-2+3-4+……+m
答:
intNum=Convert.ToInt32(Console.ReadLine());
intSum=0;
for(inti=0;i {if((i%2)==1) {Sum+=i;} Else {Sum=Sum-i;} } Console.WriteLine(Sum.ToString()); 27.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答: 一般为3层: 数据访问层,业务层,表示层。 1).数据访问层对数据库进行增删查改。 2).业务层一般分为二层,业务表现层实现与表示层的沟通,业务规则层实现用户密码的安全等。 3).表示层为了与用户交互例如用户添加表单。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。 28.什么叫应用程序域? 答: 应用程序域可以理解为一种轻量级进程。 起到安全的作用。 占用资源小。 应用程序域是.NET中的一个重要技术改进,他用于减少运行应用程序的系统开销,这些应用程序需要与其他程序分离开来,但同时还需要彼此通信。 29.CTS、CLS、CLR分别作何解释? 答: CTS: 通用类型系统。 CLS: 通用语言规范。 CLR: 公共语言运行库。 30.什么是装箱和拆箱? 答: 从值类型转换到引用类型为装箱。 从引用类型转换到值类型拆箱。 31.什么是受管制的代码? 答: unsafe: 非托管代码。 不经过CLR运行。 32.什么是强类型系统? 答: RTTI: 类型识别系统。 33.net中读写数据库需要用到那些类? 他们的作用? 答: DataSet: 数据存储器。 DataCommand: 执行语句命令。 DataAdapter: 数据的集合,用语填充。 34.常用的调用WebService的方法有哪些? 答: 1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜单选项 35..net Remoting 的工作原理是什么? 答: 服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。 36.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。 答: string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。 37.请详述在dotnet中类(class)与结构(struct)的异同? 答: Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. 38.分析以下代码,完成填空 string strTmp = "abcdefg某某某"; int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; int j= strTmp.Length; 以上代码执行完后,i= j= 答: i=13,j=10 39.C#的四个基本技巧 答: 1.如果可能尽量使用接口来编程 .NET框架包括类和接口,在编写程序的时候,你可能知道正在用.NET的哪个类。 然而,在这种情况下如果你用.NET支持的接口而不是它的类来编程时,代码会变得更加稳定、可用性会更高。 请分析下面的代码: privatevoidLoadList(object[]items,ListBoxl) { for(inti=0;i l.Items.Add(items[i].ToString()); } 这个函数从一个可为任何对象的数组中加载ListBox,这段代码被限定为只能使用数组。 假想过些时候你发现那些对象存在数据库中,或别的集合中。 那么你需要修改程序来使用不同的集合类型。 如果你用ICollection接口来写那段程序,你就不用修改那段程序了,对于任何实现ICollection接口的类型它都能很好的工作: privatevoidLoadList(ICollectionitems,ListBoxl) { foreach(objectoinitems) l.Items.Add(o.ToString()); } ICollection被数组和所有System.Collection中的集合实现。 此外,多维数组也支持ICollection接口。 如果那还不够的话,数据库.NET类同样支持ICollection接口。 用接口写的这个函数不用需改就可以才许多中情况下使用。 2.使用属性代替原始数据 因为属性已经成为语言本身的元素,所以声明数据元素时它的作用域等级没有必要大于private。 因为代码本身会把属性看成数据元素,你并没有失去使用简单数据类型的便利性。 相反它会使你的代码更加灵活功能更加强大。 属性使你的数据元素封装性更好。 属性可以让你使用lazyevaluation来返回数据。 lazyevaluation的意思是当用户请求时才计算它的值,而不是一直保留着它。 最后,属性可以是virtual也可以是abstract。 你也可以在接口中定义属性。 这里还有维护方面的因素应当注意: 尽管操作两者的方法是一样的,但是你把一个数据元素变成属性,那么原先客户端的程序便不能访问服务端的新版本程序了。 实际上对于在Webservice中你想实现序列化的值你可以把它们变成属性来使用: privateintTheMonth=0; [XmlAttribute("Month")] publicintMonth { get{ returnTheMonth; } set{ TheMonth=value; } } 简单通过属性就可以使你的所有数据元素私有化。 3.在Producer/Consumer的Idiom中使用Delegate 当你生成一个实现produceridiom类的时候,使用deletate来通知consumer。 这种方法相对于用接口更加灵活。 Delegate是多点传送的,所以不用加额外的代码你就何以支持多用户。 相对于用接口这样做可使类之间的耦合性降低。 下面的类处理键盘输入并把它传给所有的registeredlisteners: publicclassKeyboardProcessor { privateOnGetLinetheFunc=null; publicOnGetLineOnGetLineCallback{ get{ returntheFunc; } set{ theFunc=value; } } publicvoidRun(){ //Readinput. //Ifthereisanylisteners,publish: strings; do{ s=Console.ReadLine(); if(s.Length==0) break; if(theFunc! =null){ System.Delegate[]funcs=theFunc.GetInvocationList(); foreach(OnGetLinefinfuncs){ try{ f(s); }catch(Exceptione){ Console.WriteLine ("CaughtException: {0}",e.Message); } } } }while(true); } 任何数目的listeners都可注册到producer,它们所要做的只是提供一个特定的函数: deletate。 4.注意初始化顺序 C#中对于一些变量声明加入了initializer的概念。 它们在构造函数之前被执行,实际上变量在基类的构造函数执行前之前被初始化。 所以,在初始化变量的时候不要用基类中的数据,因为它们还没有被构造。 40.40种网站设计常用技巧 1.oncontextmenu="window.event.returnValue=false"将彻底屏蔽鼠标右键 2. 3.onpaste="returnfalse"不准粘贴 4.oncopy="returnfalse;"oncut="returnfalse;"防止复制 5. 6. 7. disabled">关闭输入法 8.永远都会带着框架--不好用 -- if(window==top)top.location.href="frames.htm";//frames.htm为框架网页 //--> 9.防止被人frame--不好用 -- if(top.location! =self.location)top.location=self.location; //--> 10.网页将不能被另存为 11. onclick="window.location="view-source: "+"http: //www.williamlong.info""> 12.删除时确认不好用 if(confirm("确实要删除吗? "))location="boos.asp? &areyou=删除&page=1"">删除 13.屏蔽功能键Shift,Alt,Ctrl functionlook(){ if(event.shiftKey) alert("禁止按Shift键! ");//可以换成ALT CTRL } document.onkeydown=look; 14. 用来定义同一行内的元素,跟 15.让弹出窗口总是在最上面: 16. 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。no可用于Table