EPAM | Senior Software Engineer | Bangalore | Feb 2025

epam systems logo
epam systems
Senior Software EngineerBangalore5.5 years
April 1, 20256 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.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!