最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

NET面试笔试题 (2)

来源:动视网 责编:小OO 时间:2025-10-02 10:53:22
文档

NET面试笔试题 (2)

1.在.net(C#orvb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。答案:this(C#)Me(vb.net).2.在.net(C#orvb.net)中如何取消一个窗体的关闭。答案:privatevoidForm1_Closing(objectsender,System.ComponentModel.CancelEventArgse) {   e.Cancel=true; }3.在.net(C#orvb.net)中,Appplication.Exit还是For
推荐度:
导读1.在.net(C#orvb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。答案:this(C#)Me(vb.net).2.在.net(C#orvb.net)中如何取消一个窗体的关闭。答案:privatevoidForm1_Closing(objectsender,System.ComponentModel.CancelEventArgse) {   e.Cancel=true; }3.在.net(C#orvb.net)中,Appplication.Exit还是For
1.在.net(C# or vb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。答案:this(C#) Me(vb.net).

2.在.net(C# or vb.net)中如何取消一个窗体的关闭。

答案:

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

 {

    e.Cancel=true;

 }

3.在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?

答案:一个是退出整个应用程序,一个是关闭其中一个form

4.在C#中有一个double型的变量,比如10321.5,比如122235401.214,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10  321.50和£122  235  401.22

答案:     public static void Main()

               {

                   //System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");

System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");//为英国货币类型

         decimal y = 9999999999999999999999999999m;

                     string str = String.Format(MyCulture, "My amount = {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个

答案:A LL

问题三:下列哪一个是单词密码?

      A) KLLN   B) LOML   C) MLLO   D)NMKO

     答案:C

6.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?

答案:62移动成2的6次方

7. 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?             并简要说明理由。(10分)                                                                      答案: 不会引起死锁(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不      会出现死锁。但如果把int换做一个object,那么死锁会发生)

       public void test(int i)

        {   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

答:        int Num = Convert.ToInt32(Console.ReadLine());

            int Sum = 0 ;

            for (int i = 0 ; i < Num + 1 ; 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支持的接口而不是它的类来编程时,代码会变得更加稳定、可用性会更高。请分析下面的代码:

private void LoadList (object [] items, ListBox l)

{

 for (int i = 0; i < items.Length;i++)

       l.Items.Add (items[i].ToString ());

}

  这个函数从一个可为任何对象的数组中加载ListBox,这段代码被限定为只能使用数组。假想过些时候你发现那些对象存在数据库中,或别的集合中。那么你需要修改程序来使用不同的集合类型。如果你用ICollection接口来写那段程序,你就不用修改那段程序了,对于任何实现ICollection接口的类型它都能很好的工作:

private void LoadList (ICollection items,ListBox l)

{

      foreach (object o in items)

      l.Items.Add (o.ToString ());

}  

  ICollection被数组和所有System.Collection中的集合实现。此外,数组也支持ICollection接口。如果那还不够的话,数据库.NET类同样支持ICollection接口。用接口写的这个函数不用需改就可以才许多中情况下使用。

  2. 使用属性代替原始数据

  因为属性已经成为语言本身的元素,所以声明数据元素时它的作用域等级没有必要大于private。因为代码本身会把属性看成数据元素,你并没有失去使用简单数据类型的便利性。相反它会使你的代码更加灵活功能更加强大。属性使你的数据元素封装性更好。属性可以让你使用lazy evaluation来返回数据。lazy evaluation的意思是当用户请求时才计算它的值,而不是一直保留着它。

  最后,属性可以是virtual也可以是abstract。你也可以在接口中定义属性。

  这里还有维护方面的因素应当注意:尽管操作两者的方法是一样的,但是你把一个数据元素变成属性,那么原先客户端的程序便不能访问服务端的新版本程序了。实际上对于在Web service中你想实现序列化的值你可以把它们变成属性来使用:

private int TheMonth = 0;

[XmlAttribute ("Month")]

public int Month

{

 get {

  return TheMonth;

 }

 set {

  TheMonth = value;

 }

}

  简单通过属性就可以使你的所有数据元素私有化。

  3. 在Producer/Consumer 的Idiom中使用Delegate

  当你生成一个实现producer idiom类的时候,使用deletate来通知consumer。这种方法相对于用接口更加灵活。Delegate是多点传送的,所以不用加额外的代码你就何以支持多用户。相对于用接口这样做可使类之间的耦合性降低。

  下面的类处理键盘输入并把它传给所有的registered listeners:

public class KeyboardProcessor

{

private OnGetLine theFunc = null;

public OnGetLine OnGetLineCallback {

 get {

  return theFunc;

 }

 set {

  theFunc = value;

 }

}

public void Run (){

// Read input.

// If there is any listeners, publish:

string s;

do {

 s = Console.ReadLine ();

 if (s.Length == 0)

  break;

 if (theFunc != null){

  System.Delegate [] funcs =theFunc.GetInvocationList();

  foreach (OnGetLine f in funcs) {

   try {

    f (s);

   } catch (Exception e) {

    Console.WriteLine

    ("Caught Exception: {0}", e.Message);

   }

  }

 }

} while (true);

}

  任何数目的listeners都可注册到producer,它们所要做的只是提供一个特定的函数:deletate。

  4. 注意初始化顺序

  C#中对于一些变量声明加入了initializer的概念。它们在构造函数之前被执行,实际上变量在基类的构造函数执行前之前被初始化。

  所以,在初始化变量的时候不要用基类中的数据,因为它们还没有被构造。

40.40种网站设计常用技巧

1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键

no
可用于Table

2. 取消选取、防止复制

3. onpaste="return false" 不准粘贴

4. oncopy="return false;" oncut="return false;" 防止复制

5. IE地址栏前换成自己的图标-- 不好用

6. 可以在收藏夹中显示出你的图标-- 不好用

7. 关闭输入法

8. 永远都会带着框架-- 不好用

9. 防止被人frame-- 不好用

10. 网页将不能被另存为

Top