Skip to content

Latest commit

 

History

History
85 lines (60 loc) · 3.14 KB

backend-b2b-junior.md

File metadata and controls

85 lines (60 loc) · 3.14 KB

Hahow for Business Backend Engineer 徵才小專案

這是一個小型的徵才專案,需要使用 Ruby on Rails 來開發簡易的 API Server。

同時我們也認為在程式開發的過程中溝通是很重要的,所以如果過程中你有任何問題,不論是看不懂我們所寫的文件,或是需求內容的確認,請用我們是同一個團隊一起合作的模式來進行,在 slack channel 中和我們討論。

技術規定

  • 必須使用 Ruby on Rails 開發
  • 測試必須使用 RSpec
  • Ruby 使用 2.7.4 或以上的版本,Rails 版本使用 6.1 或以上的版本,其餘工具的版本以相容的穩定版本為主
  • 專案原始碼必須放在 GitHub 上
  • 可以使用第三方的 Gem

需求

  • 請開發一個線上課程的管理後台 API,包含以下功能
    • 課程列表
    • 課程詳細資訊
    • 建立課程
    • 編輯課程
    • 編輯單元
    • 刪除課程
  • 請將完成後的 API server 發佈到 Heroku 或其他可以提供部署的服務上
  • 完成後的 API 需要有相對應的測試
  • 提供一份 README 文件說明
    • 我們該如何執行這個 server
    • 專案的架構,API server 的架構邏輯
    • 你對於使用到的第三方 Gem 的理解,以及他們的功能簡介
    • 你在程式碼中寫註解的原則,遇到什麼狀況會寫註解
    • 當有多種實作方式時,請說明為什麼你會選擇此種方式
    • 在這份專案中你遇到的困難、問題,以及解決的方法

需求說明

使用者可以透過線上課程的管理後台,列出、查看、新增、編輯、刪除課程,以及編輯課程內的單元。

每一個「課程」中可以含有多個「單元」

「課程」中需要包含的資訊是:

  • 課程名稱 (必填)
  • 講師名稱 (必填)
  • 課程說明 (非必填)

「單元」中需要包含的資訊是:

  • 單元名稱 (必填)
  • 單元說明 (非必填)
  • 單元內容 (純文字的文章內容) (必填)

課程列表

請設計一個 API 提供使用者取得系統中所有「課程」的資訊,其中包含課程中的「單元」資訊。

課程詳細資訊

請設計一個 API 提供使用者取得指定「課程」的資訊,其中包含課程中的「單元」資訊。

建立課程

請設計一個或多個 API 提供使用者建立「課程」與課程中的「單元」。

  • 需要驗證使用者的輸入並在儲存失敗時回傳錯誤訊息
  • 需要儲存「單元」的順序

編輯課程

請設計一個 API 提供使用者編輯特定「課程」

  • 需要驗證使用者的輸入並在儲存失敗時回傳錯誤訊息
  • 「單元」的順序可以被調整

編輯單元

請設計一個 API 提供使用者編輯課程中的特定「單元」。

  • 需要驗證使用者的輸入並在儲存失敗時回傳錯誤訊息

刪除課程

請設計一個 API 提供使用者刪除指定的「課程」。

  • 當「課程」被刪除時,「課程」中的「單元」也應該同時被刪除。
  • 當「課程」刪除失敗時,需要回傳錯誤訊息

加分項目

  • 程式的可讀性與可維護性
  • 可靠、可讀、可維護的測試
  • 對於接收資料的各種 edge case 的處理