首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET基础面试题整理

当然,如果你抛出新的异常之前设置innerException的话,可以通过innerException的堆栈访问原有的堆栈。...使用时有什么需要注意的吗? 如何选择是定义一个“完全抽象”的抽象类,还是接口?什么是接口的“显式实现”?为什么说它很重要?...相同点:都不能被直接实例化,都通过继承实现其抽象方法 不同点: (1) 接口支持多继承;抽象类不能实现多继承。 (2) 接口只能定义行为;抽象类既可以定义行为,还可能提供实现。...(3) 抽象类允许包含实现的virtual成员,所以能为派生类成员提供一个默认的实现,而接口所有的成员自动成为virtual成员,而且不能包含任何实现 013 13.字符串是引用类型类型还是结构类型?...您还接触哪些.NET以外的技术,能和.NET或.NET中有针对性的部分做个对比吗?

1.6K21

C#中的枚举器(译)

如此的话,可以这样书写代码: ListBox lb = new ListBox("a", "b", "c", "d", "e", "f", "g", "h"); foreach (string s in...输出是: Hello World Who Is John Galt 实现 IEnumerator 接口 注意到ListBoxEnumerator不仅需要实现IEnumerator接口,对于ListBox...public void Reset() { index = -1; } 每次MoveNext被调用的时候,外部类的数组检查时候已经到了末尾,如果是这样,方法返回false。...C# 2.0 的解救办法 使用C# 2.0 这些问题如同五月末的雪般融化了。在这个例子的2.0版本中,我重写上面的列表,使用C# 2.0的两个新特性:泛型 和 枚举器。...这样,下面的语句是完全正确的C#语句: public IEnumerator GetEnumerator() { yield return "Who"; yield return " is"

1.9K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C# 字符串排序时指定偏好的排列顺序

    C# 字符串排序时指定偏好的排列顺序 独立观察员 2023 年 8 月 25 日 不知道大家有没有遇到过某些字符串数据在显示到界面上时需要按一定顺序排列的情况,如果内容是数值或字母自然好办,默认的排序功能就搞定了...那么如果是中文字符串呢?本文将会提供一个能在调用 OrderBy 方法时传入的字符串比较器,能够在一定程度上指定你偏爱的排列顺序,下面就一起来看看吧。...这个应该就是中文默认排序导致的,目测是按拼音首字母进行排序(“长” 可能被认为是 “zhang”)。那么如果我们想按照 大 -> 中 -> 小 这样的顺序进行排列,要怎么做呢?...在比较方法中,先使用分隔符,将两个字符串分别分割成多个部分,然后对于两者对应的部分,查找是否有适用的排序偏好列表,有的话,按照列表来排序,没有则使用默认的字符串排序。...整个单元测试代码如下,可以整体对比一下: 最后,说明一下,本方法实现了本次需求,其余的情况应该也是可以的,不过未进行测试,大家可以自行测试,也欢迎提出修改建议。

    36641

    【C++】STL——stack OJ练习

    那我们提供这样一种思路: 我们这样做: 实现的MinStack 类里有两个成员: st就是我们正常定义的要使用的栈,min_st是一个辅助栈,用来帮助我们获取最小值。...,可以入也可以不入,但入得话一定不入6,因为入6的话栈顶元素就不是最小值了,所以如果选择入的话再入一个4: 那这样min_st栈顶的元素还是最小的。...再入的话一样的操作: 那我们在这里选择不入: 那就是这样: 当入栈的新元素小于等于min_st.top()(或第一次min_st为空)时 min_st才入栈这个元素。...,是不是也没问题啊,因为它会走初始化列表,对于自定义类型也会去调它的默认构造 那剩下的接口就很好实现了,我们上面已经分析过了,这里就直接上代码了: class MinStack { public:...,我们可以考虑这样做: 我们的minst里面呢不在存最小值,而去存它的值和个数: 这样需要minst进行pop的话,把对应的个数- -就行了,怎么存个数呢,可以定义一个结构体: 那这样如果重复值比较多的话

    14310

    GraphQL

    如果能这样做的话,那么后端程序猿小哥可能要开心死了,前端妹子也不用那么苦口婆心地劝说后端小哥哥了。 所以GraphQL隆重出世了!那么问题来了!...先看REST API的做法: REST API获取数据 再来看GraphQL是怎么做的: GraphQL获取数据 可以看出其中的区别: 与REST多个endpoint不同,每一个的 GraphQL 服务其实对外只提供了一个用于调用内部接口的端点...GraphQL需要直接对接数据库吗? 使用GraphQL需要对现有的后端服务进行大刀阔斧的修改吗? 答案是:NO!不需要!...这样一来,只要是数据源有的数据, GraphQL 层都可以让客户端按需获取,不必专门再去定接口了。...想要学习更多Graphql的知识,可以去GraphQL.cn。 好了,一个入门级的Graphql介绍篇就这样完结了(尽管篇幅也很大哈哈)。 不知道你懂得它的原理和优点了吗? 你对它感兴趣吗?

    2.6K65

    我为什么要放弃RESTful,选择拥抱GraphQL

    如果能这样做的话,那么后端程序猿小哥可能要开心死了,前端妹子也不用那么苦口婆心地劝说后端小哥哥了。 所以GraphQL隆重出世了!那么问题来了!...先看REST API的做法: REST API获取数据 再来看GraphQL是怎么做的: GraphQL获取数据 可以看出其中的区别: 与REST多个endpoint不同,每一个的 GraphQL...GraphQL需要直接对接数据库吗? 使用GraphQL需要对现有的后端服务进行大刀阔斧的修改吗? 答案是:NO!不需要!...这样一来,只要是数据源有的数据, GraphQL 层都可以让客户端按需获取,不必专门再去定接口了。...想要学习更多Graphql的知识,可以去GraphQL.cn。 好了,一个入门级的Graphql介绍篇就这样完结了(尽管篇幅也很大哈哈)。 不知道你懂得它的原理和优点了吗? 你对它感兴趣吗?

    2.4K40

    理解委托类型

    (并不是所有的引用类型都是class) 是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联。 与委托的签名(由返回类型和参数组成)匹配的任何可访问类或结构中的任何方法都可以分配给该委托。...不能因为IL里面是用class修饰就一厢情愿的说这个东西是类,如果是这样Interface,enum,struck什么的也都是类了,最后他们都是2进制的数据,都是一样的东西) ---- 现在让我们看看所谓委托的整个过程...yourMessage); 就像这样(不能定义在接口或函数中,但是可以在struct里面定义) 我们看看CLR是怎么处理这句话的 ?...来分析他说的这句十分精确的话“仅可从声明它们的类或结构(发行者类)中调用”  乍一看不是很简单实现吗,吧这个委托的示例用private 来修饰不就可以了(事实上VS在遇到event的时候也是这么处理的)...IL终究不是C#,不会影响结论:在C#委托 不是 类 委托的一般应用 跨类跨线程的消息通知(委托的执行是定义委托的类或线程,委托的赋值是其他类或线程,在没有invoke的情况下调用线程是执行线程,这种问题一般加事件修饰

    72000

    苏州同程旅游学长给我的全面的面试知识库

    此列表涵盖了所有针对新生的C#问题以及针对经验丰富的应聘者的C#面试问题和答案。 ?...公开声明的变量或方法可在应用程序中的任何位置访问。静态声明的变量或方法可以全局访问,而无需创建类的实例。默认情况下,静态成员不可全局访问,这取决于所使用的修改的访问类型。...11、什么是序列化? 当我们想通过网络传输对象时,我们必须将对象转换为字节流。将对象转换为字节流的过程称为序列化。为了使对象可序列化,它应该实现ISerialize接口。...14、什么是接口类?举一个例子 接口是仅具有公共抽象方法的抽象类,并且这些方法仅具有声明而不具有定义。这些抽象方法必须在继承的类中实现。...在数组中,我们只能具有相同类型的项目。比较时,数组的大小是固定的。数组列表类似于数组,但是没有固定的大小。 20、可以重写私有虚拟方法吗? 不可以,因为在课外无法访问它们。

    3K20

    对线面试官 - Java基础面试题【一】

    派大星: 首先从数据结构方面讲的话,两者是不同的,ArrayList底层是基于数组实现的,LinkedList底层是基于链表实现的。...从接口角度来说,两者都实现了List接口,但是LinkedList还额外实现了Deque接口,所以LinkedList还可以当做队列来使用 面试官:可以,但是上述List并非是线程安全的。...派大星:可以尝试使用CopyOnWriteArrayList,它可以保证线程安全。 面试官:那你能简单讲一讲它的底层实现原理吗?...最后当所有元素都转移完了之后,将新数组赋值给HashMap对象的table属性即可 JDK1.8版本: 会先生成新数组 接着会遍历老数组中每个位置上的链表或红黑树 然后会进行判断如果是链表,则直接将链表中的每个元素重新计算下标...,并添加到新数组中去 如果是红黑树,则先遍历红黑树,先计算出红黑树中每个元素对应在新数组中的下标位置 统计每个下标位置的元素个数 如果该位置下的元素个数超过了8,则生成一个新的红黑树,并将根节点添加到新数组对应的位置

    14430

    【初阶数据结构】——循环队列

    但是使用循环队列,我们能使用这些空间去存储新的值。 要求我们实现的循环队列要有以下几个接口: 2. 结构的选择:数组 or 链表?...那下面要实现循环队列的话,我们采用哪种结构呢,数组还是链表呢? 我们假设循环队列的长度k(当然实现好之后k传几构造出来长度就是几)为4,我们来分析一下。...因为我们这里是一个单向循环的链表,找尾是比较麻烦的。 当然也可以解决: 可以再增加一个指针prev,记录rear的前一个,这样只要队列不为空,就可以通过prev直接获取队尾元素。...那也很简单,走到结尾的时候,我们让它回绕到下标0的位置就行了。 判空判满 那数组实现的话如何判空判满呢?...如果是上面这种情况呢确实是,但是: 如果是下面这样呢? rear+1是不是就越界了啊。 那怎么办呢?

    26310

    笑说设计模式-小白逃课被点名

    老师笑着说道:“小白,请你解答一下屏幕上的问题。” 题目:请使用c#、java、python、php或其他任一面向对象编程语言实现输入俩个合法数字和一个合法符号,输出对应结果的功能。...优/缺点 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数不同来返回不同的对象实例。不修改代码的话,是无法扩展的 优点:客户端可以免除直接创建产品对象的责任,而仅仅是“消费”产品。...new一个文件日志工厂,将配置信息作为参数传递,便于后期方法调用;如果是输入到控制台的配置。new一个日志工厂也是做同样的操作 4、每一个工厂只管理自己的事情,但是应该都拥有日志输出这个接口。...C_橘子工厂.cs 老师:“这样的方式当然是可以的,可以如果我有10个工厂呢,难道我们要建立10*2=20个类吗,这样程序的复杂度就是直线上升,不利于维护。”...小白:“那怎么办呢,用老师你说的那种抽象工厂吗?如果用,又应该怎么做呢” 老师:“是的,在这样的场景下,抽象工厂是最能匹配的设计模式。

    40250

    2022年Unity面试题分享

    ,抽象类重写override抽象方法 接口和抽象都不能被实例化,派生类必须实现基类或接口的方法 抽象类可以派生自另一个抽象类,接口可以多重实现,抽象类只能单一继承 举个例子:抽象类门,多接口继承【...Array数组:需要声明长度,不安全 ArrayList数组列表:动态增加数组,不安全,实现了IList接口(表示可按照索引进行访问的非泛型集合对象),Object数组实现 List列表:底层实现是泛型数组...C#则List和LinkedList的区别 List是数组列表,LinkedList是双向链表,List读取速度快,时间复杂度是O(1),增删比较麻烦,时间复杂度是O(n)....:实现了IDisposable接口的类或结构。...A*算法实现思路? 1.面向对象OOP的特性有哪些?结合具体案例说一下。 2.协程,进程,线程有什么区别,协程能够举个例子吗? 3.冒泡排序怎么做?时间复杂度? 4.二叉树是怎么样的?

    4.1K11

    GraphQL详解

    如果能这样做的话,那么后端程序猿小哥可能要开心死了,前端妹子也不用那么苦口婆心地劝说后端小哥哥了。 所以GraphQL隆重出世了!那么问题来了!...先看REST API的做法: REST API获取数据 再来看GraphQL是怎么做的: GraphQL获取数据 可以看出其中的区别: 与REST多个endpoint不同,每一个的 GraphQL 服务其实对外只提供了一个用于调用内部接口的端点...GraphQL需要直接对接数据库吗? 使用GraphQL需要对现有的后端服务进行大刀阔斧的修改吗? 答案是:NO!不需要!...这样一来,只要是数据源有的数据, GraphQL 层都可以让客户端按需获取,不必专门再去定接口了。...通过对象模型来构建GraphQL中关于一个数据模型的形状,同时还可以声明各个模型之间的内在关联(一对多、一对一或多对多)。 对象类型的定义可以参考下图: 对象模型引入关联关系 是不是很方便呢?

    2.6K00

    为什么我劝你放弃了Restful API?

    如果能这样做的话,那么后端程序猿小哥可能要开心死了,前端妹子也不用那么苦口婆心地劝说后端小哥哥了。 所以GraphQL隆重出世了!...先看REST API的做法: 再来看GraphQL是怎么做的: 可以看出其中的区别: 与REST多个endpoint不同,每一个的 GraphQL 服务其实对外只提供了一个用于调用内部接口的端点,所有的请求都访问这个暴露出来的唯一端点...GraphQL需要直接对接数据库吗? 用GraphQL需要对现有的后端服务进行大刀阔斧的修改吗? 答案是:NO!不需要!...这样一来,只要是数据源有的数据, GraphQL 层都可以让客户端按需获取,不必专门再去定接口了。...通过对象模型来构建GraphQL中关于一个数据模型的形状,同时还可以声明各个模型之间的内在关联(一对多、一对一或多对多)。 对象类型的定义可以参考下图: 是不是很方便呢?

    3.1K20

    C++程序员转向C#时的十大陷阱

    我已经编辑了一个C++和C#语法不同点的列表(可在我的web站点上找到这个列表。在站点上,点击Books可以浏览《Programming C#》,也可以点击FAQ看看)。...我已经编辑了一个C++和C#语法不同点的列表(可在 我的web站点上找到这个列表。在站点上,点击Books可以浏览《Programming C#》,也可以点击FAQ看看)。...注意:在CLR中,是通过重载System.object的虚方法Finalize()来实现虚方法的,在C#中,不允许重载该方法或直接调用它,如下写法是错误的: class RyTestFinalClass...{ this.Finalize()//自己调自己,当然可以了,但这是个递归调用你想要的吗?J base.Finalize()//错误!...如果是处理有限的、未受管制的资源(比如文件句柄),你或许想尽可能快地关闭和释放它,那你应该实现IDisposable接口。这个接口有一个Dispose方法,由它执行清除动作。

    2.1K10

    C#基础知识系列十(集合)

    数据结构 数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。 程序界有一点很经典的话,程序设计=数据结构+算法。用源代码来体现,数据结构,就是编程。 ?...直接存储,是指该类型的集合数据元素可以直接通过下标(即index)来访问,在C#中直接存储的数据结构有三类:Array(包含数组和List)、string、struct。   ...数组的声明:int[] intArray; 注意:数组声明时,方括号([])必须跟在类型的后面,而不是变量名的后面。在C#中,将方括号放在变量名后是不合法的语法。  ...该类使用大小可按需动态增加的数组实现  IList 泛型接口。  看看List所继承的接口 // 摘要: // 表示可通过索引访问的对象的强类型列表。...它的结构是这样的:Dictionary,它的特点是存入对象是需要与[key]值一一对应的存入该泛型,通过某一个一定的[key]去找到对应的值。

    68930

    .Net中的反射(序章) - Part.1

    我们所想到的第一个办法是可以在程序中创建一个数组来表示预订状态,这样我们就可以删掉BookingStatus状态表(注意可以这样做是因为BookingStatus表的内容确定后几乎从不改动)。...,我们使用数组完成了我们期望的效果,虽然这样实现显得有点麻烦,虽然还存在上面提到的不便于使用的问题,但这些问题我们耐心细心一点就能克服,而软件开发几乎从来就没有100%完美的解决方案,那我们干脆就这样好了...以上三种情况使用枚举都显得非常的流畅,直到我们需要绑定枚举到DropDownList下拉列表的时候:我们知道,可以绑定到下拉列表的有两类对象,一类是实现了IEnumerable接口的可枚举集合,比如ArrayList...由此看来,IEnumerable是实现可枚举集合的基础,在我翻译的一篇文章 C#中的枚举器 中,对这个主题做了详细的讨论。...可我们都知道:枚举enum是一个基本类型,它不会实现任何的接口,那么我们下来该如何做呢?

    1.2K40

    【5min+】 巨大的争议?C# 8 中的接口

    如果您细心的话,就能发现在C# 8新增的功能中有一条:“默认接口方法” 。半年前当我看到这一新特性的时候,我惊呆了,但是惊讶之余是更多的疑惑。...先让我们来回顾一下 C# 中原有的接口有什么特点: 接口类似于只有抽象成员的抽象基类。实现接口的任何类或结构都必须实现其所有成员。 接口无法直接进行实例化。其成员由实现接口的任何类或结构来实现。...接口可以包含事件、索引器、方法和属性。 接口不含方法的实现。 一个类或结构可以实现多个接口。一个类可以继承一个基类,还可实现一个或多个接口。...不知道大家有没有在各种面试中遇到过这样的提问:“接口能有任何的访问修饰符吗?”,“接口和抽象类的区别是什么?” 曾经您可以和自然的脱口而出答案:“没有修饰符。...那么我们真的需要在接口中提供默认实现吗?那什么情况下我需要这样做?毕竟咱们使用了 C# 这么多年,就算接口没有提供默认实现也能设计出很好的系统来。

    55610

    foreach, 用还是不用,这是一个问题~

    接触过C#循环的朋友,想来对foreach应该不会陌生,相比一般的for循环方式,foreach显得更加优雅简洁,Unity支持C#脚本,平日使用中数组列表什么的自然也会遇到不少,想来foreach...,但是注意到这里using的使用,其最后会通过IDisposable接口调用Dispose,但是由于List的Enumerator是个值类型,转换为IDisposable接口会导致装箱操作,继而便引发了内存申请...,因为ArrayList的Enumerator 是引用类型,创建时自然会在堆上分配(也就是产生了内存分配),后面虽然也会尝试转换为IDisposable接口来调用Dispose,但是因为是引用类型间的转换...诚然,foreach会产生内存申请,但是相对而言GC Alloc的大小还是相对有限的(上面看到是40B),所以只要不是频繁调用,这点消耗还是能够接受的;再者,如果你使用的是原生数组,那么便不用担心了,随意使用...foreach即可,因为就像上面看到的那样,foreach原生数组并不会产生GC Alloc;最后,其实新版的C#早已修复了foreach会产生额外内存申请的问题,只是由于Unity内含的Mono版本较早

    1.5K11

    Gitlab CICD 实践四:Golang 项目 CICD 流水线配置

    但是如果是个 map 的话,没有 make 初始化,去读写会panic。 Map 我有一个 for range 循环。...比如一个携程正在执行任务,我希望实现这么一个特性,这个任务如果 5 秒钟之内没执行完,那么把这个任务取消掉,把个协程给干掉,应该怎么做?...底层数据结构是压缩列表或跳表,在保存数据时会根据 score 排序。 有序集合的底层的数据结构你有过了解吗?...底层数据结构是压缩列表或跳表 缓存穿透 布隆过滤器 Redis 的分布式锁是安全的吗? 如果是主从部署的情况呢? Mysql MySQL 里面的这个索引,它是一个什么样的一个结构?...那么对于这样的方式,你有什么好的优化经验吗?

    30010
    领券