PaytmLabs Interview Experience
This post is to share my interview experience with PaytmLabs for a Software Engineer position in Toronto(May 2019). I was initially contacted by a recruiting agency who co-ordinated the interview process.
Round 0 - Telephonic Interview
The initial round was a short 15-20 minute phone conversation with an engineer from PaytmLabs, and the questions were around Java and other technologies on my resume.
How to ensure Idempotency when processing messages from kafka?
Difference between interface and abstract class
What is Garbage collection, and what are the different types of garbage collectors in Java?
How does a hashmap work?
The interviewer seemed satisfied with my answers and said that a recruiter will be in touch with me soon to schedule the onsite interview.
Round 1 - Data structures + Coding
My first on-site interview involved solving a coding question on a laptop provided by PaytmLabs - I wasn’t given an
option to use my own laptop. The following was the question asked:
Median from stream of integers
This is a popular question on LeetCode, and I was able
to solve this without much trouble and well ahead of time. The solution was reviewed in the next round.
Round-2 - Data Structures + Previous projects
The 2nd on-site round was with a couple of engineers, and was focused on projects I had handled before, and technologies mentioned on my resume. However, the round started with a review of my code for the previous round - I explained the different approaches I considered, and talked about the time and space complexity for each of the approaches. The following were some of the questions asked:
Give a brief overview of the most recent project you worked on
Why did you choose this specific database? What are the other options you considered?
Why did you choose Kafka as the messaging system? And some discussion on kafka's ordering guarantee
How were background jobs implemented?
What would you change if you were given a chance to re-implement the system again?
Given an array, re-arrange the elements in the array such that a1 > a2 < a3 > a4..., - The solution is available on
GeeksforGeeks, if you’d like to check it out.
Write SQL query to fetch data from a DB schema I was given a DB schema with 3 tables and was asked to write a query
involving multiple-joins to get some desired data (I don’t remember the exact schema, sorry about that!)
Round 3 - System Design
The next round was with another couple of engineers and was focused on system design and some tech fundamentals. The following were some of the questions asked:
How do you ensure idempotency for API calls?
What are some of the transaction isolation levels?
What is the default isolation level in MySQL?
What are the different options for database replication?
How do you handle schema evolution and backward compatibility in Kafka?
The final question of the round was around System Design:
Design a system to maintain the status of payments
I was asked to whiteboard my design, and the conversations revolved around the choice of database, database schema design, handling idempotency for the payment transactions, handling downtime of external APIs, handling failures and retries, application and database redundancy and resiliency.
Round 4 - with VP of Engineering
This round was with a VP of Engineering and involved in-depth discussions spanning data structures, coding, design , and many questions on thread-safety and synchronization in Java.
Given a list of words, find the most frequent words - I suggested a solution using a
heap, and we
discussed about the time and space complexity of the solution.
Find and fix the problem in java code snippet - The interviewer wrote a piece of code on the board and asked me to
identify and fix the problem in the code. It had some potential issues with thread-safety and I suggested adding a
synchronized block to make it safe for concurrent execution from multiple threads. We then discussed about the
atomic keyword in Java and different locking and synchronization constructs in Java.
Round 5 - With Managing Director
The final round was with the Managing Director of PaytmLabs Toronto. He was absolutely down to earth and gave me an overview about the teams there and the successful projects they have delivered over the last few months. It was a very short interview, lasted only 20 minutes and we did not discuss anything technical. I was really tired by this time, and super relieved that I didn’t have to answer any more questions.
The interview was very rigorous and thorough and probably the toughest of all the companies I interviewed in Toronto . I got an offer after a few days, and would’ve accepted it, had I not got an offer from Shopify later 😄