1.简述 private、 protected、 public、 internal 修饰符的访问权限。

答:private 私有,成员只能由定义类型或者任何嵌套类型中的方法使用;

  protected 受保护, 成员只能由定义类型、任何嵌套类型或者不管在什么程序集中的派生类型中的方法访问;

  public 公有,成员可在任何程序集中的任何类型的任何方法访问;

  internal 程序集内公有,成员可在程序集内的任何方法中访问。

2.一列数的规则如下: 1、1、2、3、5、8、13、21、34......  求第30位数是多少,用递归算法实现。

答:

 1 static Int32 GetRecursionValue(Int32 num)
 2         {
 3             if (num <= 0)
 4             {
 5                 return 0;
 6             }
 7             else if (num > 0 && num <= 2)
 8             {
 9                 return 1;
10             }
11             else
12             {
13                 return GetRecursionValue(num - 1) + GetRecursionValue(num - 2);
14             }
15         }

3.C#中的委托是什么?事件是不是一种委托?

答: 委托是一种特殊的数据类型,它指向方法,可以看做是指向方法的指针,通过委托可以把方法作为参数来进行传递;

  事件是一种特殊的委托。

4.override与重载的区别

答:override是重写,重写只存在与类和父类中,重写是实现对父类方法的重新实现;重载存在于一个类中,一般用于在一个类中实现若干重载的方法,这些方法的名称相同而参数形式不同。

5.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty

答:

1 foreach (var item in this.Controls)
2             {
3                 if (item is TextBox)
4                 {
5                     (item as TextBox).Text = String.Empty;
6                 }
7             }

6.请编程实现一个冒泡排序算法?

 1 static void sort(Int32[] arrays)
 2         {
 3             Int32 temp = 0;
 4             for (int i = 0; i < arrays.Length; i++)
 5             {
 6                 for (int j = i+1; j < arrays.Length; j++)
 7                 {
 8                     if (arrays[j] > arrays[j + 1])
 9                     {
10                         temp = arrays[j];
11                         arrays[j] = arrays[j + 1];
12                         arrays[j + 1] = temp;
13                     }
14                 }
15             }
16         }

7.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

答:c#中的索引器是有参属性,属性的本质其实是方法;不是只能根据数字进行索引。

8.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m

答:

 1 static void Function(Int32 m)
 2         {
 3             Int32 sum = 0;
 4             for (int i = 0; i < m; i++)
 5             {
 6                 if (i % 2 == 0)
 7                 {
 8                     sum -= i;
 9                 }
10                 else
11                 {
12                     sum += i;
13                 }
14             }
15         }

9.在下面的例子里

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);}

View Code

当使用new B()创建B的实例时,产生什么输出?

答:输出:x=1 y=0;

解析:构造B的实例的时候会先调用其基类的构造函数,此时x=1,y为其默认初始值0。

10.什么叫应用程序域?

答:应用程序域即AppDomain,为了保证代码的键壮性CLR希望不同服务功能的代码之间相互隔离,这种隔离可以通过创建多个进程来实现,但操作系统中创建进程是即耗时又耗费资源的一件事,所以在CLR中引入了AppDomain的概念,AppDomain主要是用来实现同一进程中的各AppDomain之间的隔离.

11.CTS、CLS、CLR分别作何解释?

答:CTS Common type System 通用系统类型; CLS Common Language Specifcation 公共语言规范;CLR Common Language Runtime 公共语言运行时。

12.什么是装箱和拆箱?

答:值类型转换为引用类型称为装箱,引用类型转换为值类型称之为拆箱。

13.什么是受托管的代码?

答:受托管的代码是指运行在.NET公共语言运行时CLR的代码,unsafe标识非托管代码,不经过CLR运行,需要程序员自行分配和释放内存空间。

14.什么是强命名程序集?

答:弱命名和强命名的.net程序集在结构上是一致的,他们都有相同的(PE)格式(PE+)头,CLR头,metaData,maniftest和IL,其区别在于强命名的程序集有发布者的公钥和私钥对。对于弱命名的.net程序集他只能被一个程序调用,要想使程序集被多个程序共享使用或者是编写类库,必须对程序集进行强命名。对于一个强命名的程序集,CLR通过下面的信息来唯一的识别它:a.文件名但是不包括扩展名;b.版本号Version 如1.02.232.1;c.文化Cultrue如“en-us”;d.公钥的散列值,PublicKeyToken 如b03f5f7f11d50a3a。在弱命名的情况下,CLR会忽略程序集的版本号,只是当需要使用卫星程序集的时候使用文化信息,在发布程序的时候微软建议使用强命名的程序集,由于公钥私钥的存在,这样做可以有效避免同名同版本同文化的程序集的冲突。

15.在.net中,配件的意思是?

答:是指程序集。

16.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。

答:str=null是指声明字符串str,但不给他分配内存空间,str=“”,是指声明字符串str,给它分配长度为""的内存空间。

17.请详述在.net中类(class)与结构(struct)的异同?

答:类是引用类型,可被实例化,其值分配在堆上,结构体是值类型,其值分配在栈上。

18.分析以下代码,完成填空

string strTmp = "abcdefg某某某";int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;int j= strTmp.Length; 

View Code

以上代码执行完后,i= j=?

答: i=13,j=10

19.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。

public void test(int i)
{lock(this){if (i>10){i--;test(i);}}
}

View Code

答:不会发生死锁,但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生。

20.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路。

答:点击列头时获取该列的列ID,根据列ID将该列的所有行值重新排序重新绑定值。

21.面向对象语言的三大特性?

答:封装、继承、多态

22.能用foreach遍历访问的对象需要实现的接口和方法是?

答:实现IEnumerable接口,实现GetEnumerator方法.

23.什么是GC,为什么要有GC?

答:GC是垃圾回收器。它对托管堆上的内存进行管理,实现垃圾内存的回收,程序员不需要关心内存的管理与释放。

24.Sting s=new String("xyz");,创建了几个对象?

答;创建两个对象,一个是对象“xyz”,另一个是指向该对象的对象s.

25.abstract class和interface有什么区别?

答:abstract class是抽象类,本质上还是一个类,interface是接口,是用来实现的,用来规范约束实例的一些行为;

声明方法的存在而不去实现它的类被叫做抽象类,它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现类的情况,也不能实现抽象类的实例,然而可以创建一个变量,其类型是一个抽象类,并让它指向某一个具体的子类的一个实现。不能有抽象构造函数或者抽象的静态方法,抽象类的子类为他们父类中的所用方法提供实现,否则他们也是抽象类,取而代之,在子类中实现该方法,知道其行为的其他类可以在类中实现这些方法。

接口是抽象类的变体,在接口中,所用方法都是抽象的,多继承性可通过实现这样的几口而获得,接口中所有方法都是抽象的,没有一个程序体,接口只可以定义static final成员变量,接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时他定义所有这种接口的方法,然后他可以在实现了该接口的类的任何对象上调用该接口的方法。

26.启动一个线程使用Run()还是start()?

答:启用一个线程用Start()方法.

27.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?

答:接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。

28.构造函数是否可以被override?

答:构造器不能被继承,所以不能被override,但是构造函数可以重载。

29.是否可以继承string类?

答:string 类是密封类,所以不可以被继承。

30.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

答:finally中的代码一定会被执行,在return之前执行。

31.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

答:不对,如果两个对象值相等,那么它们的hascode一定也相等。

32.数组有没有length()这个方法? String有没有length()这个方法?

答:数组和String都没有length()这个方法,它们有Length属性。

33.sleep() 和 wait() 有什么区别?

答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

34.进程和线程的区别?

答:进程是系统进行资源分配和调度的单位,线程是CPU调度和分配的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

35.栈和堆的区别?

答:栈:由编译器自动分配、释放,在函数体中定义的变量即局部变量通常在栈上;堆:一般由程序员分配释放,new,malloc等内存分配函数分配得到的就是在堆上。

36.产生一个int数组,长度为100.,并向其中随机插入1-100,并且不能重复。

static Int32[] Function(){Int32[] result = new Int32 [100];ArrayList mylist = new ArrayList();Random random = new Random();while (mylist.Count < 100){Int32 num = random.Next(1,101);if (!mylist.Contains(num)){mylist.Add(num);}}for (int i = 0; i < mylist.Count; i++){result[i] = (Int32)mylist[i];}return result;}

37.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令和语句 new 创建实例 new 隐藏基类中方法。

答:using可用作引入命名空间或使用非托管资源,使用完对象后自动执行实现了IDisposable接口的Dispose方法;

new 新建实例或者隐藏父类方法。

38.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个。

答:

static String DealStringFun(String sourceStr){String result = sourceStr;result = sourceStr.Trim();result=Regex.Replace(result," *"," ");return result;}

39.下面这段代码输出什么?为什么?

int i=5;int j=5;if (Object.ReferenceEquals(i,j))Console.WriteLine("Equal");elseConsole.WriteLine("Not Equal");

View Code

答:输出Not Equal,因为比较的是两个对象,该算法存在装箱。

40.什么是反射?

答:动态获取程序集信息。

41.什么是虚函数,什么是抽象函数?

答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须重写。

42.c#中property和attribute的区别?

答:一个数属性,用于存取类的字段,一个是特性,用来标识类、方法等得附加性质。

43.c#中的三元运算符?

答:?:

44.当整数a赋值给一个object对象时,整数a将会被?

答:值类型转换为引用类型,装箱。

45.类成员的访问形式?

答:类内部访问,通过this指针访问,类外部访问,通过类实例来访问。

46.float f=-123.567F; int i=(int)f;i的值现在是?

答:-123.

47.委托声明的关键字是?

答:delegate

48.用sealed修饰的类有什么特点?

答:是密封类,不能被继承。

49.在Asp.net中所有的自定义用户控件都必须继承自?

答:control;

50.在.Net中所有可序列化的类都被标记为?

答:[serializable]

51.在.net托管代码中我们不用担心内存泄漏,这是因为有了?

答:GC垃圾回收器。

52.net错误处理机制是什么?

答:.net错误处理机制采用try-catch-finally结构,发生错误时,层层上抛,直到找到匹配的catch为止。

53.&与&&的区别。

答:&是位运算,标识按位与,&&是逻辑运算符,标识逻辑与。

54.Error和Exception有什么区别?

答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

转载于:https://www.cnblogs.com/mohanchen/p/9424650.html

.NET常见问题汇总相关推荐

  1. exec不同文件l怎么汇总_ABAQUS常见问题汇总 - 2.0版.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 ABAQUS常见问题汇总 - 2.0版.doc1 ...

  2. 使用maven下载依赖包及maven常见问题汇总

    最近下载了SPRING3.1.4,发现只有SPRING相关的源码,没有其依赖的jar包.SPRING依赖的jar相当多,自己一个一个的下载比较费劲,就仔细阅读了SPRING下载说明,新版本的SPRIN ...

  3. java 遇到的问题_Java常见问题汇总(一)

    原标题:Java常见问题汇总(一) 每天在写Java程序,其实里面有一些细节大家可能没怎么注意,这不,有人总结了一个我们编程中常见的问题.虽然一般没有什么大问题,但是最好别这样做.另外这里提到的很多问 ...

  4. 系统部署常见问题汇总

    系统部署常见问题汇总 文章目录 系统部署常见问题汇总 引用文件路径问题 前端代码兼容IE问题 IE不支持Promise问题 IE浏览器GET请求缓存问题 前端代码混淆问题 npx的使用 IE兼容new ...

  5. 集成 jpush-react-native 常见问题汇总 ( iOS 篇)

    给 iOS 应用添加推送功能是一件比较麻烦的事情,本篇文章收集了集成 jpush-react-native 的常见问题,目的是为了帮助用户更好地排查问题 1.收不到推送 确保是在真机上测试,而不是在模 ...

  6. fastText中常见问题汇总

    fastText中常见问题汇总: 1.什么是fastText fastText是一个用于文本分类和词向量表示的库,它能够把文本转化成连续的向量然后用于后续具体的语言任务,目前教程较少! 2.为什么训练 ...

  7. 软考考后常见问题汇总

    摘要:软考考后常见问题汇总,查询成绩.证书领取.考试复核等 一.考试分数线什么时间出?合格分数线会不会有变化? 答:合格分数线出成绩一个月左右,如2020年12月18日出成绩,2021年1月11日出合 ...

  8. oracle 数据库问题,ORACLE数据库常见问题汇总,oracle常见问题汇总

    ORACLE数据库常见问题汇总,oracle常见问题汇总 提交事务的时候提示(数据库被一个用户锁住的解决方法) select object_id,session_id,locked_mode from ...

  9. tcp当主动发出syn_一文读懂TCP四次挥手工作原理及面试常见问题汇总

    简述 本文主要介绍TCP四次挥手的工作原理,以及在面试中常见的问题. 字段含义 seq序号:Sequence Number,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行 ...

  10. mysql函数和索引冲突问题_Mysql索引常见问题汇总

    Q1:数据库有哪些索引?优缺点是什么? 1.B树索引:大多数数据库采用的索引(innoDB采用的是b+树).能够加快访问数据的速度,尤其是范围数据的查找非常快.缺点是只能从索引的最左列开始查找,也不能 ...

最新文章

  1. MaxCompute(原ODPS) 脑图 - 常用知识总结
  2. java连接字符串_Java字符串连接运算符
  3. 给array添加元素_前囧(06篇)Array 方法详解
  4. linux alsa 录音程序,Linux下alsa直接录音代码
  5. 服务器架设篇-----CentOS架设WWW服务器-Nginx+Mysql+PHP
  6. Linux命令之cd
  7. Python 基本输出
  8. android编程常见问题- Resource ID #0x7f070001 type #0x12 is not valid
  9. 【OS学习笔记】四十 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务二代码
  10. 美观大气!一款基于 Spring Boot 开发 OA 开源产品
  11. 总结之前有道笔记的内容--对于postdelay方法的讲解
  12. PHP Predefined Interfaces 预定义接口
  13. 今天开始用 VSU 2010
  14. REFPROP+matlab拟合物性参数公式
  15. 背离、背驰的区别及简单的判断方法
  16. Nacos一致性协议 CP/AP/JRaft/Distro协议
  17. SLM2110 600V 2A 逆变电源专用芯片替代IR2110S 移动储能解决方案
  18. xxx was compiled with optimization - stepping may behave oddly; variables may not be available.
  19. windows 离线安装nessus
  20. 2019年安徽大学ACM/ICPC实验室新生赛(公开赛)

热门文章

  1. Entity Framework Core 2.0的突破性变更
  2. js文件引用方式及其同步执行与异步执行
  3. 于ubuntu配置hadoop当问题
  4. arduino 中断例程
  5. nginx配置location总结及rewrite规则写法
  6. 【java】java内存模型 (1)--基础
  7. logcat错误日志
  8. linux中通过命令生成hex值
  9. 使用django的用户帐号登录openfire
  10. 比较经典的三层交换机实验