闲来无事,逛逛园子,发现有个面试题,觉得有意思。已自己的理解答来看看,不足之处,请多指教。

原文地址:http://www.cnblogs.com/leotsai/p/aspnet-tests-for-juniors.html

第1:请定义一个接口IQuestion,有【标题】和【问题种类】两个属性,其中【问题种类】是只读的枚举类型QuestionType,另外还有一个方法获取该问题的答案(无参,返回字符串)。

    public enum QuestionType
{
Text = ,
MultipleChoice =
}
interface IQuestion
{
string Title { get; set; }
QuestionType QuestionType { get; }
string GetAnswer();
}

第2:请定义一个抽象类QuestionBase,实现第一题中的IQuestion接口,其中【问题种类】属性不在该抽象类中实现,而留在该抽象类的子类中实现;获取答案的方法有默认实现,返回字符串“默认答案”。

    public abstract class QuestionBase : IQuestion
{
public string Title { get; set; }
public abstract QuestionType QuestionType { get; }
public virtual string GetAnswer()
{
return "默认答案";
}
}

第3:请定义一个TextQuestion类,继承自第2题中的QuestionBase;获取答案的方法返回字符串”文本答案”。再定义一个MultipleChoiceQuestion类,继承自第2题中的QuestionBase;获取答案的方法返回字符串”单选答案”。

public class TextQuestion : QuestionBase
{
public override QuestionType QuestionType
{
get { return QuestionType.Text; }
}
public override string GetAnswer()
{
return "文本答案";
}
} public class MultipleChoiceQuestion : QuestionBase
{
public override QuestionType QuestionType
{
get { return QuestionType.MultipleChoice; }
}
public override string GetAnswer()
{
return "单选答案";
}
}

第4:假设有实体类Product定义如下:

  public class Product
{
public string Name { get; set; }
public string IsDeleted { get; set; }
}

现在有一个方法从IQueryable<Product>中获取没有删除的Product列表,该方法实现如下:

  public List<Product> GetActiveProducts(IQueryable<Product> query)
{
return query.WhereNotDeleted().ToList();
}

请完成扩展方法:WhereNotDeleted

static class ProductExtend
{
public static IQueryable<Product> WhereNotDeleted(this IQueryable<Product> product)
{
if (product == null || product.Count() < ) { return null; }
else { return product.Where(p => p.IsDeleted == ""); }
}
}

第5:假设数据库中有User和Income两张表如下,请仔细分析下方的示例数据,然后写出SQL得到右方的查询结果。

分析图片结果,可知,是User,Incom的联合查询,并根据月份合并了Amount的数据而得。

select name,[year],[month],sum([amount]) as income from [user]
left join [income] on [user].id=[income].userid
group by name,[year],[month] order by name

第6题:根据第5题的数据结构,有如下两个实体类和查询结果类的定义:

public class User
{
public int Id { get; set; }
public string Name { get; set; }
} public class Income
{
public int Id { get; set; }
public int UserId { get; set; }
public decimal Amount { get; set; }
public int Year { get; set; }
public int Month { get; set; }
} public class UserIncomeDto
{
public string Name { get; set; }
public int Year { get; set; }
public int Month { get; set; }
public decimal Income { get; set; }
}

现有一个方法用LINQ的方式得到第5题的查询结果,该方法定义如下:

public List<UserIncomeDto> GetUserIncomeDtos(IQueryable<User> users, IQueryable<Income> incomes)
{
throw new NotImplementedException();
}

请完成该方法的实现。

public List<UserIncomeDto> GetUserIncomeDtos(IQueryable<User> users, IQueryable<Income> incomes)
{
//linq 实现
var data = from o in
(
from p in users
join q in incomes
on p.Id equals q.UserId
select new { Name = p.Name, Year = q.Year, Month = q.Month, Income = q.Amount }
)
group o by new { o.Name, o.Month, o.Year } into groupdata
select new UserIncomeDto
{
Name = groupdata.Key.Name,
Year = groupdata.Key.Year,
Month = groupdata.Key.Month,
Income = groupdata.Sum(p => p.Income)
};
//泛型实现
var datal = users.GroupJoin(incomes, p => p.Id, q => q.UserId, (p, q) => new UserIncomeDto
{
Name = p.Name,
Year = q.Sum(o => o.Year),
Month = q.Sum(o => o.Month),
Income = q.Sum(o => o.Amount),
}); return data.ToList<UserIncomeDto>();
}

第7:在ASP.NET MVC应用程序中,假设有如下HTML表单:

<form action="/admin/mobile/user/login">
<input type="text" placeholder="username"/>
<input type="password" placeholder="password"/>
<input type="submit" value="login"/>
</form>
该表单同步提交的时候,如何修改以上HTML和路由配置以使该请求进入下方的action中:
public class UserController : Controller
{
[HttpPost]
public ActionResult Login(string username, string password)
{
throw new NotImplementedException();
}
}

我所能想到的就是在html的form表单添加属性:method="post"

    <form action="/user/Login" method="post">
<input type="text" placeholder="username" name="username" />
<input type="password" placeholder="password" name="password" />
<input type="submit" value="login" />
</form>

第8题:请看如下代码:

public class Product
{
public string Name { get; set; }
public string Description { get; set; } public void Validate1()
{
if (string.IsNullOrEmpty(this.Name))
{
throw new Exception("please enter a name for the product");
}
if (string.IsNullOrEmpty(this.Description))
{
throw new Exception("product description is required");
}
} public void Validate2()
{
this.Require(x => x.Name, "please enter a name for the product");
this.Require(x => x.Description, "product description is required");
}
}

请完成Validate2方法中Require方法的定义和实现,从而使得Validate2与Validate1方法实现同样的效果。

public void Require(Expression<Func<Product, string>> query, string msg)
{
Func<Product, string> func = query.Compile();
if (string.IsNullOrEmpty(func(this)))
{
throw new Exception(msg);
}
}

评价:这几个题目,咋一看感觉不难,仔细一作觉得不简单,平心而论,考的很实用,偏重于C#基础的应用。就当学习巩固知识了,好久没写,有些语法感觉手生,但是思路还在,随便写写, 不足之处请多指教。

答:我们公司的ASP.NET 笔试题,你觉得难度如何的更多相关文章

  1. 关于完整解答Leo C.W博客中名为“我们公司的ASP.NET 笔试题,你觉得难度如何”的所有题目

    关于完整解答Leo C.W博客中名为“我们公司的ASP.NET 笔试题,你觉得难度如何”的所有题目,请大家鉴定,不足之处,敬请指教! 第1到3题解答如下: public enum QuestionTy ...

  2. 我们公司的ASP.NET 笔试题,你觉得难度如何

    本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识. 第1-3题会使用到一个枚举类,其定义如下: public enum QuestionType { Text = , ...

  3. 远光软件ASP.NET笔试题小汇总

    ASP.NET笔试题是ASP.NET程序员面试必须经历的,一般会叫你填两个表 1个是你的详细信息表 1个是面试题答卷 两个都要注意反正面是否都有内容不要遗漏,如果考你机试一般也有两种,就是程序连接数据 ...

  4. 我设计的ASP.NET笔试题,你会多少呢

    本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...

  5. asp.net笔试题

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...

  6. 某公司的U3D笔试题

    某公司的U3D笔试题   今天这套笔试题感觉做得一般. 随后是二对一的技术面试,但涉及的技术细节相对较少,更多的是对以前工作.项目经历的询问. 然后说今天先到这里,让我等通知. 我还特意问了一下,通知 ...

  7. java各公司笔试题集1

    IBM笔试题 注:IBM笔试题一小时之内完成,题目全部用英文描述,这里用中文表述 一.名词解释 1.Eclipse 2.J2EE 3.EJB 4.Ajax 5.Web service 二.找出以下代码 ...

  8. 【笔试题】某公司中有N名员工。给定所有员工工资的清单

    排列员工工资顺序(C++map解法) 题目描述:某公司中有N名员工.给定所有员工工资的清单,财务人员要按照特定的顺序排列员工的工资.他按照工资的频次降序排列.即给定清单中所有频次较高的工资将在频次较低 ...

  9. 所在实习公司的JS笔试题

    在班上无聊的时候看到了一份JS笔试题(我是电面进去的,没做过这份题~~),开始还觉得蛮简单......后来觉得还是很有意思的,贴出来一起看看. 题目一: if(!("a" in w ...

随机推荐

  1. matlab 对图像操作的函数概览

    转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...

  2. 这样就算会了PHP么?-1

    公司有用到这些业务,多了解一下总是没错的. 现在开始一系列的PHP学习啦... <?php $boo=true; if($boo==true) echo '变量$boo为真!'; else ec ...

  3. 请问FMX手机app多个窗体如何嵌入同一个窗体?

    app有多个不同窗体,均调用相同的一个小窗体,因显示同一样的东西,如grid:如果每个窗体都重复加 小窗体的界面和代码,非常麻烦,而且编译后体积也很大: vcl中这样就行:  Form1:=TForm ...

  4. 短信,微信API(还能发邮件,短信,IM聊天)

    1.用于微信公众平台的Js API(WeixinApi) Github地址:https://github.com/zxlie/WeixinApi http://www.baidufe.com/item ...

  5. 在微软平台上运行 SAP 应用程序

     本博客介绍了在微软平台上运行 SAP 应用程序的相关信息,作者在基于微软平台使用 SAP 方面有着数十年经验. 发布关于 Azure 的 SAP 说明 几个月前,SAP 针对适用于 SAP 软件 ...

  6. C++链接器工具错误:LNK2001, LNK2019(转载)

    这是归属于链接器工具错误 这一类. 无法解析的外部符号“symbol” 代码引用了链接器无法在库和对象文件中找到的内容(如函数.变量或标签). 可能的原因 代码请求的内容不存在(例如,符号拼写错误或使 ...

  7. ops

    consists several key projects separately stand-alone connected entities massive scalability massive ...

  8. 如何保存JMeter的性能测试数据到ElasticSearch上,并且使用Kibana进行可视化分析(1)

    前言 Jmeter是一款性能测试,压力测试的开源工具,被大量的测试人员拿来测试产品的性能,负载等等. Jmeter除了强大的预置的各种插件,各种可视化图表工具以外,也有些固有的缺陷,例如: 我们往往只 ...

  9. 设计模式--观察者(Observer)

    GOF给出的定义: Define a one-to-many dependency between objects so that when one object changes state, all ...

  10. ubuntu14.04 cocos2d-x-3.6 glfw编译出错解决方案

    lib/libcocos2d.a(CCGLViewImpl-desktop.cpp.o): In function `cocos2d::GLViewImpl::GLViewImpl()': /home ...