Summary
I recently interviewed for an SDE 2 position at Tala in July 2024 and successfully received an offer. The interview process involved multiple rounds, covering technical knowledge, data structures and algorithms, low-level design, and system design.
Full Experience
I interviewed at Tala for the SDE 2 role, which was a remote opportunity. My current experience is 3 years in a Fintech startup. The interview process consisted of several rounds:
Round 1 (Hiring Manager) (45 min):
This round focused on my technical understanding and behavioral aspects. We discussed core concepts like the CAP theorem and sharding. Additionally, there were some general behavioral questions to understand my approach and fit.
Round 2 (Data Structures & Algorithms / Low-Level Design) (1 hr):
This round started with two medium-difficulty DSA problems. The first was 'Jump Game II'. Following that, I was given a unique problem: 'Find if Array Can Be Sorted by Swapping Adjacent Elements with Same Set Bits'. After solving these, we had some time remaining, so the interviewer introduced an LLD question about designing a fintech loan system. This round also briefly touched upon API design, ER diagrams, and some Spring Boot-related questions.
Round 3 (System Design) (1 hr):
This round focused on high-level system design. I was tasked with designing a payment system responsible for disbursing money to user bank accounts via a Third-Party Bank API. We discussed assumptions such as fast initial acknowledgment from the API but potentially long processing times, and considered metrics like 500,000 records per day. Key discussion points included DB choice and design, API design, and the overall system flow.
Round 3 (Low-Level Design) (1 hr):
This round specifically focused on Low-Level Design. The problem was to design the booking module for a "BookMyShow" like system. The requirements included listing movies, choosing showtimes and cinemas, real-time seat selection, booking confirmation with payment, and handling concurrent bookings to prevent overbooking.
I was informed that I was selected for the role, and I've also shared the compensation details on LeetCode.
Interview Questions (7)
Discussion about the CAP theorem.
Discussion about sharding.
Given an array of non-negative integers nums, you are initially positioned at the first index, and each element in the array represents your maximum jump length at that position. Your goal is to reach the last index in the minimum number of jumps.
You are given an array of positive integers. In one operation, you can swap any two adjacent elements if they have the same number of set bits. You are allowed to do this operation any number of times (including zero). Return true if you can sort the array, else return false. Example 1: Input: nums = [8,4,2,30,15] Stack = [2,15] Output: true
X is a fintech company offering 2 different types of loan under scheme_1 and scheme_2. scheme_2 offers lower interest rates. Every customer joins scheme_1 first. Once they pay off their first loan in any scheme they are rewarded with points. 10% customers with highest rewards automatically gets upgraded to scheme_2. Product also requires a way to manually offer a scheme to a group of customers. If the customer has an open loan under any scheme, we don’t want to offer them another scheme until they pay off the open loan. We want to maintain the history of the offered schemes.
In this section, we will design a Payment system that is responsible for disbursing the money to user’s bank account via Third Party Bank API.
Some assumptions are:
- initial acknowledgement from 3rd party bank api is fast
- the actual process from 3rd party bank api could take up to several hours to complete
Metrics:
- 500,000 records per day
Discussion topics:
- DB choice & design
- API design
- overall system design & flow
Design book my show.
The system should allow users to view movies playing in different cinemas, select a showtime, choose seats, and make a booking. Focus on the booking module of the system.
Requirements: List Movies: Users should be able to view movies currently playing in different cinemas. They should be able to select a movie to view its details including available showtimes. Choose Showtime and Cinema: After selecting a movie, users should be able to choose a cinema and a showtime for which they want to book tickets. Seat Selection: Users should be able to select one or more seats for the chosen showtime. The system should display available seats and should update this information in real-time as users book or release seats. Booking Confirmation: After selecting their seats, users proceed to confirm their booking by making a payment. Upon successful payment, the booking should be confirmed, and an e-ticket should be generated. Handle Concurrent Bookings: The system should handle concurrent seat bookings where multiple users might attempt to book the same seat at the same time.