Summary
I recently interviewed for an SSE Backend role at Wingify, which involved multiple rounds covering data structures, algorithms, SQL, and system design challenges.
Full Experience
My interview process for the SSE Backend role at Wingify consisted of two main rounds, each focusing on different aspects of engineering.
Round 1
The first round primarily involved problem-solving:
- Problem Statement: I was given a list of meetings, each represented as
[start_time, end_time, priority]. The task was to select the maximum number of non-overlapping meetings, prioritizing higher-priority meetings during conflicts.meetings = [ [1, 5, 2], [2, 6, 1], [7, 9, 3] ]Expected Output:
[[1, 5, 2], [7, 9, 3]]. - SQL Query: I was presented with two tables,
employees(id, name)andprojects(id, employee_id, hours_logged, name). The goal was to write a query to find all employees who have logged the maximum number of hours and then sort them based on those hours.
Round 2
The second round delved into more advanced DSA and system design topics:
- Array Rearrangement: I had to explain how to rearrange an array so that positives stay on the left and negatives on the right, preserving the original relative order, and achieving this in O(1) extra space (in-place stable partition).
- System Design: I was asked to design a URL shortener.
- Data Structure Implementation: I had to implement an LRU cache.
Interview Questions (5)
You are given a list of meetings, where each meeting is represented as:
[start_time, end_time, priority]
Example:
meetings = [
[1, 5, 2], # (start=1, end=5, priority=2)
[2, 6, 1],
[7, 9, 3]
]
Your task is to select the maximum number of non-overlapping meetings such that higher-priority meetings are preferred when there's a conflict.
Expected Output (for the above example):
[[1, 5, 2], [7, 9, 3]]
These two meetings do not overlap, and they respect the priority constraint.
Given two tables:
employees(id, name)projects(id, employee_id, hours_logged, name)
Find all employees who have logged the maximum number of hours. Sort all employees based on the ones who have put in maximum hours.
To rearrange an array so that positives stay on the left and negatives on the right while preserving the original order, and doing it in O(1) extra space, you need an in-place stable partition.
Design URL shortener
Implement LRU cache