The Card Company | Software Engineer - Backend (SDE 1) | Interview Experience | On-Site
Summary
I interviewed for a Software Engineer - Backend (SDE 1) role at The Card Company, undergoing two rounds that covered Java fundamentals, DSA, and complex System Design scenarios. I am currently awaiting the outcome of my application.
Full Experience
I recently had my interview experience at The Card Company, formerly known as FYP, for a Software Engineer - Backend (SDE 1) position. The process involved two distinct rounds, each lasting approximately an hour.
Round 1 – Java + Data Structures & Algorithms
This round began with a rapid-fire series of Java-based questions. The interviewer probed my understanding of core Java and Spring Boot concepts. We discussed topics such as:
- How to handle exceptions globally in a Spring Boot application.
- The possibility of skipping a
finallyblock and returning directly from atryblock. - An explanation of Java Streams and their utility.
- The differences and appropriate use cases for
@Service,@Controller, and@Componentannotations in Spring. - A comparison between
ArrayListandLinkedList, highlighting their underlying data structures and performance characteristics. - What database indexing is and how it fundamentally works to improve query performance.
Following these conceptual questions, I was presented with one Data Structures and Algorithms problem: First Unique Character in a String. I had to solve this problem, which typically involves using a hash map to track character frequencies.
Round 2 – System Design
The second round was focused entirely on System Design. It started with a High-Level Design discussion for a Notification System. Based on this, the interviewer asked several follow-up questions:
- How I would ensure that each notification is sent exactly once to each user, a common challenge in distributed systems.
- Which design pattern I would consider applying in this particular notification system scenario to achieve robustness and scalability.
- Strategies for handling time-based or scheduled notifications effectively.
After the notification system discussion, a new scenario was introduced: an Order Service interacting with three other microservices – Payments, Inventory, and Receipt Generation. The core problem was to describe how I would handle situations where the payment fails. This included explaining how to manage partial updates, address money deductions, and implement rollback scenarios to maintain data consistency across all involved microservices, likely touching upon concepts like distributed transactions or sagas.
I am currently awaiting the verdict on my interview performance.
Interview Questions (11)
How do you handle exceptions globally in a Spring Boot application?
Can we skip finally block and return from the try block?
What is Java Streams.
Difference between @Service, @Controller, and @Component annotations?
Difference between ArrayList and LinkedList?
What is indexing in databases, and how does it work?
How would you ensure that each notification is sent exactly once to each user in a notification system?
Considering the notification system scenario, which design pattern would you apply?
How would you handle time based or scheduled notifications?
You have an Order Service that interacts with three microservices - Payments, Inventory, and Receipt Generation. If the payment fails, how would you handle partial updates, money deduction, and rollback scenarios to maintain consistency?