Summary
I recently interviewed with EPAM for a Python Developer role. The interview focused heavily on Python-specific concepts, object-oriented programming, and system design principles related to microservices, and I am sharing the questions.
Full Experience
I recently had a Python interview with EPAM, and I wanted to share my experience in case it helps anyone else preparing for similar roles. The interview was quite comprehensive, delving deep into core Python concepts, specifically advanced features and object-oriented programming. We also spent significant time discussing system design, particularly focusing on microservices architecture. I found the questions to be practical, often requiring me to explain concepts with code examples or discuss real-world applications and trade-offs.
Interview Questions (10)
Explain what decorators are in Python and how they function. Discuss the order of execution and behavior when multiple decorators are applied to a single function. Provide a code example demonstrating multiple decorators.
Explain the concept of exception handling in Python. Why is the order of except blocks important when handling multiple types of exceptions? Provide a code example.
Explain the behavior and purpose of raising an exception using the from keyword in Python (exception chaining). What is the output of the given code snippet?
Explain multiple inheritance in Python. How does Python resolve method calls when a child class inherits from multiple parent classes that both define a method with the same name? Provide the output of the given code snippet and explain the mechanism behind it.
Explain Python's context management protocol and the role of with statements. How are context managers typically utilized within a Flask application, especially concerning resources like database connections?
Explain the concept of dependency injection. How can dependency injection be implemented and utilized within a Flask application, specifically when integrating with SQLAlchemy for database operations?
Explain the fundamental differences between monolithic and microservices architectural styles. Discuss the advantages and disadvantages of each, and in which scenarios it is more appropriate to choose one over the other.
Describe common strategies and tools used for deploying microservices. Consider aspects like containerization, orchestration, and continuous delivery.
Explain various methods and patterns for inter-service communication within a microservices architecture. Discuss both synchronous and asynchronous communication approaches.
Explain the concept of event-driven architecture (EDA) and the scenarios where using events is beneficial in a microservices context. Provide examples of when to leverage events for communication and state changes.
Summary
I interviewed with EPAM for a Senior Software Engineer position focused on DSA in Java, and successfully received an offer.
Full Experience
I recently went through the interview process with EPAM for a Senior Software Engineer role. The focus of the position was on Data Structures and Algorithms with Java. I'm pleased to share that I successfully received an offer after completing all rounds. The interview process was comprehensive and included a coding round, a systems design round, and a hiring manager round.
Coding Round: I was presented with a problem that required me to implement a simple voting system.
Systems Design: This round had a dual focus. First, I was asked to design a small-scale screen broadcast system capable of playing, replaying, changing, or scheduling ads/videos across multiple screens. Following that, the discussion shifted to microservice architecture patterns such as API Gateway, BFF, Circuit Breaker, Database per Service, Event-Driven, and Saga pattern. We also touched upon the Richardson Maturity Model, REST API grading, and the key differences between SOAP and REST.
Hiring Manager Round: This round began with a system design problem where I had to design a train ticket booking application. The emphasis was on high-level design, Back-of-the-Envelope estimation, and creating an efficient database design to find available trains and seats between a source and destination. Additionally, I was questioned on the 12-factor principles of microservices and asked about design patterns I have experience with. The round concluded with a brief discussion regarding project locations and types.
Interview Questions (5)
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.
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.
Discussion on microservice architecture patterns such as API Gateway, BFF, Circuit Breaker, Database per Service, Event-Driven, and Saga pattern. Also, Richardson Maturity Model (RMM) and REST API grading, and differences between SOAP and REST.
Design 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.
Questions on 12-factor principles of microservices and any design patterns I know or have worked on. Followed by a brief discussion on project locations and types.
Preparation Tips
For my preparation, I've shared more specific details about my approach and materials in my Google interview preparation blog.