面试一点通之模拟面试高级c#开发工程师面试题
上面是面试一点通微信小程序截图
都说人往高处走,水往低处流,每年金三银四都有很多的职场人士面临跳槽、升职加薪找工作,每次都要去各种地方找面试复习材料,索性通过这个软件整理出来,直接供大家方便的使用.
不管是大企业,还是小企业,面试这个环节是必不可少的.
如果我们去面试,连基础的专业知识概念都搞不清楚,又怎么让面试官相信面试者能胜任工作呢.与其浪费彼此的时间,还不如花点时间把自己的基础知识掌握牢固。
企业面试官的目的是:
通过面试题模型,来让优秀的人能“冒”出来。有了这些面试题不意味着,死记硬背之后就能进入企业工作,尤其是 BAT 等工作岗位竞争更为激烈,这些面试题只是面试体系中的不可或缺的一个环节.他的作用是:提高面试的壁垒,让愿意学的人,变的更加优秀,从而和懒惰的人拉开差距,让企业也能更轻易的甄别求职者。
对于C#从业人员来说:为什么跳槽,换薪水更高的工作之前要进行面试准备呢?
面试官,会问平时根本不会接触的一些生硬理论知识.这些知识,其实在实际的工作中大多数时候是没有关注的.如果,你不会,你的竞争求职者回答的一溜一溜的,可想而知面试官选谁.
职场中很多开发人员能力过硬,确不善言辞和技巧,使得职业生涯得不到应有的薪水和更好的平台来发展自己.面试一定是七分实力三分技巧.
以下整理了C#/.net core开发必问的一些面试问题,好好准备吧,还有更多的面试题,收录在,小程序:面试一点通里,小程序搜索:面试一点通,即可免费使用完整体系的C#/.net core面试题和笔试题.
1. 请简述async函数的编译方式?
async/await是C# 5.0推出的异步代码编程模型,其本质是编译为状态机。只要函数前带上async,就会将函数转换为状态机。
上面这样回答,面试官第一印象,就是背答案.你要接着阐述.
具体在实际编码中怎么用呢?举个例子:
小明早上起床要吃早餐:
要刷牙洗脸(2分钟),
要冲牛奶(5分钟),
要煎鸡蛋(3分钟),
然后所有都准备好了,开吃.
如果这个需求以同步的方式进行,总共会花10分钟,才能成功吃到早餐.
但是在函数上添加async,在刷牙洗脸,冲牛奶,煎鸡蛋前添加await,因为是同步执行,并等待所有线程执行完成,就可以成功吃到早餐,只需要5分钟.
还有一种情况:在函数上添加async,在刷牙洗脸,冲牛奶,煎鸡蛋前不添加await,这样函数里的要干的事情,将不会阻塞,直接2分钟就跳出函数.但是不能成功吃到早餐.因为未添加await,函数结束后,不能保证所有动作都执行完成.
请简述Task状态机的实现和工作机制?
CPS全称是Continuation Passing Style,在.NET中,它会自动编译为:
(1)将所有引用的局部变量做成闭包,放到一个隐藏的状态机的类中;
(2)将所有的await展开成一个状态号,有几个await就有几个状态号;
(3)每次执行完一个状态,都重复回调状态机的MoveNext方法,同时指定下一个状态号;
(4)MoveNext方法还需处理线程和异常等问题。
简述yield的作用
yield需配合IEnumerable一起使用,能在一个函数中支持多次(不是多个)返回,其本质和async/await一样,也是状态机。
如果不使用yield,需实现IEnumerable,它只暴露了GetEnumerator,这样确保yield是可重入的,比较符合人的习惯。
注意,其它的语言,如C++/Java/ES6实现的yield,都叫generator(生成器),这相当于.NET中的IEnumerator(而不是IEnumerable)。这种设计导致yield不可重入,只要其迭代过一次,就无法重新迭代了,需要注意。
还有更多的C#面试题,是在太多了,而且这里写的比较零散.不便于面试准备.你可以微信扫一扫,看完整的笔试题.