最怕的就是面试,每每到找工作的时候感觉压力山大,每次都要提前刷点题目去面对。所以这里自己对以后需要了解的知识做一个记录,方便自己随时的补充和深入了解,也给现在的自己留下一点点的印记,给未来留下一点回忆。

下面进入到正题,其实在面试的时候我们往往都会被问到一些C#基础的知识,其实就和之前听过的一句话所说的,“它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了”,的确!很多东西就是这样子,尤其对于我个人来说更加是这样子,如果有实践的实现和应用,我能够把这个东西理解的稍微透彻一点,说起来也能够表达出自己的一些看法,但如果是一些只听说过,用的不是很深的东西,每每一些基础点,只能够大概的讲出他的官方定义,在深入可能满脑子都是问号了!所以就想通过这篇文章记录一些面试过程中会常碰见的问题,熟悉的自己讲一讲自己看法,不熟悉的先记录下来,然后慢慢的去补充。

1.委托和事件

a.委托

关键字:delegate

基础定义:C“运行时“的qsort函数获取指向一个回调函数的指针,以便对数组中的元素进行排序。在Microsoft Windows中,窗口过程,钩子过程和异步过程调用等都需要回调函数。在.Net Framework中,回调函数的应用更是广泛

个人理解:其实单从这个基础上面定义来说比较简单的,主要应用的场景主要是在一个方法,有一个参数的值是需要传递另外一个方法,然后使用这个传入的方法。如果在js中大致的把这个理解为回调函数,回调函数的也是把方法名作为参数传递,但是因为js定义方法的时候不需要对这个传入的方法进行修饰,直接一个名称定义就可以了,但是在C#的方法定义的时候需要对这个传入的参数进行定义,比如是int,string,实体,等等,所以在这里出现了委托delegate修饰符,定义一个delegate修饰的委托,然后作为修饰符修饰需要传递的方法。个人的暂时理解是这样的,如果理解错了,请大家指出。(后面翻了一下CLR via C#关于委托的说明,表示有点懵,讲得很底层也很深入,感觉我理解的要怎么去用!而书里讲的是为什么是这样,实现的机制以及原理是什么,产出的1L代码是怎样的!)

namespace 委托与事件
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GreetPeople("张三", ShowChinese));
Console.WriteLine(GreetPeople("zhangsan", ShowEnglish));
Console.ReadKey();
}
/// <summary>
/// 中文问好
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string ShowChinese(string name)
{
return name + ",你好!";
}
/// <summary>
/// 英文问好
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string ShowEnglish(string name)
{
return name + ",hello!";
}
/// <summary>
/// 定义一个委托
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public delegate string Show(string name); //注意此方法,它接受一个show类型的方法作为参数
private static string GreetPeople(string name, Show show)
{
return show(name);
}
}
}

2.事件

关键字:event

基础定义:定义了事件成员的类型允许类型(或类型的实例)通知其他对象发生了特定的事情。例如Button类定义了Click时间。应用程序中的一个或多个对象可以接收关于该事件的通知,以便在Button被单击之后采取特定的操作。我们用事件这种类型成员来实现这种交互。具体地说,定义了事件成员的类型能提供一下功能

方法能登记它对事件的关注

方法能注销它对事件的关注

事件发生时,登记了的方法将会收到通知。

个人理解:对于事件的理解主要停留在Button按钮的点击事件,做窗体程序,webFrom程序的时候,每添加一个Button的时候,在双击它的时候,后天的cs页面就会注册一个点击事件

,点击这个按钮查看属性的时候也会在事件这个属性中看到按钮的Click事件被注册了button1_Click这个方法,其实从这个例子可以推理一下,当前是注册了单击按钮这个行为到事件,扩展一下同理的可以注册事物的其它的行为到事件,所以个人在这里就这样理解,事件就是给某一个事物注册了某一个动作或者行为,这个动作或者是行为在收到某个指令的时候会发送。在这里联想到了机器人,当机器人收到了某一个命令,肯定会先去解析这个命令,然后转换成指令,然后去执行相对应的动作,在这里就可以把这些机器执行的动作当做是程序事先给机器注册的事件。(感觉说的有点偏,如果理解的不对,还望能够指出)

这里非常推荐一篇文章:C# 中的委托和事件

2.关于int类型的长度,占多少字节(ps去年碰到的一个试题,到现在都还印象深刻)

其实这问题有一个条件没有补充完整,所以回答的时候得自己补充完成。

主要的int类型有Int16,Uint16,Int32,Uint32,Int64,Uint64

short    System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -2^15 ~ 2^15-1)

ushort  System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 2^16)

int         System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2^31 到 2^31-1)

uint       System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 2^32)

long      System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方 到 10 的 19 次方)

ulong    System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)

补充一下其他的类型

bool       System.Boolean (布尔型,其值为 true 或者 false)

byte       System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)

sbyte     System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)

char       System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)

float       System.Single (单精度浮点型,占 4 个字节)

double   System.Double (双精度浮点型,占8 个字节)

暂时先写这两点了,之后有时间在补充。

C#面试题记录的更多相关文章

  1. 2017、2018面试分享(js面试题记录)记得点赞分享哦;让更多的人看到~~

    2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2 'a8' * 3 var a = 2, b = 3; var c = a+++b; // c = 5 2. 一道this的问 ...

  2. web前端面试题记录

    记录了2017年5月下旬刚毕业时面试的经典面试题 布局方面 1. 响应式布局,左侧栏目固定,右侧内容随着屏幕宽度变化而变化(高频) flex布局 position布局 css3计算宽度 float布局 ...

  3. 腾讯音乐Android工程师一面面试题记录,拿走不谢!

    最近参加了一次鹅厂音乐Android工程师面试,这里凭记忆记录了一些一面的面试题,希望能帮到正在面试的你! 1.Java调用函数传入实际参数时,是值传递还是引用传递? 2.单例模式的DCL方式,为什么 ...

  4. 找工作面试题记录与参考资料(Golang/C++/计算机网络/操作系统/算法等)

    记录下去年(2020年)找工作的面试题及参考资料. C++ 智能指针的实现原理 多态的实现原理[2] C++11/14/17新特性[3] 手写memcpy和memmove[4] 介绍下boost库 计 ...

  5. 比较难的sql面试题--记录下来晚上做

    一组通话记录(总共500万条):ID 主叫号码 被叫号码 通话起始时间   通话结束时间           通话时长1  98290000 0215466546656 2007-02-01 09:4 ...

  6. React Native面试题记录

    一.ES6中增加了那些新的功能? 1> for-of循环: 使用 for-of 的时候,循环的是数组内部的元素且不会出现 for-in 中将附加属性也遍历的情况,其次,循环变量的类型和其在数组中 ...

  7. mc面试题记录

    1.linux 查看磁盘空间 df -hl 2.根目录下有哪些文件及其作用 3.查找/tmp下的文件内容含有abc的命令 grep -rn "abc" /tmp4.linux下的s ...

  8. sql 面试题记录

    一张学生表,字段 :学生ID,学生课程,学生成绩 问:每门课程前三名的学生信息? create table student ( id ), --编号 class ),--课程 soure int -- ...

  9. Go_笔试题记录-不熟悉的

    1.golang中没有隐藏的this指针,这句话的含义是() A. 方法施加的对象显式传递,没有被隐藏起来 B. golang沿袭了传统面向对象编程中的诸多概念,比如继承.虚函数和构造函数 C. go ...

随机推荐

  1. sChart.js:一个小型简单的图表库

    介绍 sChart.js 作为一个小型简单的图表库,没有过多的图表类型,只包含了柱状图.折线图.饼状图和环形图四种基本的图表.麻雀虽小,五脏俱全.sChart.js 基本可以满足这四种图表的需求.而它 ...

  2. javascript痛点之一变量作用域

    1.用var声明的变量是有作用域的,比如我们在函数中用var声明一个变量 1 'use strict'; 2 function num(){ 3 //用var声明一个变量num1 4 var num1 ...

  3. nodeJS之事件events

    前面的话 events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Nod ...

  4. RPM安装软件

    RMP:rpm命令详解.注意事项.rpm仓库.安装实例.srpm:源码rpm RPM Package Manager 由Red Hat公司提出,被众多Linux发行版所采用: 建立统一的数据库文件,详 ...

  5. 使用r.js来打包模块化的javascript文件

    前面的话 r.js(下载)是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小.减少对服务器 ...

  6. redis学习(1)--- NoSQL介绍

    一.NoSQL介绍 1.什么是NoSQL NoSQL = Not Only SQL 非关系型数据库 2.为什么用NoSQL High performance - 高并发读写 Huge Storage ...

  7. 再来写一个随机数解决方案,对Random再来一次封装

    本文提供对Random的封装,简化并扩展了其功能 获取随机数,确保同时调用不会重复 //new Random().Next(5); RandomTask.Next(); 从一个列表中,随机获取其中某个 ...

  8. oracle表的简单操作

    版权声明:本文为博主原创文章,转载时请注明原文链接. 1.创建表 ) ) not null,primary key(num)); 创建了一个两个字段的表,num和name,都设置为非空,num设为主键 ...

  9. SQL 和 .NET Framework 数据类型对应表

    SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework) varbinary SqlBytes, S ...

  10. 用JS来实现于截取中英文混合字符串方法(转载)

    网站制作过程中,提示层文字超出,需要JS做字符串截取,但是呢,我们常常会烦恼文字中英文混合如何判断,因为我们知道在JS中 string.length这个值是不考虑中英文的,但是计算机对中英文的识别是  ...