I had recently appeared for the interview of Paytm Noida for the position of Software Engineer. I am having 1 year 7 months of experience in software development.
Application: I directly messaged the recruiter on LinkedIn and shared my resume with her. She sent a link of the online test to be attempted over the weekend
Online Test : (90 Minutes)
The Online Test consisted of 2 Coding questions and 20 Mcqs to be completed in 90 minutes .The questions were as follows
1-https://www.geeksforgeeks.org/number-buildings-facing-sun/ – The question was similar to this question
The Mcqs were based on basic java, Collections output questions and on basic thread concepts
Doing 1 coding question completely and 10-12 MCQs is enough to clear the round.
Next, all rounds were virtual due to COVID and were held on the hangout video call
Round 1 ( 45-60 minutes)
This round was entirely based on Data Structures and Algorithms. The interviewer was interested to know the approach and asked me some sample test cases to see whether my approach covers them or not. Following questions were asked
For this problem, he was interested in O(n) time 0(1) space solution and only 1 array traversal(Hint: Use XOR)
This problem is an extension of the above problem where all numbers are duplicated instead of two numbers occurring once ( Hint Extension of XOR-based approach)
I was able to answer all of the 4 questions and was able to explain the approach clearly.
Round 2(30-45 minutes)
This round was also based on Data Structure and Algorithms and a puzzle was also asked at the end
Here the Interviewer scanned my resume and asked about the work done and tech stack involved(5 minutes)
Then he jumped to DS Algo problems. Following problems were asked in this round
I gave a stack-based approach but he asked me to do it without using any other data structure and without using additional pointers other than Head ( Hint: Recursion)
He asked me if I Have any idea about graphs. I said Yess I know basic algos on it, Then he asked me the following problem
2- https://www.geeksforgeeks.org/detect-cycle-in-a-graph/ ( Hint DFS)
I used DFS and explained my approach. Then he asked me why not BFS and then it was followed by a 5-minute discussion on where to use DFS and where to use BFS
Then he asked me a very popular and simple puzzle
I answered it in 5 minutes with a small hint from him :
Round 3 ( Resume + Core Java + Collections+ Threads, 30-40 Minutes)
This round was taken by Tech Lead of the team I was getting hired for
He Scanned my resume and asked about the version of Java used in the project. I said Java 8.
1-He asked me features of Java 8
Then he asked me what changes were made in JVM for introducing Lambha expressions .U can read in detail on this from https://stackoverflow.com/questions/29143803/java-lambdas-how-it-works-in-jvm-is-it-oop
2- Another question was asked from Generics in Java. Difference between List<T> and List<Object>
(Hint: Type Erasure in java)
3- How Linked HashMap maintains the order of insertion of Keys(Hint: Use of DLL in buckets)
4- Some basic discussion on Microservice Architecture ( From Resume)
5- I had mentioned Messaging queues in resume. So he asked me which MQ you have used.
I answered Kafka. I was scared here as I had just basic idea of how Kafa works Following questions were asked
1- How can you control the order of reading of messages at the consumer level( I want M1 to be read before M2) when messages are in different Partitions( ORDER OF MESSAGES IN KAFKA IS ONLY assured WHEN MESSAGES ARE IN SAME PARTITION!!)
I took some time to think and told him that we can have a sequence no attached with each message and keep on persisting them db and check if a sequenceNo less than current has came already or not if not then throw an exception. ( Basically, the consumer will commit to an offset in the former case only) He was impressed with this answer
2- Another scenario-based question was asked, Suppose Consumer is processing a very huge volume of data and sending data to a 3rd party Service through an endpoint but 3rd party service is very slow its taking 6 seconds to respond. How to optimize it
( Solution: Since API takes a very long time to respond there is no point waiting for the response synchronously so use the asynchronous mode of communication i..e Multi-Threading, setup up a thread pool and threads will make a call to API asynchronously. Then a small discussion on @async annotation and Executor framework in spring boot
6- Difference between Feign Client and Rest Template for API Calls( Resume Based)
7- Difference between static synchronized and synchronized methods?
8- Simple query on using SUM function in SQL (I answered it wrong !!!)
Round 4( Engineering Manager Round :1 hour)
Small Introduction and then he jumped on to questions
I was very surprised when he asked me a system design question
I had no practice on System design but thinking on the spot and with few hints, I was able to solve it with the approach mentioned above
2- Design Facebook global feed and user profile feed with respect to ( DB model) and APIs to fetch user profile info and user global feed info. I was really shocked on this problem too
A lot of discussion on the Pub-Sub model, SQL vs NOSQL, caching and db model design happened.
then he abruptly asked me my experience I said 1 year 7 months, then he quickly changed the flow of questions and asked very basic questions like
1- @RestController Annotation
2- JSON deserialization to POJO internal library involved
3 Why JPA?
4- a SQL query on the use of Joins, groupBy, IS LIKE
5- JUnit frameworks like Mockito etc
I would like to Thank GeeksforGeeks for such wonderful content and detailed coverage of all topics.