Summary
I successfully interviewed for an SDE 2 position at Wayfair, receiving an offer. The comprehensive process focused heavily on system design, clean architecture thinking, and real-world application of technical knowledge across multiple rounds.
Full Experience
I was initially contacted by a recruiter from Instahyre who provided an overview of the SDE 2 role and compensation details. Once I confirmed my interest, the interview process quickly began.
Online Assessment (Hackerrank)
The online assessment consisted of two mid-to-hard LeetCode-style questions. The difficulty was moderate to high, challenging my problem-solving skills and my ability to handle various edge cases. I successfully cleared this round.Round 1 – Design Round (Hackerrank Platform)
This round involved a design task on the Hackerrank platform where I was asked to design an Order Management System. Some classes and interfaces were pre-provided, and my task was to implement the missing functionalities. After completing the coding, there was a follow-up discussion about my approach, the design decisions I made, and the complexity of my solution.Round 2 – Application Design Round
In this round, I was tasked with designing a Bike Rental System. The discussion primarily focused on API Design, Database Schema Design, and explaining the system flow using a Sequence Diagram. Additionally, I was asked to write SQL queries to fetch available vehicles, fetch booked vehicles, and identify overdue rentals. I cleared this round and received an invitation for the onsite interviews.Round 3 – Onsite Interviews
The onsite interviews were conducted with multiple engineering managers.1. Hiring Manager (Engineering Manager) – 45 mins
This discussion covered my current project and responsibilities, followed by resume-based technical questions. We also delved into Spring Boot concepts such as Beans, Transactions, and REST design principles, as well as deployment strategies and scaling practices.2. Senior Engineering Manager – 15 mins
This was a shorter round where I discussed 'Why Wayfair?' and how I handle challenges, deadlines, and team collaboration.Round 4 – HR Discussion (30 mins)
This round focused on salary negotiation, cultural fitment, and general behavioral questions.Additional Round
About a week later, HR informed me that the original position I applied for had been closed, but they wanted to consider me for another team. They scheduled an additional 1-hour discussion with another Hiring Manager. This round included a deep dive into my current project and a detailed discussion on my database design choices and the reasoning behind them.Outcome
Although the entire process took some time due to internal organizational changes, my overall experience with Wayfair was structured and professional. They placed a strong emphasis on design skills, clean architecture thinking, and practical real-world application knowledge, which I appreciated. I received an offer for the SDE 2 role.Interview Questions (4)
Design a Bike Rental System with focus areas on API Design, Database Schema Design, and Sequence Diagram / Flow Explanation.
Write an SQL query to fetch available vehicles for the Bike Rental System.
Write an SQL query to fetch booked vehicles for the Bike Rental System.
Write an SQL query to identify overdue rentals for the Bike Rental System.
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.