.NET软件开发工程师面试题(下)

1. C#中的垃圾回收机制?

答:在C#中有GC垃圾回收器,一般来说系统会自动检测不使用的对象或者变量对其进行内存释放不需要进行手动调用,Collector就是强制进行垃圾回收使得内存即使得到释放提高效率

2.什么是面向对象?

答:C#中面向对象是一种编程思想

  •        封装:所谓封装也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性
  •        继承:继承概念的实现方式有二类:实现继承与接口继承实现继承是指直接使用基类的 属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
  •        多态:所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们可以通过相同的方式予以调用。

3.什么是拆箱和装箱?

答:值类型到引用类型是装箱,引用类型到值类型是拆箱

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

答:

  • private 私有成员, 在类的内部才可以访问。
  • protected 保护成员,该类内部和继承类中可以访问。
  • public 公共成员,完全公开,没有访问限制。
  • internal 在同一命名空间内可以访问。

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

答:

  1. 委托 委托类似于C/C++中的函数指针,它能够引用函数,但在C#中委托是一个对象,且是安全的。一个委托类型的变量可以引用一个或多个方法,委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。
  2. 事件是一种特殊的委托

6. C#中重写和重载的区别?

答:

抽象方法必须重写,虚方法可以重写也可以不重写

  • 重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
  • 重载:一个类中的方法与另一个方法同名,但是参数列表不同,这种方法称之为重载方法。

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

   答: 

try{throw new Exception();}catch (Exception){return arr;}finally{arr[1] = "three";}复制代码

错误的处理顺序:

finally先,catch次之,最后退会try代码..取消此次操作.返回catch中的异常信息.当然,你也可以定制自己的错误处理机制...如果你的异常处理中包含finally块.则此finally无论是否发生异常始终会被执行...

8.线程和进程的区别?

答:

  1. 进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)
  2. 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,一个进程包含多个线程

9.什么是wcf?什么是WebServices?

答:

1.Web Service:严格来说是行业标准,也就是Web Service 规范,既不是框架,也不是技术。它有一套完成的规范体系标准,而且在持续不断的更新完善中。它使用XML扩展标记语言来表示数据(这个是跨平台跨语言的关键)

2.WCF 是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准也不是规范。

WCF其实一定程度上就是ASP.NET Web Service,因为它支持Web Service的行业标准和核心协议,因此ASP.NET Web Service和WSE能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持XML格式化,而且提供了自己的格式化器)。 

10. Public static const int a=1;这段代码错在哪里?

答:const不能被修饰为static ;因为定义为常量 (const )后就是静态的(static )

11.在.net中不想让一个类被继承用哪个单车修饰?序列化一个类用哪个单词标记?

答:

1.只需要在定义类时加上 sealed 关键字

public sealed class Room
{
    。。。。。。
}

     2.在类定义前写上[Serializable()]

[Serializable()]
public class User{。。。。。。}

12.简述C#中类与接口的区别?

答:

  • 接口的方法只能声明不能定义;类可以   
  • 接口里面的方法不能为abstrat或者virtual;类可以

类:接口——>实现接口;
类:类——>继承类;
接口:接口——>继承接口
一个类可以实现多个接口;一个类只能继承一个类

13.在C#中我们定义参数时经常会用到ref和out简述一下区别?

答:

ref型传递变量前,变量必须初始化,否则编译器会报错,而out型则不需要初始化  ref型传递变量,数值可以传入方法中,而out型无法将数据传入方法中。换而言之,ref型有进有出out型只出不进。 out型参数 与ref型类似,仅用于传回结果。

14. C#中有几种循环?分别用在什么场合?

答:

  • 1.do while:不管符不符合条件都会运行一次,在运行一次在之后再进行判断是否符合条件。
  • 2.while:首先判断是否符合条件在进行运行。
  • 3.for和while的意思差不多只是表达形式不同;一般需要定义局部性控制循环的的变量使用。
  • 4.foreach:只能对数据进行读;在其作用域内不能对进行遍历的值做修改,其遍历顺序只能递增而且其控制循环变量是默认的只能++

15.随便写出一个json格式串?

答:

[{"age":"18"},{"name":"张三"},{"sex":"男"}]复制代码

16. C#实现代码编程题:定义一个int数组,长度为100,并向其中随机插入1-100的数字,保证不重复?

答:

        int[] arr = new int[100];

        List<int> list = new List<int> ();
        for (int i = 0; i < arr.Length; i++) {
            list.Add (i + 1);
        }
        Random rd = new Random ();
        int Index = 0;
        while (list.Count > 0) {
            int num = rd.Next (0, list.Count);
            int temp = list [num];
            arr [Index] = temp;
            Index++;
            list.Remove (temp);
        }复制代码

17. C#实现代码编程题:编写一个冒泡排序的方法,参数传入一个int数组?

public static int[] Sort(int[] n1)
        {
 
            
            int temp;
            
            for (int i = 0; i < n1.Length - 1; i++)
            {
                
                for (int j = 0; j < n1.Length - 1 - i; j++)
                {
 
                    if (n1[j] > n1[j + 1])
                    {
                       
                        temp = n1[j];
                        n1[j] = n1[j + 1];
                        n1[j + 1] = temp;
                    }
                }
            }
 
            return n1;
        }

复制代码

18.谈谈你对remoting和webservice两项技术的理解?

答:

WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

  • remoting是.net 中用来跨越machine, process, appdomain 进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM
  • Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型

19. C#代码编程题:1 1 2 3 5 8 13 21 34 55用递归算法编写一个方法,传入n第几位,得出第几位上的数值?

答:

 public static int fn(int a)
        {
            if (a>2)
            {
                return fit(a - 1) + fit(a - 2);
            }
            else
            {
                return 1;
              
            }
        }
复制代码

20. C#实现代码编程题:

1-2+3-4+

……

+m(m为奇数)

输出结果?

答:

public static int sum(int shu)
{int sum=0;
   
    for (int i = 1; i <= shu; i++)    {
        
       if(i%2==0)
        {
            sum-=i
        }
        else{
         sum+=i
        }
    }}  
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值