Summary
I interviewed for an SDE 1 role at Super.Money, completing a 2-hour machine coding round focused on designing a logging library. I implemented the sync logger and partially demonstrated async logging, which led to an invitation for subsequent rounds.
Full Experience
It was a 2 hours session with the interviewer
- 15 min intro and problem discussion
- 1:30 hour - coding
- last 15-30 min discussion on the code and some questions around why you did what you did in the solution from Design patterns and Solid principles prespective
- round was taken by interview Vector for super money
My take
I was able to implement the sync logger, for the async logger i was not able to implement complete multi threaded code, but was able to implement and show that how if multiple threads called Async loger, how it would behave.
As this was for a SDE - 1 , I think the interviewer was satisfied with the code and I got invited to next rounds , which I have yet to give.
Interview Questions (1)
Simple Logging Library
Objective: Develop a basic logging library that can be used by applications to log messages. The library should handle message logging efficiently and reliably, offering basic configuration options.
Key Requirements: Driver Application should be able to Initialize the Library and log messages to the desired sink.
Logger has the following capabilities- Accepts messages from client(s) A logger would have one or more sinks associated with it. Supports defined message levels. Enriches message with current timestamp while directing message to a sink Logger is initialized with a configuration eg:logger name, sink(s), buffer size. Logger should support both sync and async logging. For Async logger buffer size would determine the maximum inflight messages. Messages must be ordered. Messages should reach the sink in the order they were sent. Should support writes from multiple-threads. There shouldn’t be any data loss.
Sink:
There can be various types of sink (file, stdout, database).
Sink has a destination.
For this round you may create STDOUT sink, which would print the message to the console.
Sink has an associated log level. Any message with the level lower than the sink level should be discarded.
Message has content which is of type string has a level associated with it
Log level DEBUG, INFO, WARN, ERROR, FATAL ; in order of priority. ERROR has higher priority than INFO. Add test cases to demonstrate sync logging, async logging and concurrent logging requests
Sending messages Sink need not be mentioned while sending a message to the logger library. You specify message content and level while sending a message
Logger configuration (see sample below) Specifies all the details required to use the logger library. Library can accept one or more configuration for an application Example: time format logging level sink type Logger type sync/async details required for sink (eg file location)); this depends on sink type.
Sample Config: Ts_format: any format log_level:INFO logger_type:ASYNC buffer_size:25 sink_type:STDOUT
Sample Output Log Entry 03-01-2024-09-30-00 [INFO] This is a sample log message. Sample test case: Input: Configuration of the logger is console logging with Info level. log.info(“Info message”) log.warn(“Warn message”) log.debug(“Debug message”) log.error(“Error message”) Output: 03-01-2024-09-30-00 [INFO] Info message 03-01-2024-09-30-01 [WARN] Warn message 03-01-2024-09-30-02 [ERROR] Error message
Expectations and Guidelines
Create the sample data yourself. You can put it into a file, test case or main driver program itself. The code should be demo-able. Either by using the main driver program or test cases. The code should be modular. The code should have the basic OO design. Please do not jam in the responsibilities of one class into another. The code should be extensible. Wherever applicable, use interfaces and contracts between different methods. It should be easy to add/remove functionality without rewriting the entire codebase. The code should handle edge cases properly and fail gracefully. The code should be legible, readable and DRY. Database integration is not required. Please do not access the internet for anything EXCEPT syntax. You are free to use the language and IDE of your choice. The entire code should be your own.
Summary
I interviewed for a UI Engineer 2 role at Super.money, undergoing four rounds covering machine coding, UI tech depth, system design, and a hiring manager discussion. Despite positive initial feedback and being re-contacted after an initial rejection due to role closure, I was ultimately rejected after the final debrief without specific feedback.
Full Experience
Background - Currently working as frontend engineer in India's leading quick-commerce company having 2 & 1/2 years of experience.
Round 1 - [ Machine coding ] 2 hours Scheduled by InterviewVector Initial Discussion (20 mins): Talked about my current projects, day-to-day work, and the challenges I’ve faced in recent projects. Machine Coding Task (1 hour 40 mins): I was asked to build a Stock Wishlist App with the following features:
- A list of stocks where prices change at specific intervals
- Ability to add/remove stocks from the wishlist
- Set notification alerts when stock prices hit a user-defined threshold
- Search functionality for stocks
Result: ✅ Positive
Round 2 - [ UI tech depth ] 1 hour Vanilla JS Task: Build an n x m grid. When a user clicks a cell, highlight the entire row and column in red. React Task: Build a counter app where clicking "+" increments the value and also retains the previous values (used React hooks). Conceptual Questions: Covered topics like Virtual DOM, useLayoutEffect, lifecycle of useEffect, critical rendering path, web vitals (LCP, CLS, FID), and website/network optimizations.
Result: ✅ Positive
Though both rounds went well, I unexpectedly received a rejection email due to the role being closed.🤷♂️ Two weeks later, I was re-contacted, and they acknowledged the mistake and resumed the process.
Round 3 - [ System Design ] 1 hour Project Discussion: Spoke about projects, had a depth discussion about 30 minutes on this.
System Design Task – Google Forms:
- Discussed functional & non-functional requirements
- Discussion on architecture, MVC design, and high-level design of form.
- Small disucssion on backend services.
- Schema design: faced a bit of difficulty in modeling ownership vs user responses, but handled other aspects confidently
Result: ✅ Positive
Round 4 [ HM round ] 1 hour
- Disucssion on my projects
- Typical HM round questions
- Time when i lead my team
- What are my expectations on work from super.money
- He also discuss about the work and culture of super.money It went pretty well.
Final result - [ Rejected ] After a week of no response, I followed up with HR. She mentioned that after a debrief, they’ve decided not to move forward. No specific feedback was provided. Honestly, I felt confident after every round and expected a positive outcome. But sometimes, things don't work out even when everything seems right. Hope this helps. Thanks
Interview Questions (6)
Build a Stock Wishlist App with the following features:
- A list of stocks where prices change at specific intervals
- Ability to add/remove stocks from the wishlist
- Set notification alerts when stock prices hit a user-defined threshold
- Search functionality for stocks
Build an n x m grid. When a user clicks a cell, highlight the entire row and column in red.
Build a counter app where clicking "+" increments the value and also retains the previous values (used React hooks).
Covered topics like Virtual DOM, useLayoutEffect, lifecycle of useEffect, critical rendering path, web vitals (LCP, CLS, FID), and website/network optimizations.
Discussed functional & non-functional requirements. Discussion on architecture, MVC design, and high-level design of form. Small discussion on backend services. Schema design: faced a bit of difficulty in modeling ownership vs user responses, but handled other aspects confidently.
Typical HM round questions. Time when I lead my team. What are my expectations on work from super.money. He also discuss about the work and culture of super.money.
Summary
I interviewed for an SDE 3 role at Super.money, which included rounds on machine coding, PSDS, LLD, and a hiring manager discussion, including a system design problem. I was ultimately rejected.
Full Experience
Round 1
Machine coding:
Design a logger library with different configurable destination options along with sync and async ways to write logs to the destination. It should support different log levels, buffer size for the async option, and formatting options. SOLID and OOD was expected, code should be running and testable. Handle everything in a multi-threaded environment.
Round 2
PSDS:
Discussion on reducing API latency using caching techniques. Discussion of general approach to take to address API latency issues.
Round 3
Supposed to be an LLD:
Design the leaderboard side of IPL fantasy league. T teams, 10M+ users, every user can build any team with 11 players, calculate per ball leaderboard based on fantasy points earned. Can assume we have a black box method to calculate per ball points, and we can query it to design our leaderboard.
Expectations: DB design, optimised queries, API flow, expected async handling of updating huge number of users’ score calc and updates.
Round 4
Hiring manager: Discussions on previous experiences.
Design a price drop alert system for a travel website. Users can select data range and the threshold price for a location, notify them when the price drops below the value. The website depends on the data from external sources like agoda, mmt, expedia etc.
Verdict
Rejected.
Interview Questions (4)
Design a logger library with different configurable destination options along with sync and async ways to write logs to the destination. It should support different log levels, buffer size for the async option, and formatting options. SOLID and OOD was expected, code should be running and testable. Handle everything in a multi-threaded environment.
Discussion on reducing API latency using caching techniques. Discussion of general approach to take to address API latency issues.
Design the leaderboard side of IPL fantasy league. T teams, 10M+ users, every user can build any team with 11 players, calculate per ball leaderboard based on fantasy points earned. Can assume we have a black box method to calculate per ball points, and we can query it to design our leaderboard. Expectations: DB design, optimised queries, API flow, expected async handling of updating huge number of users’ score calc and updates.
Design a price drop alert system for a travel website. Users can select data range and the threshold price for a location, notify them when the price drops below the value. The website depends on the data from external sources like agoda, mmt, expedia etc.
Summary
I recently interviewed for an SDE 2 role at super.money, which involved a Machine Coding round where I was tasked with designing a logging library. I was ultimately rejected due to my unfamiliarity with Java concurrency and multithreading, identifying this as a key area for future preparation.
Full Experience
Hey everyone, hope you're doing well! I recently had a chance to interview for SDE 2 role at super.money
Round 1 : Machine Coding
- Design Logging Library
Attaching the docs links https://docs.google.com/document/d/1h31FHtLKbYwb9sLucRkUOPpOBphO1CZ1pHSM9vi5434/edit?usp=sharing
Summary
I recently interviewed for an SDE 3 role at super.money in Bangalore and received a positive verdict, resulting in an offer for an SDE-2 position. The overall experience was very supportive and focused on collaborative discussions.
Full Experience
I recently had an interview opportunity for an SDE 3 role at super.money in Bangalore. The entire process was quite positive and consisted of five rounds, covering various aspects of software engineering.
Round 1: Data Structures & Problem Solving
This round focused on my problem-solving abilities and understanding of data management. I was asked about:
- Database Migration: How to migrate data from one database to another with minimal downtime, discussing strategies and tools involved.
- Oncall Scenario: An API SLA breach (>100ms) where I had to outline the steps to investigate, diagnose, and mitigate the issue.
Round 2: High-Level Design (HLD)
In this round, the task was to design an online chess system. The interviewer specifically wanted me to focus on the matchmaking component, emphasizing a First-Come, First-Served (FCFS) approach.
Round 3: Machine Coding
This was an implementation-heavy round where I had to build a Pub-Sub (Publisher-Subscriber) library. The requirements were quite detailed and included:
- The library needed to clearly define `Topic`, `Publisher`, and `Consumer` entities, allowing publishers to send messages to a topic and multiple consumers to subscribe.
- Support for multiple consumers and publishers per topic.
- Functionality to manage topics, including creating and deleting them.
- Consumers should be able to consume messages as they are received.
- The ability to publish messages in parallel.
- Robust and graceful exception handling.
- Implementation of offset management for consumers.
- Topics should have a maximum retention period for messages.
- [Bonus-1] The ability to reset offset and replay messages from a particular offset.
- [Bonus-2] Visibility into consumer/topic status based on last offset read or lag.
Round 4: Low-Level Design (LLD)
For this round, I was asked to design Google Calendar from a low-level perspective. This involved outlining API endpoints, discussing suitable design patterns, and defining the classes and their interactions within the system.
Round 5: Project Deep Dive [Hiring Manager]
The final round was with the Hiring Manager, where we discussed my past projects in detail. This included exploring the technical challenges I faced, the solutions I implemented, and the impact of my work.
Overall, it was a very positive experience. Each interviewer was supportive and helpful throughout the process. They were open to listening to my thoughts and encouraged discussions rather than just evaluating answers. I received a verdict of Hire for SDE-2, which I consider a positive outcome.
Interview Questions (5)
Discuss how to migrate data from one database to another while ensuring minimal downtime during the migration process. Focus on strategies, tools, and best practices.
Describe the steps you would take to investigate, diagnose, and mitigate an API SLA breach where the response time exceeds 100ms. Detail the tools, metrics, and procedures you would follow.
Design an online chess system, with a specific focus on the matchmaking component. The matchmaking should follow a First-Come, First-Served (FCFS) principle.
Design and implement a Pub-Sub (Publisher-Subscriber) library with the following core capabilities:
- Core Components: The library must clearly define the concepts of a
Topic,Publisher, andConsumer. A publisher sends messages to a topic, and multiple consumers can receive messages from that topic. - Many-to-Many Relationship: Support for multiple consumers and multiple publishers per topic.
- Topic Management: Ability to manage topics, including creating and deleting them dynamically.
- Message Consumption: Consumers should actively receive messages published to their subscribed topics.
- Parallel Publishing: The library should support publishers sending messages in parallel.
- Exception Handling: Robust and graceful handling of exceptions within the library.
- Offset Management: Implement offset management for consumers to track their progress in reading messages from a topic.
- Message Retention: Topics should have a configurable maximum retention period, after which messages are automatically deleted.
- [Bonus-1] Offset Reset and Replay: Ability for consumers to reset their offset and replay messages from a specific point.
- [Bonus-2] Visibility: Provide mechanisms for visibility into consumer and topic status, such as last read offset or lag.
Perform a Low-Level Design (LLD) for a system similar to Google Calendar. Focus on defining key API endpoints, choosing appropriate design patterns, and outlining the primary classes and their interactions.