近日闲着无聊就去投简历了,收到一家公司的面试邀请,一个技术经理在墙壁上的白板上画了一个式子:
var q = list.Where(g=>g.Age>21 && g.Sex)
问题1:var q是一个什么变量?
问题2:Where作为一个方法,HighLight是什么参数?
问题3:g是什么参数?
我反应了半天,心中一万只羊驼在狂奔:
对于问题1:
var q不就是C# 3.0才有的新特性,配合LINQ使用的,具体叫啥变量真的想不起来了,查了资料说是推断类型;
使用var定义变量时有以下四个特点:
1. 必须在定义时初始化。
2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。
3. var要求是局部变量。
4. 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。
对于问题2:
Where作为一个方法,括号里面的不就是一个Lambda表达式嘛,就是一个匿名函数,用于创建委托或表达式树类型,传递一些参数;
网上查询了一圈子,看到一个哥们的解释:
list.Where(g=>g.Age>21 && g.Sex)高亮部分就相当于一个委托参数;
思考了半天也想不好怎么回答他。。。。
问题3:Lambda 表达式的参数,之所以使用Lambda,是为了简化了匿名方法的语法而已
然后他又问了我什么是DI,什么是控制反转,然后就和我说面试结束了,沟通能力还行,技术能力你也看到了就这个样子,谢谢你来面试!
我是彻底醉了,我可怜的路费啊,这神一样的面试!