2020年最新 C# .net 面试题,月薪20K+中高级/架构师必看(一)

本文汇总了25道C# .NET面试热门题目,涵盖深拷贝、异常处理、this关键字、设计模式、垃圾回收等多个方面,适合中高级开发者和架构师复习准备。
摘要由CSDN通过智能技术生成

笔者近几年前前后后面试了50+公司左右,怎么讲呢,每个面试官的风格都不一样,要问的问题也不尽相同。但是面试是需要技巧的,提前准备工作以及如何把简历写得让人眼前一亮是很有必要的,关于这一块将在其它篇幅作介绍。话不多说,先总结出面试遇到的主流面试题,将分8篇文章,每篇25道,几乎涵盖90%以上的面试知识点,适用于中高级、架构师去复习,暂时还那么多时间把答案写出来,后续会加上,如果大家有好的答案也可以在评论区写出来,谢谢大家。

一、如何在.NET中做deep copy?

1)使用序列化反序列化对象实现深度克隆

2)使用反射实现深度克隆

参考文章:C# 中的浅拷贝和深拷贝         如何在C#中做deep copy?

二、throw与throw e的区别?应该用哪一个?

先来看下面这个例子

using System;
using System.Text;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Method2();
            }
            catch (Exception ex)
            {
                Console.Write(ex.StackTrace.ToString());
                Console.ReadKey();
            }
        }

        private static void Method2()
        {
            try
            {
                Method1();
            }
            catch (Exception ex)
            {
                throw;
            }
        }

        private static void Method1()
        {
            try
            {
                throw new Exception("Inside Method1");
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}

上面的代码输出的结果如下:显示了完整的层次结构和引发异常的方法名称。

现在单独把Method2()方法中的异常抛出throw改成throw ex。

private static void Method2()
{
     try
     {
         Method1();
     }
     catch (Exception ex)
     {
         throw ex;
     }
}

接着再把程序运行一遍,执行的结果如下所示:可以看出引发异常的Method1并没有被抛出。throw ex忽略所有先前的层次结构,重置了堆栈跟踪,抛出的异常将成为“原始”异常,因此所有先前的堆栈跟踪都不会存在。

结论:引发异常后,堆栈携带的部分信息就是堆栈跟踪。堆栈跟踪是方法调用层次结构的列表,该列表以引发异常的方法开始并以捕获异常的方法结束。如果通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值