zoukankan      html  css  js  c++  java
  • 面试题收集

    1.C#的值类型有哪些?引用类型有哪些?解释装箱和拆箱的概念.
    答:1.1 C#的所有值类型均隐式派生自System.ValueType
    C#中中的值类型有:
    简单类型(int,long,float,double,decimal,bool,char...),
    结构类型(struct),
    枚举类型(enum)
    1.2
    C#中中的引用类型有:
    接口类型(interface),类类型(class),字符串类型(stirng),
    数组类型(array),委托类型(delegate)
    1.3
    装箱:装箱在值类型向引用类型转换时发生
    拆箱:拆箱在引用类型向值类型转换时发生

    //为了帮助某个个人能够深刻理解值类型,尽到码友的责任,以下对DateTime进行些展开
    注1:有人说你是不是傻啊?上面你都没提到DateTime类型啊?那么DateTime到底是值类型还是引用类型?
    答:可以肯定的是它是值类型无疑,因为DateTime是struct类型,而struct是什么类型呢?很显然struct值类型,
    既然struct是值类型,你说DateTime是什么类型?!!。
    注2:有人问,既然是DateTime是值类型为什么又可以new呢?
    答:int都可以new,那你说int是什么类型呢?很明显DateTime是什么类型和它能不能new半毛钱的关系都没有!
    有二货又问:那么既然DataTime、int是值类型为什么可以使用new关键字呢?要解释为什么能够new就要知道C#中new关键字用法。
    注3:C#中new关键字有什么作用?可查看:https://www.cnblogs.com/xiebaochun/p/3411895.html
    答:在 C# 中,new关键字可用作运算符、修饰符或约束。
    1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。
    2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
    3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型(问题2的完美解释)。
    看清楚了没?1)new 运算符用于创建对象和调用构造函数,是的,你没看错,重点是构造函数。
    new是拿来调用构造函数,构造函数不是引用类型的专利。请记住
    int,long,float,double,decimal,bool,char...他们都是struct。struct是值类型,那么他们都是值类型。

    2.什么是泛型?new关键字在类型约束中有什么作用?
    泛型(msdn):(简单地讲声明类型而不直接指定实际的类型)泛型是 C# 2.0 的最强大的功能。通过泛型可以定义类型安全的数据结构,而无须使用实际的数据类型。
    new用于(简单地讲就是约束泛型参数的类型)在泛型声明中约束可能用作类型参数的参数的类型

    3.Action<int> action;请使用lambda表达式、匿名委托为action进行赋值.
    Action<int> aciton = (n) => { Console.WriteLine("{0}这是lambda表达式的声明方式", n); };
    aciton(1);
    aciton = delegate(int n) { Console.WriteLine("{0}这是使用匿名方法的申明方式", n); };
    aciton(2);

    4.什么是Linq的延迟执行?是否可以强制立即执行,如何操作?
    延迟执行简单地说就是只有到用的时候才会去执行查询,当然它也是可以立即执行的(ToList()、ToList())。比如:
    int[] nums = new int[5] { 6, 6, 6, 6, 8 };
    int i = 0;
    //延迟执行
    var q=from n in nums select ++i;
    foreach (var n in q)
    Console.WriteLine("n = {0}, i = {1}", n, i);
    //立即执行
    var q2 = (from n in nums select ++i).ToList();
    foreach (var n in q2)
    Console.WriteLine("n = {0}, i = {1}", n, i);

    5.多线程你的实现方式是什么?当工作线程任务完成后,如何通知其他(UI)
    static void Main(string[] args)
    {
    Task<int> result = Calc(12, 3);
    Console.WriteLine(result.Result);

    result = Calc2(13, 3);
    Console.WriteLine(result.Result);
    }
    static Task<int> Calc2(int m, int n)
    {
    return Task.Factory.StartNew(() =>
    {
    return m + n;
    }).ContinueWith<int>((i) =>
    {
    return i.Result;
    });
    }
    async static Task<int> Calc(int m, int n)
    {
    return await Task.Run(() =>
    {
    return m + n;
    });
    }
    6.最新的C#语言、Net Framework版本号分别是?简要说明C#语言各个版本新增的主要语法特性。
    推测:这个主要考察你是否关注开发技能的沿革。基础是否扎实。
    答:C#最新是6.0;Net
    Framework最新版本是.NET Framework 4.7.1
    C# 2.0
    匿名方法
    迭代器
    可空类型
    C# 3.0
    自动实现属性
    匿名类型
    扩展方法
    查询表达式
    Lambda表达式
    表达式树
    分部类和方法
    Linq
    C# 4.0
    命名和可选参数
    泛型的协变和逆变
    互操作性
    C#5.0
    异步方法
    Caller info attributes
    C#6.0
    Compiler-as-a-service(Roslyn)
    将静态类型成员导入命名空间
    异常过滤器
    在Catch和Finally中使用Await
    自动属性初始化器
    只读属性的默认值
    Expression-bodied members
    Null-conditional operators(空条件运算符,简洁检查)
    字符串插值
    nameof operator
    字典初始化器
    C#7.0
    out变量
    模式匹配
    元组
    解构
    局部函数
    数字分隔符
    二进制文字
    局部引用和引用返回
    扩展异步返回类型
    表达式的构造函数和finalizers
    Expression bodied getters and setters
    throw表达式
    C#7.1
    Async main
    默认表达式

    7.删除重复数据,保留一行的sql语句。
    delete temp from (
    select row_number() over(partition by col1,col2 order by col1) as rid,* from table1
    ) as temp where rid>1

  • 相关阅读:
    Eureka 服务的注册和发现
    springcloud 中文文档
    mysql 7 种 join
    通用 mapper
    docker 容器操作( 以 tomcat 为例 )
    linux下安装phpunit简单方法
    图片优化的几个小工具
    安装基准测试工具sysbench
    安装pcntl以实现php多进程
    安装memcache及php的memcached模块
  • 原文地址:https://www.cnblogs.com/coce/p/8822535.html
Copyright © 2011-2022 走看看