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 trie and 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.

Final Thoughts

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 😄

See Also