C#面试题及答案_c++面试题库

C#面试题及答案_c++面试题库1.值变量/引用变量参考链接:https://www.cnblogs.com/bakuhert/articles/5878086.html2. 装箱/拆箱    装箱在值类型向引用类型转换时发生,拆箱在引用类型向值类型转换时发生,装箱操作和拆箱操作是要额外耗费cpu和内存资源的,所以在c#2.0之后引入了泛型来减少装箱操作和拆箱操作消耗。   参考链接:https://blo…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.值变量 / 引用变量

参考链接:https://www.cnblogs.com/bakuhert/articles/5878086.html

C#面试题及答案_c++面试题库

C#面试题及答案_c++面试题库

C#面试题及答案_c++面试题库

2. 装箱 / 拆箱

       装箱在值类型向引用类型转换时发生,拆箱在引用类型向值类型转换时发生,装箱操作和拆箱操作是要额外耗费cpu和内存资源的,所以在c# 2.0之后引入了泛型来减少装箱操作和拆箱操作消耗。

      参考链接:https://blog.csdn.net/qiaoquan3/article/details/51439726

3.class / struct

结构体不能从基类继承,但类可以
结构体不能有无参构造函数
在构造函数结束之前,所有的结构体域都必须被赋值
结构体是传值,而类的实例是传引用

     参考链接 : https://blog.csdn.net/wolf96/article/details/75332914

4.栈内存 / 堆内存

        
托管堆 : 由CLR(公共语言运行库(Common Language Runtime))管理,当堆中满了之后,会自动清理堆中的垃圾
       栈:栈的结构是后进先出,栈地址从高往底分配,类型的引用也存储在栈中
    参考链接:https://www.cnblogs.com/zd1994/p/4424329.html

5.深克隆 / 浅克隆

     
浅克隆 : 当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象并没有复制
                                             
C#面试题及答案_c++面试题库
   
深克隆 : 除了对象本身被复制外,对象所包含的所有成员变量也将复制
                                               C#面试题及答案_c++面试题库
    参考链接 : https://blog.csdn.net/zhulongxi/article/details/52640765

6. ref / out 关键字

     ref : 方法定义和调用方法都必须显式使用 ref 关键字,传递到 ref 参数的参数必须初始化,否则程序会报错

     out : 方法定义和调用方法都必须显式使用 out关键字,out关键字无法将参数值传递到out参数所在的方法中,只能传递参数的引用(个人理解),所以out参数的参数值初始化必须在其方法内进行,否则程序会报错  

      相同点ref和out都是按地址传递,使用后都将改变原来参数的数值。一定程度上解决了C#中的函数只能有一个返回值的问题

     不同点:

          ref将参数的参数值和引用都传入方法中,所以ref的参数的初始化必须在方法外部,进行,也就是ref的参数必须有初始化值,否则程序会报错

          out不会将参数的参数值传入方法中,只会将参数的引用传入方法中,所以参数的初始化工作必须在其对用方法中进行,否则程序会报错

    参考链接:  https://www.cnblogs.com/GreenLeaves/p/6843026.html

7.简单地估算各类常规代码的内存开销

      百度了一堆都不知道怎么估计的,不过看到一个好东西: C#内存泄漏工具

8.Lambda 表达式

     
Lambda运算符“
=>”的左边列出了需要的参数,如果是一个参数可以直接写 a=>(参数名自己定义),如果多个参数就使用括号括起来,参数之间以,间隔

        举例: (a,b)=>{
int temp= a+b;return temp; }

9.Attribute

     
三个静态方法:

static Attribute GetCustomAttribute():这个方法有8种重载的版本,它被用来取出施加在类成员上指定类型的Attribute

static Attribute[] GetCustomAttributes(): 这个方法有16种重载版本,用来取出施加在类成员上指定类型的Attribute数组

static bool IsDefined():由八种重载版本,看是否指定类型的定制attribute被施加到类的成员上面

    实例方法:

bool IsDefaultAttribute(): 如果Attribute的值是默认的值,那么返回true。

bool Match():表明这个Attribute实例是否等于一个指定的对象。

   TypeId: 得到一个唯一的标识,这个标识被用来区分同一个Attribute的不同实例


  自定义Attribute:

         [AttriubteUsage(参数设置)] 

         public class 自定义Attribute : Attribute  { … }

  AllowMultiple: 读取或者设置这个属性,表示是否可以对一个程序元素施加多个Attribute 。

  Inherited:读取或者设置这个属性,表示是否施加的Attribute 可以被派生类继承或者重载。

  ValidOn: 读取或者设置这个属性,指明Attribute 可以被施加的元素的类型。

属性与程序元素关联后,可以使用反射查询属性存在及其值。查询属性的主要反射方法包含在 System.Reflection.MemberInfo 类(GetCustomAttributes 方法族)中

System.Reflection.MemberInfo info = typeof(Help);
object[] attributes = info.GetCustomAttributes(true);
for (int i = 0; i < attributes.Length; i++)
{
   System.Console.WriteLine(attributes[i]);
}

 参考链接 : https://www.cnblogs.com/luckdv/articles/Atrribute.html

                 https://www.cnblogs.com/anthonyBlog/p/3173922.html

 Conditional条件定义符:

       配置管理器中新增一个配置(用于条件编译)
      在项目工程上右键选择”属性”->”生成”->”条件编译符号”后边的输入框中,配置下拉框中选择对应的配置,输入自定义的条件编译变量,多个变量用”;”分割。

      参考链接: https://www.cnblogs.com/Music/archive/2011/11/28/about-csharp-conditional-simple-demo.html

10.观察者模式

                                           
C#面试题及答案_c++面试题库
       可以看出,在观察者模式的结构图有以下角色:

抽象主题角色(Subject):抽象主题把所有观察者对象的引用保存在一个列表中,并提供增加和删除观察者对象的操作,抽象主题角色又叫做抽象被观察者角色,               一 般由抽象类或接口实现。
抽象观察者角色(Observer):为所有具体观察者定义一个接口,在得到主题通知时更新自己,一般由抽象类或接口实现。
具体主题角色(ConcreteSubject):实现抽象主题接口,具体主题角色又叫做具体被观察者角色。
具体观察者角色(ConcreteObserver):实现抽象观察者角色所要求的接口,以便使自身状态与主题的状态相协调。
      主要优点:

                  1.观察者模式支持广播通信。被观察者会向所有的注册过的观察者发出通知。

                  2.观察者模式在被观察者和观察者之间建立了一个抽象的耦合,被观察者并不知道任何一个具体的观察者,只是保存着抽象观察者的列表,每个具体观察者都符合一个抽象观察者的接口。
                  
                     
 
unity中事件分发系统 EventDispatcher
      

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/174979.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android P 新特性抢先看[通俗易懂]

          上周的世界移动通信大会上,我们看到了安卓开发者,设备生产者和芯片合作者组成的安卓生态系统不断的给用户代码惊喜的体验。      新特性下面就来看看AndroidP第一个预览版的一些很酷的特性。      1,Wi-Fi室内定位      精确的室内定位一直以来都是一个挑战,它给lbs创造了新的机遇。AndroidP支持了IEEE802.11mcWi-Fi协议,…

    2022年4月14日
    42
  • EnterpriseLibrary6.0 log2database

    EnterpriseLibrary6.0 log2database1、引用EnterpriseLibrary6.0相关dll2、安装Microsoft.Practices.EnterpriseLibrary.ConfigConsoleV6.vsix  主要为了方便编辑config文件,不是必须安装,安装后需要更改解决方案属性,将EnterpriseLibraryv6binariespath指向企业库6.0的bin目录3、执行sql脚本创…

    2022年10月20日
    2
  • ider激活码(JetBrains全家桶)

    (ider激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月31日
    119
  • “大数据管理局”让大数据共用共享

    “大数据管理局”让大数据共用共享近日,广州市政府官方网站公布了工信委、商务委和国资委3个部门的“三定方案”。三个部门共“定编”339名,其中商务委编制最多,占比超4成。机构设置方面,工信委下设的广州市大数据管理局(正处级)颇具创新,其承载着建设工业大数据库等9项重要职责。城市发展到了今天这么大的体量,社会治理模式也需要不断升级。大数据,无疑是一个重要的发展方向。随着网络的普及…

    2022年6月8日
    46
  • QT布局:QVBoxLayout/QHBoxLayout[通俗易懂]

    QT布局:QVBoxLayout/QHBoxLayout[通俗易懂]关系图垂直布局:QVBoxLayout 先来一两代码:QWidget*widget=newQWidget();QVBoxLayout*vBoxLayout=newQVBoxLayout();QLabel*label=newQLabel(“hello”);QPushButton*pushButton=newQPushButton(“hi”);vBoxLayout->addWidget(label);vBoxLayout->addWid…

    2022年6月21日
    39
  • 深入理解JVM的垃圾回收机制

    深入理解JVM的垃圾回收机制上一篇博客介绍了Java运行时内存的各个区域。对于程序计数器、虚拟机栈、本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭。并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回收了。因此本篇文章所讲的有关内存分配和回收关注的是Java堆与方法区这两个区域。1、如何判断对象已“死”Java堆中存放着几乎所有的对象实例,垃圾回收器…

    2022年4月29日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号