请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

猿媛之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5659|回复: 0

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

[复制链接]

554

主题

556

帖子

1938

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1938
发表于 2016-2-4 19:34:15 | 显示全部楼层 |阅读模式

        本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识。


        第1-3题会使用到一个枚举类,其定义如下:

1
2
3
4
5
public enum QuestionType
{
     Text = 0,
     MultipleChoice = 1
}

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


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


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


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

1
2
3
4
5
public class Product
{
     public string Name { get; set; }
     public bool IsDeleted { get; set; }
}

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

1
2
3
4
public List GetActiveProducts(IQueryable query)
{
    return query.WhereNotDeleted().ToList();
}

        请完成扩展方法:WhereNotDeleted


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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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题的查询结果,该方法定义如下:

1
2
3
4
public List GetUserIncomeDtos(IQueryable users, IQueryable incomes)
{
     throw new NotImplementedException();
}

        请完成该方法的实现。


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

1
2
3
4
5
<form action="/admin/mobile/user/login">
     <input type="text" placeholder="username"/>
     <input type="password" placeholder="password"/>
     <input type="submit" value="login"/>
</form>

        当该表单同步提交的时候,如何修改以上HTML和路由配置以使该请求进入下方的action中:

1
2
3
4
5
6
7
8
public class UserController : Controller
{
    [HttpPost]
    public ActionResult Login(string username, string password)
    {
        throw new NotImplementedException();
    }
}

        第8题:请看如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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方法实现同样的效果。

        第9题: 现有蓝色底的纸板,可以自定义长宽(W*H),定义好之后不能修改。现在提供N种规格的矩形小纸板, A ,B ,C ,D …….. 实际上最多不超过10种规格,选择其中的1种 或者 N种规格的纸板填充到底板上,如下图所示:

        为了计算出最佳的选择方案:比如A 5个 C 1个 D 2个 使得底板的填充率最高,请提供具体的算法思路。


        提示:比如下面这样的输入和输出:


        输出:


        转载自 leotsai

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|猿媛之家    

GMT+8, 2020-2-24 07:38 , Processed in 0.203672 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表