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

  • 相关阅读:
    Selenium简单测试页面加载速度的性能(Page loading performance)
    Selenium Page object Pattern usage
    Selenium如何支持测试Windows application
    UI Automation的两个成熟的框架(QTP 和Selenium)
    分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)
    敏捷开发中的测试金字塔(转)
    Selenium 的基础框架类
    selenium2 run in Jenkins GUI testing not visible or browser not open but run in background浏览器后台运行不可见
    eclipse与SVN 结合(删除SVN中已经上传的问题)
    配置Jenkins的slave节点的详细步骤适合windows等其他平台
  • 原文地址:https://www.cnblogs.com/coce/p/8822535.html
Copyright © 2011-2022 走看看