15. Deck of Cards

In a technical interview, you've been asked to provide a high-level design for the creation of a regular deck of playing cards. Describe the major functions of the service as well as any additional supporting components.

 
 

Hints

One of the most asked questions when it comes to system design and the technical interview process, those in the computer science lab have had great fun collaborating on how one could use the features of Swift to recreate this process. Commonly asked questions include:

  • How will you design the concept of a card?

  • How will define card values?

  • Will you differentiate between numbered and face cards?

  • How will you manage card suits? (e.g. hearts, diamonds etc..)

  • Can Swift generics be used to streamline the creation process?

  • How will all these design considerations come together to create a deck?