Note: Questions are slightly modified due to NDA
I received an offer from EPAM as a Senior Software Engineer for a DSA Java role. Here are the details of the interview process:
-
Coding Round:
Create a simple voting system for N candidates with unique IDs ranging from 0 to n-1. Each voter casts 3 votes, with the first vote having 3x weight, the second 2x, and the third 1x. For example, if a voter votes for candidates A, B, and C, the votes for A, B, and C are incremented by 3, 2, and 1 respectively.
-
Systems Design:
- Design a screen broadcast system where ads/videos can be played, replayed, changed, or scheduled for future broadcasts across multiple screens. It's a small-scale system.
- Microservice architecture patterns such as API Gateway, BFF, Circuit Breaker, Database per Service, Event-Driven, and Saga pattern.
- Richardson Maturity Model (RMM) and REST API grading.
- Differences between SOAP and REST.
-
Hiring Manager Round:
- Started with a system design for a train ticket booking app. Focus was on high-level design, particularly Back-of-the-Envelope estimation and database design to efficiently find available trains and seats between a source and destination.
- 12-factor principles of microservices.
- Asked about any design patterns I know or have worked on.
- Brief discussion on project locations and types.
Preparation
For preparation, I’ve shared more details in my Google interview preparation blog.