backend-quiz

backend-quiz - Kotlin/Spring Backend Quiz

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "backend-quiz" with this command: npx skills add itlearning/study-backend/itlearning-study-backend-backend-quiz

backend-quiz - Kotlin/Spring Backend Quiz

Adaptive quiz and coding exercises for Kotlin/Spring backend.

Instructions

Give a Kotlin/Spring backend quiz. Difficulty adjusts automatically based on the learner's level.

Step 0: Language Selection

Ask the user to choose a language at the start using AskUserQuestion:

questions:

  • question: "Which language do you prefer? / 어떤 언어로 진행할까요?" header: "Language" options:
    • label: "한국어" description: "한국어로 퀴즈를 풉니다"
    • label: "English" description: "Take the quiz in English" multiSelect: false

Use the selected language for all communication. Code and Kotlin/Spring keywords stay in English.

Step 1: Choose Quiz Topic

Ask in plain text:

Korean: "어떤 주제로 퀴즈를 풀까요? 주제를 알려주세요. 뭘 할지 모르겠으면 '추천해줘'라고 해주세요."

English: "What topic should the quiz cover? Tell me a topic, or say 'recommend' if you're not sure."

  • If the user enters a topic: start the quiz on that topic.

  • If the user says "recommend" / "추천해줘": check learning history (BackendLearningProgress in memory) and suggest 3-4 recently studied topics. Present choices via AskUserQuestion.

Step 2: Run the Quiz (5 questions)

5 questions total. Track difficulty internally from 1-5 (start at 3).

  • Correct answer -> difficulty +1

  • Wrong answer -> difficulty -1

Question Types

Each question uses one of the types below. Default to open-ended, mix in others as appropriate.

Type A: Predict Output (open-ended)

What does this code return? Explain your answer.

@Transactional fun transfer(from: Long, to: Long, amount: Int) { val sender = accountRepository.findById(from).orElseThrow() val receiver = accountRepository.findById(to).orElseThrow() sender.balance -= amount receiver.balance += amount } // What happens if amount > sender.balance?

The user types their own answer.

Type B: Find the Bug (open-ended)

What's wrong with this code? Explain the issue.

@RestController class UserController(private val userService: UserService) { @GetMapping("/users/{id}") fun getUser(@PathVariable id: Long): User { return userService.findById(id) // returns null if not found } }

The user types their own answer.

Type C: Concept Question (multiple-choice allowed)

What is the default propagation level of @Transactional in Spring?

Present 4 choices via AskUserQuestion. Multiple-choice is fine for concept checks.

Type D: Write Code (difficulty 4+ only)

Write a REST endpoint that meets these requirements:

  • POST /api/users
  • Accepts a JSON body with name (String) and email (String)
  • Validates that email contains '@'
  • Returns 201 Created with the saved user
  • Returns 400 Bad Request if validation fails

The user writes their own code solution.

Feedback Rules

On correct answer:

Correct!

Key point: @Transactional with default propagation (REQUIRED) joins the existing transaction or creates a new one if none exists.

On wrong answer: Give a short text explanation. Only use ASCII diagrams for things like request flows or architecture that are hard to explain in text alone.

Not quite. The answer is "REQUIRED".

REQUIRED means: if a transaction exists, join it; if not, create a new one. This is the most common behavior and Spring's default.

Step 3: Results Summary

After all 5 questions, show a summary:

Quiz Results

  • Topic: Spring Transaction Management
  • Score: 3/5
  • Final difficulty: 4/5
  • Strengths: @Transactional basics, isolation levels
  • Needs work: Propagation types, rollback rules
  • Suggestion: Review "transaction propagation" with /backend-study

Rules

  • Use the selected language - from Step 0. Only code and keywords in English.

  • One question at a time - next question only after the current one is answered

  • Open-ended by default - the user must think and write answers. Multiple-choice OK for concept checks.

  • ASCII diagrams only when needed - default to text explanations

  • Adaptive difficulty - adjust to the learner's level automatically

  • Encouraging tone - wrong answers are learning opportunities

  • No emojis - clean text only

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

backend-summary

No summary provided by upstream source.

Repository SourceNeeds Review
General

backend-study

No summary provided by upstream source.

Repository SourceNeeds Review
General

study-summary

No summary provided by upstream source.

Repository SourceNeeds Review
General

swift-study

No summary provided by upstream source.

Repository SourceNeeds Review