PhonePe Software Developer Engineer(SDE) Interview Experience
Summary
I interviewed for a Software Developer Engineer (SDE) position at PhonePe, completing three rounds and receiving a positive initial response. However, due to a miscommunication about my other offers, I was subsequently put on hold for the role.
Full Experience
I received an email from an HR for an SDE opening at PhonePe, which included the job description and the interview process details. I have 2 years of experience.
Round 1: Machine Coding Round
In this round, I was given a problem and had 90 minutes to submit the code. I could use my personal IDE or the one provided by the interviewer. The question involved designing the backend for an interactive hackathon platform. The focus was on data modeling, code quality, and implementing mandatory functionalities to manage problems, contestants, scores, and leaders, with an extension to show problem-solving statistics.
Round 2: DSA and CS Concepts
This round focused on Data Structures & Algorithms and Computer Science concepts. One question involved using a Trie data structure. Given an array of strings and a search key, I needed to return the top 3 matching strings that started with the search key. I don't recall the other problem, but it was an easy LeetCode type question.
Round 3: Hiring Manager Round
This final round was a discussion primarily centered around my previous projects and experience.
The entire process was completed within two weeks, and I received a positive response. I got a call from HR to discuss compensation, but that call never materialized. This happened because I mentioned I was also awaiting compensation numbers from Adobe, which in retrospect, was a mistake. After 3-4 days, when I contacted them again, I was informed that due to internal movements to fill the requirement, I was being put on hold for the position.
Interview Questions (2)
PhonePe is conducting its annual hackathon and wants to create an interactive platform to host the event. It will be a 2-day event, and contestants need to maximize their score over this period by either solving more problems or more difficult problems. Design the backend to support this platform.
Mandatory Functionalities
- The system should have the capability to add problems to the Questions Library.
- Contestants should be able to register themselves with their name and their department name.
- A problem should have attributes like description, tag, difficulty level (easy, medium, hard), score.
- Contestants should be able to filter problems based on difficulty level or tags and sort them based on score (design should be extensible to other attributes).
- A contestant should be able to solve a problem as well as get the list of problems solved by him/her.
- Scoring strategy for a problem could simply be to award the score assigned for the problem or could be something different like a combination of score and time.
- Return the current leader of the contest.
Extension Problem
- A contestant should be able to see the number of users that have solved a given problem and average time taken to solve that problem.
Capabilities (Suggested Functions)
addProblem()addUser()fetchProblems()- Should take as input filtering and sorting criteria and return all matching problems in the right order. The result should contain problem attributes like name, tag, difficulty level, score etc. (For the extension problem, number of users who have solved a problem and the average time taken for that problem should also be displayed here).solve()- Exposed to a contestant to mark a problem as solved.fetchSolvedProblems()- Fetch the list of solved problems for a user.getLeader()- Returns the name and department of the leader.
Guidelines
- You should store the data in-memory using a language-specific data-structure.
- Implement clear separation between your data layers and service layers.
- Simple and basic functions are expected as entry point - no marks for providing fancy RESTful API or framework implementation.
- Because this is a machine coding round, heavy focus would be given on data modeling, code quality etc. Candidates should not focus too much time on algorithms which compromises with implementation time.
Given an array of strings and a search key, design a solution using a Trie data structure to return the top 3 matching strings that start with the search key.