后端开发者挑战
您可能已经在参与我们的选拔过程,但如果您是偶然看到这里,请阅读本文档直到结尾,如果您感兴趣,可以从这里开始参与过程 =]
我们并不期望所有人都能完全完成这个挑战,因为它面向所有职业水平的人。
评估将基于您编写简单、易于维护的代码的能力,以及您交付的功能数量。
说明
- 项目名称: Goomer Lista Rango
- 项目目标: 创建一个能够管理餐厅及其菜单产品的RESTful API。
- 技术: Node.js与关系型数据库。
- 交付物: 为此项目创建一个个人仓库,按照以下说明操作,并回复收到的电子邮件,附上仓库链接。如果您是自行决定参加测试,可以发送至selecao.tech@goomer.com.br。
挑战
-
您的API应能够:
- 列出所有餐厅
- 注册新餐厅
- 列出单个餐厅的数据
- 修改餐厅数据
- 删除餐厅
- 列出某个餐厅的所有产品
- 为餐厅创建产品
- 修改餐厅的产品
- 删除餐厅的产品
-
餐厅注册需要包含以下字段:
- 餐厅照片
- 餐厅名称
- 餐厅地址
- 餐厅营业时间(例如:周一至周五 09:00-18:00,周六至周日 11:00-20:00)
-
餐厅产品注册需要包含以下字段:
- 产品照片
- 产品名称
- 产品价格
- 产品类别(例如:甜点、咸点、果汁...)
- 当产品进行促销时,需要包含以下字段:
- 产品促销描述(例如:啤酒半价)
- 促销价格
- 促销的星期和时间段
时间格式
- 需要处理表示营业时间和产品促销时间的字段。
- 字段应采用
HH:mm
格式。 - 时间间隔应至少为15分钟。
我们将评估什么
- 我们将评估代码质量、可读性和实现的功能数量。
- 您可以自由做出您感到最舒适的技术决策。只需准备好解释您选择的理由 =]
- 包含一个README文件,其中包含:
- 您在项目执行过程中遇到的挑战/问题。
- 您可以改进应用的方式,无论是在性能、结构还是模式方面。
- 任何人都能够顺利运行您的应用所需的所有说明。
提示
- 在markdown文件中记录您的项目,解释结构、设置过程和要求。
- 始终保持可用性、可扩展性和协作性的思维方式。
- 仓库中的分支组织和提交记录能很好地反映您如何组织工作。
- 单元测试是非常受欢迎的。
- 应用程序代码的设计/结构应该是可用于生产的。
- 牢记SOLID、KISS、YAGNI和DRY的概念。
- 使用良好的编程实践。
- 请考虑我们对您的知识一无所知,因此您展示得越多,文档越详细,越好 =]
常见问题
我可以使用框架/库吗?
您可以使用像Express这样的库,但我们希望架构解决方案是您自己的,因此不要使用强制特定架构的框架。
我有多长时间?
您花费的时间越长,我们对您的评估就会越严格 =]
我应该使用哪种数据库?
在MySQL和PostgreSQL之间选择。
我可以使用ORM吗?
允许使用ORM仅用于建立与数据库的连接。然而,为了评估您的SQL知识,我们要求您在数据库查询中不要使用ORM。库通常有方法允许直接使用SQL查询(原始查询),即使是通过ORM。