Lesson Thursday

Whiteboard Practice

When and how whiteboarding practice is implemented will be up to your teacher. Below is a recommended prompt.

Goal

For this week’s whiteboarding lesson, we’ll focus on using a given data structure and filtering collections of objects.

As the interviewee:

  • Ask clarifying questions.
  • Keep talking.
  • Explain your plan at the beginning; recap what you’ve done at the end.
  • Make eye contact.
  • Plan your space.

As the interviewer:

  • Answer questions as best as you can.
  • Be encouraging. Whiteboarding is difficult!
  • Be patient. Only offer hints if your partner indicates that they need help.
  • Be engaged. Part of this practice is getting used to having someone evaluate your work as your produce it.
  • Offer constructive feedback. Find at least one thing that your partner did well and one thing they could improve at.

Problem

You're working on an app that presents user's with information about dinosaurs.

The Dinosaur class has the following data structure:

name: string
period: string
diet: string
walksOnFourLegs: boolean
yearDiscovered: number
popularity: number

Example Data:

dino1 = { 
  name: Tyrannosaurus rex,
  period: Mesozoic,
  diet: carnivore,
  walksOnForLegs: false,
  yearDiscovered: 1902,
  popularity: 999
}

dino2 = { 
  name: Brachiosaurus,
  period: Jurassic,
  diet: herbivore,
  walksOnForLegs: true,
  yearDiscovered: 1900,
  popularity: 959
}

dino3 = { 
  name: Parasaurolophus,
  period: Cretaceous,
  diet: herbivore,
  walksOnForLegs: true,
  yearDiscovered: 1922,
  popularity: 500
}

dino4 = { 
  name: Stegosaurus,
  period: Jurassic,
  diet: herbivore,
  walksOnForLegs: true,
  yearDiscovered: 1876,
  popularity: 903
}

Prompt 1:

The client wants users to be able to search for a dinosaurs by diet and period. Write a method that takes in three parameters: a value for the period, a value for the diet, and an array of dinosaur objects to filter.

Example:

  • Given: "Jurassic", "herbivore", [ dino1, dino2, dino3, dino4 ]
  • Return: [ dino2, dino4 ]

Prompt 2:

The client wants the splash page to display the top three most popular dinosaurs on the site. Write a method that filters the entire list of dinosaurs and returns an array containing the top three most popular dinosaurs.

Example:

  • Given: [ dino1, dino2, dino3, dino4 ]
  • Return: [ dino1, dino2, dino4 ]

Further Exploration

Prompt 1:

  • Alter your method to sort the dinosaurs that fit the search terms by the year they were discovered in ascending order.
  • Alter your method to limit the amount of dinosaurs returned according to popularity. Dinosaurs that have a popularity rating of less than 500 should not be included.
  • Alter your method to return only the first 50 most popular dinosaurs that fit the search terms.

Prompt 2:

  • Alter your method so that it returns the three most popular dinosaurs in descending order by popularity.
  • Alter your method so that it returns a random assortment of dinosaurs with a popularity score greater than 900.
  • Alter your method to return a dicitonary with two keys: one that represents the most popular herbivore and one that represents the most popular carnivore.