WayFair Technical Assessment - Round1 - Screening
Summary
I participated in a technical assessment at WayFair for a screening round. The assessment involved four distinct system design and database scaling questions.
Full Experience
I recently completed a technical assessment for WayFair's screening round. The assessment covered several system design and database-focused questions, pushing me to think about scalability and consistency in real-world application scenarios.
Interview Questions (4)
We are building a real time group chat app that consists of a backend server and a frontend web app. Our MVP needs to support multiple users joining a group. When a user is part of a group, that user should be able to send a message to all other users in the group and read all messages posted in the group.
How would you design this group chat application, specifically what protocol(s) could be used to communicate between our server and client web app?
We are working on a clone of Facebook. We want to add a numeric count to every post showing how many friends the post's author has at the time of viewing the post, like this:
Marie McWilliams (105 friends)
I had a great day today, feeling good!
Our database has two tables:
USER
'user_id' (primary key)
'name'
'created_date'
USER_RELATIONSHIP
'friendship_id' (primary key, unique to each relationship)
'user1_id' (indexed)
'user2_id' (indexed)
'start_date'
Focusing on the database, how would you implement the friend-count feature? Note we will soon be more popular than Facebook, so the solution needs to scale.
We are working on a clone of Google Docs that allows users to collaborate on documents. Many users can work on the same document at the same time.
We have 100 instances of our service running on 100 different machines. Each document needs to be managed exclusively by one instance while it is in use, but one instance can handle multiple documents at once. We have a simple load-balancing system. Because each document has a random numeric ID found in the URL, we use the value of (id % num_instances) to route traffic. For example, with 100 jobs, traffic for document # 314814196 is routed to the instance with index 96.
How will this system perform as the usage grows?
Which consistency model is more appropriate for each of these applications: strong consistency, or eventual consistency? Why? (Select the best answer that applies for each question).
An API call that needs to respond within 20 milliseconds, used by a web service to retrieve metadata about a piece of streaming media. A web analytics platform recording every single click on a web page. A banking system that makes deposits and payments to checking accounts.