PracHub
QuestionsCoachesLearningGuidesInterview Prep

Quick Overview

This question evaluates understanding of data modeling and API design for a deck abstraction, algorithmic handling of randomization and sorting, and the ability to analyze time and space complexity.

  • Medium
  • Apple
  • Coding & Algorithms
  • Software Engineer

Design card deck with shuffle and order

Company: Apple

Role: Software Engineer

Category: Coding & Algorithms

Difficulty: Medium

Interview Round: Onsite

Design a playing-card deck library with two methods: shuffle() to return a uniformly random permutation of a standard 52-card deck, and order() to return cards sorted by rank then suit. Use the example ordering Clubs-3, Diamonds-3, Hearts-3, Spades-3, then continue rank 4 through Ace in the same suit order; explicitly define your suit and rank order and the data structures you will use; explain how you ensure an unbiased shuffle and analyze time and space complexity.

Quick Answer: This question evaluates understanding of data modeling and API design for a deck abstraction, algorithmic handling of randomization and sorting, and the ability to analyze time and space complexity.

Ordered Standard Deck

Return a standard 52-card deck ordered by rank 3 through 2, and suit Clubs, Diamonds, Hearts, Spades within each rank.

Constraints

  • Inputs are Python literals matching the function signature.
  • Return a deterministic exact-match value.

Examples

Input: ()

Expected Output: ['Clubs-3', 'Diamonds-3', 'Hearts-3', 'Spades-3', 'Clubs-4', 'Diamonds-4', 'Hearts-4', 'Spades-4', 'Clubs-5', 'Diamonds-5', 'Hearts-5', 'Spades-5', 'Clubs-6', 'Diamonds-6', 'Hearts-6', 'Spades-6', 'Clubs-7', 'Diamonds-7', 'Hearts-7', 'Spades-7', 'Clubs-8', 'Diamonds-8', 'Hearts-8', 'Spades-8', 'Clubs-9', 'Diamonds-9', 'Hearts-9', 'Spades-9', 'Clubs-10', 'Diamonds-10', 'Hearts-10', 'Spades-10', 'Clubs-J', 'Diamonds-J', 'Hearts-J', 'Spades-J', 'Clubs-Q', 'Diamonds-Q', 'Hearts-Q', 'Spades-Q', 'Clubs-K', 'Diamonds-K', 'Hearts-K', 'Spades-K', 'Clubs-A', 'Diamonds-A', 'Hearts-A', 'Spades-A', 'Clubs-2', 'Diamonds-2', 'Hearts-2', 'Spades-2']

Explanation: Canonical order.

Hints

  1. Choose a representation that makes the requested operation direct.
  2. Handle empty inputs and boundary cases first.

Deterministic Fisher-Yates Shuffle

Given swap indices for Fisher-Yates, return the shuffled deck. swaps[i] is the j selected for i from n-1 down to 1.

Constraints

  • Inputs are Python literals matching the function signature.
  • Return a deterministic exact-match value.

Examples

Input: ([0,1,2],)

Expected Output: ['Spades-2', 'Hearts-2', 'Diamonds-2', 'Spades-3', 'Clubs-4', 'Diamonds-4', 'Hearts-4', 'Spades-4', 'Clubs-5', 'Diamonds-5', 'Hearts-5', 'Spades-5', 'Clubs-6', 'Diamonds-6', 'Hearts-6', 'Spades-6', 'Clubs-7', 'Diamonds-7', 'Hearts-7', 'Spades-7', 'Clubs-8', 'Diamonds-8', 'Hearts-8', 'Spades-8', 'Clubs-9', 'Diamonds-9', 'Hearts-9', 'Spades-9', 'Clubs-10', 'Diamonds-10', 'Hearts-10', 'Spades-10', 'Clubs-J', 'Diamonds-J', 'Hearts-J', 'Spades-J', 'Clubs-Q', 'Diamonds-Q', 'Hearts-Q', 'Spades-Q', 'Clubs-K', 'Diamonds-K', 'Hearts-K', 'Spades-K', 'Clubs-A', 'Diamonds-A', 'Hearts-A', 'Spades-A', 'Clubs-2', 'Hearts-3', 'Diamonds-3', 'Clubs-3']

Explanation: First three deterministic swaps from the end.

Input: ([],)

Expected Output: ['Clubs-3', 'Diamonds-3', 'Hearts-3', 'Spades-3', 'Clubs-4', 'Diamonds-4', 'Hearts-4', 'Spades-4', 'Clubs-5', 'Diamonds-5', 'Hearts-5', 'Spades-5', 'Clubs-6', 'Diamonds-6', 'Hearts-6', 'Spades-6', 'Clubs-7', 'Diamonds-7', 'Hearts-7', 'Spades-7', 'Clubs-8', 'Diamonds-8', 'Hearts-8', 'Spades-8', 'Clubs-9', 'Diamonds-9', 'Hearts-9', 'Spades-9', 'Clubs-10', 'Diamonds-10', 'Hearts-10', 'Spades-10', 'Clubs-J', 'Diamonds-J', 'Hearts-J', 'Spades-J', 'Clubs-Q', 'Diamonds-Q', 'Hearts-Q', 'Spades-Q', 'Clubs-K', 'Diamonds-K', 'Hearts-K', 'Spades-K', 'Clubs-A', 'Diamonds-A', 'Hearts-A', 'Spades-A', 'Clubs-2', 'Diamonds-2', 'Hearts-2', 'Spades-2']

Explanation: No swaps returns ordered deck.

Hints

  1. Choose a representation that makes the requested operation direct.
  2. Handle empty inputs and boundary cases first.
Last updated: Jun 27, 2026

Loading coding console...

PracHub

Master your tech interviews with 8,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.

Related Coding Questions

  • Minimum Cells to Bridge a Magic Grid - Apple (hard)
  • Find Common Prefix Across Strings - Apple (easy)
  • Find Minimum Processing Rate - Apple
  • Compute Earliest Bus Arrival - Apple (medium)
  • Find the Extra Edge - Apple (hard)