wingify logo

Wingify Interviews

2 experiences45 reads11 questions0% success rate
Wingify SSE Backend Interview (2025)
wingify logo
Wingify
SSE Backend
September 30, 202540 reads

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) and projects(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)

Q1
Max Non-Overlapping Meetings with Priority
Data Structures & Algorithms

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.

Q2
SQL: Employees with Max Hours Logged
Other

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.

Q3
In-Place Stable Partition Positives/Negatives
Data Structures & Algorithms

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.

Q4
Design URL Shortener
System Design

Design URL shortener

Q5
Implement LRU Cache
Data Structures & Algorithms

Implement LRU cache

Wingify Senior JavaScript Engineer - Rejected
wingify logo
Wingify
Senior JavaScript Engineer
June 21, 20255 reads

Summary

I experienced a multi-round interview process for a Senior JavaScript Engineer role at Wingify, which ultimately resulted in my rejection. The process involved an online assessment, two technical rounds focusing on JavaScript fundamentals, advanced polyfills, async programming, and system design, followed by hiring manager and leadership discussions covering projects, rate limiting, and web performance.

Full Experience

Round 1: Online Assement:

  • 8 JavaScript based MCQs
  • 2 DSA Question (Fibonacci and Regex based question)

Round 2 (Techinal):

  • Questions on JS topics (Closures,let vs const vs var)
  • Implement polyfill for Promise.all()
  • Find height of the DOM tree

Round 3 (Techinal):

  • Implement mapLimit async function
  • Implement polyfill for Promise.

Round 4 (Hiring manager):

  • Discussion about previous projects
  • Implement Rate limiter in JS
  • Questions around rate limiter

Round 5 (Leadership):

  • Discussion about past experiences
  • Discussion on web performance and dom manipulation
  • Write an algorithm to manage localStorage memory (like LRU) with help of chatGPT

Interview Questions (6)

Q1
Implement polyfill for Promise.all()
OtherMedium

Implement a JavaScript polyfill for the native Promise.all() method, handling its resolution and rejection behavior correctly.

Q2
Find Height of DOM Tree
Data Structures & AlgorithmsMedium

Write a JavaScript function to determine the maximum height of the Document Object Model (DOM) tree, starting from a given root element (or the document body).

Q3
Implement Async mapLimit Function
Data Structures & AlgorithmsHard

Implement an asynchronous mapLimit function that takes an array, an async iterator function, and a concurrency limit. It should process items from the array concurrently, but never exceeding the specified limit, and return a Promise that resolves with an array of results.

Q4
Implement Polyfill for Promise
OtherHard

Implement a JavaScript polyfill for the core Promise constructor, mimicking the fundamental behavior of native Promises, including resolve, reject, and then methods.

Q5
Implement Rate Limiter in JavaScript
System DesignHard

Implement a rate limiting mechanism in JavaScript to control the frequency of function calls or API requests within a specified time window.

Q6
Implement LRU Cache for localStorage
Data Structures & AlgorithmsHard

Design and implement an algorithm in JavaScript to manage data in localStorage as an LRU (Least Recently Used) cache, including strategies for handling memory limits and evicting older items.

Have a Wingify Interview Experience to Share?

Help other candidates by sharing your interview experience. Your insights could make the difference for someone preparing for their dream job at Wingify.