C#面试题记录
最怕的就是面试,每每到找工作的时候感觉压力山大,每次都要提前刷点题目去面对。所以这里自己对以后需要了解的知识做一个记录,方便自己随时的补充和深入了解,也给现在的自己留下一点点的印记,给未来留下一点回忆。
下面进入到正题,其实在面试的时候我们往往都会被问到一些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#面试题记录的更多相关文章
- 2017、2018面试分享(js面试题记录)记得点赞分享哦;让更多的人看到~~
2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2 'a8' * 3 var a = 2, b = 3; var c = a+++b; // c = 5 2. 一道this的问 ...
- web前端面试题记录
记录了2017年5月下旬刚毕业时面试的经典面试题 布局方面 1. 响应式布局,左侧栏目固定,右侧内容随着屏幕宽度变化而变化(高频) flex布局 position布局 css3计算宽度 float布局 ...
- 腾讯音乐Android工程师一面面试题记录,拿走不谢!
最近参加了一次鹅厂音乐Android工程师面试,这里凭记忆记录了一些一面的面试题,希望能帮到正在面试的你! 1.Java调用函数传入实际参数时,是值传递还是引用传递? 2.单例模式的DCL方式,为什么 ...
- 找工作面试题记录与参考资料(Golang/C++/计算机网络/操作系统/算法等)
记录下去年(2020年)找工作的面试题及参考资料. C++ 智能指针的实现原理 多态的实现原理[2] C++11/14/17新特性[3] 手写memcpy和memmove[4] 介绍下boost库 计 ...
- 比较难的sql面试题--记录下来晚上做
一组通话记录(总共500万条):ID 主叫号码 被叫号码 通话起始时间 通话结束时间 通话时长1 98290000 0215466546656 2007-02-01 09:4 ...
- React Native面试题记录
一.ES6中增加了那些新的功能? 1> for-of循环: 使用 for-of 的时候,循环的是数组内部的元素且不会出现 for-in 中将附加属性也遍历的情况,其次,循环变量的类型和其在数组中 ...
- mc面试题记录
1.linux 查看磁盘空间 df -hl 2.根目录下有哪些文件及其作用 3.查找/tmp下的文件内容含有abc的命令 grep -rn "abc" /tmp4.linux下的s ...
- sql 面试题记录
一张学生表,字段 :学生ID,学生课程,学生成绩 问:每门课程前三名的学生信息? create table student ( id ), --编号 class ),--课程 soure int -- ...
- Go_笔试题记录-不熟悉的
1.golang中没有隐藏的this指针,这句话的含义是() A. 方法施加的对象显式传递,没有被隐藏起来 B. golang沿袭了传统面向对象编程中的诸多概念,比如继承.虚函数和构造函数 C. go ...
随机推荐
- springboot 1.5.2 thymeleaf 添加templates 静态资源访问路径
从velocity 模板切换到thymeleaf 后, 默认模板位置为templates , 有时候静态资源方在该目录下会出现访问404错误 解决办法: application.properties ...
- Spring 5.0.0.RC1 - CORS Support 【译文】
3 CORS支持 3.1 介绍 出于安全考虑,浏览器禁止对当前源之外的资源进行AJAX调用.例如,当你在一个标签页检查你的银行账户时,你可以在另一个标签页打开evil.com的网站.在evil.com ...
- golang实现dns域名解析(三):响应报文分析
前面说了构造请求发送报文,接下来我们好好研究下如何解析服务器端发回来的应答信息. 首先还是用前面的程序代码发一个请求,用抓包工具看看应答的内容有哪些: 截图的第一部分是返回信息的统计,表明这个返回的包 ...
- php+mysql 除了设置主键防止表单提交内容重复外的另一种方法
感觉好久没有更新博客了,一直在做网站及后台,也没有遇到让我觉得可以整理的内容,之前做的一个系统,已经完成了,后来客户又要求加一个功能,大概就是表单提交的时候,约束有一项不能和以前的内容重复,如图 比如 ...
- 【小练习02】CSS--网易产品
要求用css和HTML实现下图效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...
- 在eclipse中输入.后提示解决
1.调用系统自带的提示: 如果在eclipse中输入.后没有提示对应对象的属性和方法帮助列表,可以进行以下设置就可以了 eclipse -> Window-> Preferences-&g ...
- 关于AD9516芯片的硬件设计和FPGA程序编写心得
最近在做一个项目,其中有涉及时钟芯片AD9516的硬件设计和软件编程,有些使用心得,供大家参考讨论. AD9516,这是一个由ADI公司设计的14路输出时钟发生器,具有亚皮秒级抖动性能,还配有片内集成 ...
- iOS bug调试技巧学习----breakpoint&condition
给断点添加条件 - (void)testCondition2 { NSArray *array = @[@"我们", @"一起", @"来" ...
- PO/VO/POJO/BO/VO图解
- vue2.0 配置 选项 属性 方法 事件 ——速查
全局配置 silent 设置日志与警告 optionMergeStrategies 合并策略 devtools 配置是否允许vue-devtools errorHandler 错误 ...