您好,感谢您对我们的招聘信息感兴趣!

我们为了能够比较快捷地匹配到合适的人员,做了一个小小的测试题目。非常基础,如果熟悉的话,一个小时可以完成。麻烦您花一点点时间,做一下,这样便于我们了解您对技术的熟悉程度。

简短捷说

先给给急性子的人说明一下:

  1. 根据这个演示:http://ordermaker.webstack.com.cn ,了解功能目标;
  2. 下载完成一半的项目文件,补齐功能代码:http://ordermaker.webstack.com.cn/content/ordermaker.zip
  3. 把项目文件发回我们的联系邮箱: jobs@artech.cn,packages目录里内容不用发,文件就很小了。
  4. 其他说明:http://www.ituring.com.cn/article/123783
  5. 如果对工具熟悉的话,1~2个小时可以完成。

详细说明:项目功能

我首先做了一个非常非常小的项目:http://ordermaker.webstack.com.cn ,包括构思和实现,大约用了1个小时多一点。

由于这个网站肯定没有多少人访问,您访问的时候可能Web Server需要重新启动这个网站,所以会慢一些,需要等十几秒钟。

这个项目的功能非常简单,如下图所示。点击菜单上的“Product”,进入产品列表页,可以看到列有若干产品以及价格。每个产品可以查看详细信息、编辑、删除和加入购物车。加入购物车之前需要先注册一个账号,并登录。将一个产品加入购物车以后,列表上面有一个数字显示更新以后的购物车中产品的数量。

enter image description here

然后点击菜单“Cart”,可以查看已经添加到购物车中的产品列表。每个产品后面有一个链接,可以修改数量。

enter image description here

在购物车页面上部有一个“Make Order”按钮,点击后就产生一个订单,将购物车中的产品加入这个订单,并清空购物车。

enter image description here

点解订单编号后面的链接,可以查看这个订单的具体内容。

enter image description here

请您完成

为了和大家有一个交流的基础,我把上面这个小项目完成以后,删除了其中的一部分代码,然后放到网上,http://ordermaker.webstack.com.cn/content/ordermaker.zip如果对我们的工作有兴趣的朋友,请下载这个项目的“半成品”。您按照上面演示的网站功能,把我删除掉的代码补上以后,发给我们(jobs@artech.cn)就可以了。

要完成这个工作,需要的工具:

  • ASP.NET MVC 5
  • Entity Framework 6 (Code First + Migration)

关于代码几点说明:

  • 项目直接是使用 VS 2013 中的 ASP.NET MVC 5 模板创建的,所以用户注册、登录等功能都没有任何改动,直接保留。只需要增加具体的功能代码即可。
  • 使用 Entity Framework 6.1 Code First 方式进行数据建模,实际上就是4个对象,对应于数据库中的4个数据表:
    • Product :产品
    • CartItem:用于记录购物车中的产品
    • Order:订单
    • OrderItem:订单明细
  • 我把大部分数据模型代码保留了,不过还是需要补充少量的字段,这个需要从业务逻辑的角度考虑。
  • Controllers部分,我已经把需要的Action名字和空函数都写好了,就对应于菜单上的三项:
    • Product:列表、详细、新建、删除、编辑、加入购物车
    • Cart:列表、编辑产品数量、下订单
    • Order:列表、查看详细情况
  • 数据库用的是VS 2013自带的LocalDB,如果你要换成其他的数据库,修改相应的web.config中的连接字符串。
  • 使用了Entity Framework中的Migration特性,在修改了数据模型以后,请使用Migration功能修改数据库的表结构。
  • ASP.NET MVC 5项目默认使用的用户系统是 ASP.NET Identity 2.0,如果你不知道如何获取某用户的UserId可以参考:http://stackoverflow.com/questions/19505526/asp-net-owin-identity-how-to-get-userid-from-a-web-api-controller 。
  • 你可以把这个项目作为一个实际项目的早期原型阶段,所以性能等很多重要方面都不是主要考虑点,当然这也是为了把问题简化,能把时间控制在一两个小时范围内。但是你要考虑一下哪些因素对于未来的性能考量是需要改进的。
  • 结合购物车、下订单这个具体场景,业务逻辑方面有什么是需要考虑周到的地方?
  • 另外,和您的项目一起发给我们一个小文档,谈谈下面几个小问题:
    • 你在使用 ASP.NET MVC 开发时,你通常向 View 传递什么模型?业务模型还是创建专用的ViewModel?如何考虑?有安全性方面的问题吗?
    • IEnumerable<T> 和 IQueryable<T> 两种类型有什么区别和联系?
    • 关于性能优化,你通常是怎么操作的?
    • 使用Entity Framwork 的时候,你通常如何控制 DbContext 实例的生命周期?
    • 如果方面,请附一份简历。

总结