epam systems logo

Epam Systems Interviews

7 experiences361 reads33 questions43% success rate
EPAM Interview Experience
epam systems logo
Epam Systems
October 26, 202570 reads

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)

Q1
Python Decorators and Chaining
Other

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.

Q2
Python Exception Handling Order
Other

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.

Q3
Raising Exceptions with 'from'
Other

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?

Q4
Python Multiple Inheritance and MRO
Other

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.

Q5
Python Context Management and Flask
Other

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?

Q6
Dependency Injection in Flask with SQLAlchemy
System Design

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?

Q7
Monolith vs. Microservices Architecture
System Design

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.

Q8
Microservices Deployment Strategies
System Design

Describe common strategies and tools used for deploying microservices. Consider aspects like containerization, orchestration, and continuous delivery.

Q9
Microservices Inter-Service Communication
System Design

Explain various methods and patterns for inter-service communication within a microservices architecture. Discuss both synchronous and asynchronous communication approaches.

Q10
Event-Driven Architecture in Microservices
System Design

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.

EPAM | Senior Software Engineer | Bangalore | Feb 2025
epam systems logo
Epam Systems
Senior Software EngineerBangalore5.5 years
April 1, 20257 reads

Summary

I interviewed for a Senior Software Engineer role at EPAM in Bangalore, completing two rounds focusing on Java, Spring Boot, and system design. Despite receiving neutral feedback after Round 2, I was ultimately ghosted by the company.

Full Experience

I am currently working as a Senior Software Engineer in a fintech company with a total of 5.5 years of experience. Below is my interview experience with EPAM.

Round 1

This round involved Java-based coding tasks and conceptual questions related to Java 8 features and collections.

Coding Questions: Use Streams to implement below:

  1. Print the list of all employees
list.forEach(e -> System.out.println(e.getId() + " " + e.getName() + " " + e.getDesignation()));
  1. Collect a list of employee IDs divisible by 2
List<Integer> result = list.stream()
    .filter(e -> e.getId() % 2 == 0)
    .map(Employee::getId)
    .collect(Collectors.toList());
  1. Sort the employee list in ascending and descending order of ID
Collections.sort(list, (a, b) -> Integer.compare(a.getId(), b.getId()));

More in depth questions were asked from below topics.

  • Functional Interface
  • Collectors & Optional
  • map vs flatMap
  • Method references
  • System.out.println() vs System.out::println
  • Object::printVal
  • Reentrant Locks
  • Blocking vs Non-blocking calls
  • CompletableFuture Object
  • Marker Interface (Serializable, Cloneable)
  • equals() and hashCode() contract
  • TreeSet vs TreeMap
  • Comparable vs Comparator
  • Deep Cloning vs Shallow Cloning
  • Heap, Stack, Metaspace
  • Classpath
  • Checked vs Unchecked Exceptions
  • SQLException Handling
  • FileHandler
  • String Comparison in Java:
String a = new String("Vijai");
String b = new String("Vijai");
String c = "Vijai";
String d = "Vijai";

System.out.println(a == b); // false
System.out.println(a.equals(b)); // true
  • Coding Question: Find the longest Substring Without Repeating Characters

Example Input & Output:

Input: "abcadcbb" → Output: 4 (Substring: "bcad")

Input: "pwwkew" → Output: 3 (Substring: "wke")

Optimized solution: O(n) time complexity.

Round 2

This round covered dependency injection, Spring Boot, transaction management, and system design.

Topics Covered:

  • Spring Boot Starter Dependencies
  • Spring Actuator (Health Check, Logging, Tomcat)
  • Dependency Injection in Plain Java (without Spring)
  • @Primary vs @Qualifier
  • @Transactional
  • SOLID Principles
  • Dependency Inversion Principle
  • Liskov Substitution Principle
  • Spring Annotations
  • @ControllerAdvice
  • AOP (@Before, @After)
  • Singleton Pattern & Thread Safety
  • Factory Pattern & Use Cases
  • Strategy Pattern in Java
  • Observer Pattern
  • Mockito & Unit Testing Best Practices
  • Custom Exception Handling in Spring
  • Handling Service Failures in Distributed Systems
  • Microservices Communication Strategies
  • Multithreading and Concurrency
  • Reentrant Locks vs Synchronized Blocks
  • Database Transactions & ACID Properties
  • Event-Driven Architecture
  • LLD design (Don't remember the exact question)

Verdict: Ghosted after round 2. Was told Round 3 will be held later as feedback of Round 2 was neither positive, not negative.

Interview Questions (5)

Q1
Stream: Print All Employees
Data Structures & Algorithms

Use Streams to implement below:

  1. Print the list of all employees
list.forEach(e -> System.out.println(e.getId() + " " + e.getName() + " " + e.getDesignation()));
Q2
Stream: Collect Employee IDs Divisible by 2
Data Structures & Algorithms

2. Collect a list of employee IDs divisible by 2

List<Integer> result = list.stream()
    .filter(e -> e.getId() % 2 == 0)
    .map(Employee::getId)
    .collect(Collectors.toList());
Q3
Stream: Sort Employee List by ID
Data Structures & Algorithms

3. Sort the employee list in ascending and descending order of ID

Collections.sort(list, (a, b) -> Integer.compare(a.getId(), b.getId()));

Q4
Java String Comparison with == and .equals()
OtherEasy

String Comparison in Java:

String a = new String("Vijai");
String b = new String("Vijai");
String c = "Vijai";
String d = "Vijai";

System.out.println(a == b); // false System.out.println(a.equals(b)); // true

Q5
Longest Substring Without Repeating Characters
Data Structures & AlgorithmsMedium

Coding Question: Find the longest Substring Without Repeating Characters

Example Input & Output:

Input: "abcadcbb" → Output: 4 (Substring: "bcad")

Input: "pwwkew" → Output: 3 (Substring: "wke")

Optimized solution: O(n) time complexity.

EPAM | Sr. SDE | DSA | Java | Offer accepted
epam systems logo
Epam Systems
Senior Software EngineerOffer
September 14, 202471 reads

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)

Q1
Weighted Voting System Implementation
Data Structures & Algorithms

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.

Q2
Design a Screen Broadcast System
System 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.

Q3
Microservice Architecture Patterns & REST Principles
System Design

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.

Q4
High-Level Design for Train Ticket Booking App
System Design

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.

Q5
12-Factor Principles and Design Patterns Discussion
Other

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.

EPAM | First Round Interview for Senior Software Engineer - Java
epam systems logo
Epam Systems
Senior Software Engineer - JavaOngoing
July 26, 202451 reads

Summary

I recently completed my first-round interview at EPAM for a Senior Software Engineer - Java position, which covered core Java features, JVM internals, and two distinct Data Structures and Algorithms problems.

Full Experience

My first-round interview for a Senior Software Engineer - Java role at EPAM took place in July 2024 and lasted 1.5 hours. The interview commenced with a basic introduction, then quickly transitioned into core Java features. There was a significant focus on streams, functional interfaces, and lambda expressions, and I was asked to solve 4-5 problems exclusively using Java streams. Following this, the interviewer delved into Java/JVM internals, garbage collection (GC), and the concept of immutable classes, grilling me thoroughly on these topics.

The latter part of the interview shifted to Data Structures and Algorithms (DSA). I was required to write and execute working code for two specific problems.

Interview Questions (2)

Q1
Partition Equal Subset Sum
Data Structures & AlgorithmsMedium

Determine if a given array can be partitioned into two subsets with equal sums.

Q2
Search in Rotated Sorted Array
Data Structures & AlgorithmsMedium

Perform a search in a rotated sorted array.

EPAM | Senior Software Engineer | Gurgaon [Offer]
epam systems logo
Epam Systems
Senior Software EngineerGurgaonOffer
March 10, 202456 reads

Summary

I interviewed for a Senior Software Engineer position at EPAM in Gurgaon and successfully received an offer. The interview process spanned multiple rounds, including coding, system design, and managerial discussions, covering a range of technical and behavioral aspects.

Full Experience

During my interview process at EPAM, I faced three distinct rounds. The first round was a Coding round focused on Core Java. I was asked to solve two main tasks. The first task involved filtering employees from a list based on their city ('Noida') and then sorting them in reverse alphabetical order by name, all while utilizing Java 8 Stream APIs. The second task presented two algorithmic problems: one was to find the product of all elements in an array except for the element at the current index, without using the division operator; the second was to merge k sorted linked lists into a single sorted list. I also encountered a couple of other questions on Java 8 features and stream APIs.

The second round was a HLD/Technical Round. Here, the discussion revolved around designing a high-level architecture for a food delivery application. Additionally, I was questioned on Java 8 features, various Design Patterns, SOLID principles, and Microservice Patterns.

Finally, the third round was the Managerial Round. This round primarily focused on my previous project experiences, followed by several behavioral questions. After completing all rounds, I received an offer for the Senior Software Engineer role.

Interview Questions (4)

Q1
Filter and Sort Employees by City using Java 8
Data Structures & AlgorithmsEasy

Given an Employee list with fields id, name, and city, get all employees from 'Noida' city and sort them in reverse alphabetical order by name using Java 8 Stream API.

class Employee {
int id;
String name;
String city;
}

Q2
Product of Array Except Self (Without Division)
Data Structures & AlgorithmsMedium

Given an integer array nums of size N, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. You must not use the / operator.

Input: N = 5, array[] = {1,2,3,4,5}
Output: 120 60 40 30 24
For 0th index, excluding 1 from product of whole array will give 120
For 1th index, excluding 2 from product of whole array will give 60
For 2nd index , excluding 3 from product of whole array will give 40
For 3rd index, excluding 4 from product of whole array will give 30
For 4th index , excluding 5 from product of whole array will give 24.

Q3
Merge k Sorted Linked Lists
Data Structures & AlgorithmsHard

You are given an array of k linked-lists lists, each linked-list is sorted in ascending order. Merge all the linked-lists into one sorted linked-list and return it.

Input: lists = [[1,4,5],[1,3,4],[2,6]]
Output: [1,1,2,3,4,4,5,6]

Q4
High-Level Design for a Food Delivery App
System Design

Design the high-level architecture for a food delivery application.

Epam Systems | Java Software Engineer | Gurgaon
epam systems logo
Epam Systems
Java Software EngineerGurgaon4 years
February 2, 202452 reads

Summary

I recently interviewed for a Java Software Engineer position at Epam Systems in Gurgaon. The interview process consisted of three rounds, covering coding challenges, Java concepts, system design, project discussions, and behavioral questions.

Full Experience

I had my interview rounds at Epam Systems in Gurgaon. I have over 4 years of product experience and come from a Tier 2 college background.

Round 1 (1.5 hours) - Coding Round:
For this round, I was required to execute all my code on my local IDE. I was given three problems:
1. Finding the first repeating character in a given string like "asdfaghjklkjhgfdsa" using Java streams and lambda expressions. The expected output was 'a'.
2. Solving the 'Top view of a binary tree' problem.
3. Grouping anagrams from an array of strings, for example, ["eat","tea","tan","ate","nat","bat"] should output [["bat"],["nat","tan"],["ate","eat","tea"]].

Round 2 (1.5 hours) - Java Concepts & System Discussion:
This round focused on my knowledge of Java concepts and system design.
1. We discussed various Java 8 concepts, design patterns, SOLID principles, and threading classes in Java.
2. There were detailed discussions about my resume, specifically on projects where I had used Spring Boot, microservices, and Kafka.
3. I was given an easy design question: to design a service that would notify users on login/signup and credit them a point. I used draw.io to illustrate my design.

Round 3 (1 hour) - Managerial Round:
The final round was with a manager, primarily focused on my professional experience.
1. We talked about my projects and my contributions to them.
2. I was asked some basic Java questions.
3. I discussed my approach to designing systems while keeping SOLID principles in mind.
4. We also covered general behavioral questions.

Interview Questions (5)

Q1
Find First Repeating Character using Streams
Data Structures & Algorithms

Given a string, find the first repeating character in the given string using Java streams and lambda expressions.

Example:
Input: s = "asdfaghjklkjhgfdsa"
Output: a

Q2
Top View of a Binary Tree
Data Structures & Algorithms

Implement an algorithm to find the top view of a binary tree.

Q3
Group Anagrams
Data Structures & Algorithms

Given an array of strings strs, group the anagrams together. You can return the answer in any order. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Example:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]

Q4
User Notification and Points Service Design
System DesignEasy

Design a service that will notify a user on login/signup and credit them a point.

Q5
Applying SOLID Principles in Design
Behavioral

Discuss your approach to designing systems while keeping SOLID principles in mind.

Epam | Junior Software Engineer | Offer
epam systems logo
Epam Systems
Junior Software EngineerOffer
November 20, 202154 reads

Summary

I successfully interviewed for a Junior Software Engineer position at Epam, which involved multiple rounds covering technical skills, coding, and behavioral aspects. After navigating through aptitude, coding, group discussion, technical, and HR interviews, I was extended an offer.

Full Experience

My interview journey for the Junior Software Engineer role at Epam involved several rounds, ultimately leading to an offer. Here's a detailed breakdown of each stage:

Round 1: NCTE Test (MyAnatomy Platform)

The initial screening was conducted on the MyAnatomy platform, known as the NCTE test. This comprehensive assessment included sections on Aptitude, Analytical skills, English Proficiency, Computer Fundamentals, Coding Proficiency, and UI Technologies. Epam shortlisted candidates based on their scores from this round for subsequent stages.

Round 2: Coding Round

This round consisted of three coding challenges, which I had to solve using Java. The first question focused on Object-Oriented Programming (OOPs) concepts, where I was provided with an interface and several classes. My task was to implement the interface, extend classes appropriately, and fill in the logic for specific blank functions to solve the given problem. The second and third questions were medium-level problems related to Data Structures & Algorithms (DSA) and general problem-solving.

Round 3: Group Discussion

After a few days, I received an invitation for a Group Discussion round, which lasted 30 minutes. Approximately 10 candidates participated. The mentor began by introducing himself and providing a brief overview of Epam. The topic for discussion was "Who is more responsible for the second phase of Corona: the public or the government?" Despite limited time, I managed to contribute to the discussion once.

Round 4: Technical Interview

Following the GD, I was called for a 45-minute technical interview, which was primarily focused on Java. The questions covered a wide range of topics:

  • I was asked to introduce myself.
  • I had to explain all the questions I solved in the second coding round and elaborate on my logic.
  • Discussions around OOPs concepts.
  • Differences between LinkedList and ArrayList, specifically regarding insertion and deletion speed.
  • Differences between Stack and Queue.
  • Concepts related to static methods, static variables, and static blocks.
  • Distinction between final, finally, and finalize.
  • The size of long in Java.
  • Binary Trees and Binary Search Trees (BST).
  • Real-world applications of BSTs.
  • Method Overriding.
  • What is a Map in Java?
  • Abstract classes versus Interfaces.
  • What is the Collection framework?
  • Can the main function be overloaded?
  • Discussion about the Collections class.
  • Defining various data structures within the Collection framework.
  • I was asked to code a solution in Java to find a duplicate element in an array.
  • A puzzle was presented: "You have two candles, both of which can burn for exactly 30 minutes each. You need to burn both candles for precisely 45 minutes."

Round 5: HR Interview

The final round was a 30-minute HR interview. This round focused on personal background, professional aspirations, and behavioral aspects:

  • I was asked to tell about myself.
  • Questions about my projects.
  • Situational questions, such as describing a time I acted as a team player.
  • Describing a situation where I made a mistake and how I handled it.
  • Questions about my family background.
  • Inquiries about my willingness to relocate.
  • A hypothetical question: "If your parents advised against relocating, would you still be able to relocate?"
  • Questions about my commitment duration to Epam.
  • Another hypothetical: "If relatives suggested leaving Epam for a higher salary, what would I do?"
  • My achievements.
  • How I would manage a project with limited time.
  • And some general discussion.

Several days after the HR interview, I received the confirmation email from Epam for the offer.

Interview Questions (2)

Q1
Find Duplicate Element in Array
Data Structures & AlgorithmsEasy

I was asked to find a duplicate element in an array and implement the solution in Java.

Q2
Burn Candles in 45 Minutes Puzzle
OtherEasy

I was given a puzzle: You have two candles, each capable of burning for exactly 30 minutes. The task is to burn both candles for precisely 45 minutes.

Have a Epam Systems Interview Experience to Share?

Help other candidates by sharing your interview experience. Your insights could make the difference for someone preparing for their dream job at Epam Systems.