M2P fintech || Java Backend SDE 2 || Offer
Summary
I recently interviewed for a Java Backend SDE 2 role at M2P fintech, completing 5 rounds including technical screening, problem-solving, coding, system design, and culture fit. I successfully navigated the process and received an offer.
Full Experience
Current Experience
I currently have 3+ years of experience at a product-based MNC.
Interview Process Overview
I appeared for a Java Backend SDE 2 role at M2P fintech, which consisted of 5 rounds, each lasting approximately one hour.
Screening Round (Intervue.io)
This round started with introductions. The interviewer then asked questions related to Spring Boot and Core Java. I also had to code a few easy programming questions, with a specific requirement to use Java streams. It involved some brainstorming around Java code puzzles.
Problem Solving Round
After introductions, I was asked to code a couple of problems:
- Singleton Design Pattern: I implemented the Singleton design pattern.
- Substrings with Only Vowels: I was asked to return a list of all substrings consisting only of vowels. I presented an O(n^3) solution, then optimized it to an O(n^2) solution. I was prepared to discuss an O(n) sliding window approach, but the interviewer did not request further optimization.
Towards the end, I was asked questions related to API endpoint security.
Coding Evolution Round
This round began with introductions, followed by questions on Spring Boot and Core Java. There were also a few simple coding tasks related to Java streams. The primary coding question I faced was:
Design Round
This was my first ever High-Level Design (HLD) round. After introductions, the interviewer immediately presented a design problem: to design a system related to credit cards with two main requirements. First, to notify the user at the beginning of the expiry month that their card would expire at the end of the month. Second, to automatically expire the card and send a notification to the user once it had expired. I clarified whether it was HLD or LLD, and we proceeded with HLD. I began by listing the functional requirements and then drew a simple architectural diagram involving a couple of services. The interviewer cross-questioned me on performance aspects, and through discussions, I was able to refine the design. The interviewer was satisfied with the final design, and was quite helpful, providing hints throughout the round.
Culture Fitment Round
This was a 30-minute round with an interviewer who had about 15 years of experience. After introductions, we discussed common behavioral questions:
- How do I try to avoid bugs in my code?
- What is Agile methodology? What are its pros and cons?
- How do I communicate with different stakeholders while working on tasks in Jira?
- How do I handle work delivery pressure?
- Have I had any conflicts with teammates, and how did I resolve them?
At the end, I asked for feedback, and the interviewer mentioned that my responses were good and that I was well-adapted to agile methodologies and the field overall.
Overall Experience and Outcome
I found some difficulties in the screening and design rounds, but the other rounds felt relatively easy. The entire process took about a month. A couple of days later, I received positive feedback and am currently in the negotiation phase, which means I have an offer.
Interview Questions (9)
Implement the Singleton design pattern.
Given a string, return a list of all substrings that consist of only vowels. I discussed O(n^3) and O(n^2) solutions and intended to propose an O(n) sliding window approach.
You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively. Merge nums2 into nums1 as one sorted array. The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.
Design a system related to credit cards with two main requirements: 1. Notify the user at the start of their card's expiry month that the card will expire at the end of the month. 2. Automatically expire the card itself and send a notification to the user once it has expired. This was approached as a High-Level Design (HLD) problem.
How do you try to avoid bugs in your code?
What is Agile methodology? What are its pros and cons?
How do you communicate with different stakeholders while working on tasks managed in Jira?
How do you handle work delivery pressure?
Have you experienced any conflicts with your teammates, and how did you handle them?
Preparation Tips
I found some difficulties in the screening and design rounds. This indicates that I should have prepared more thoroughly for core Java puzzles, advanced Java stream usage, and especially for High-Level System Design. The other technical rounds felt relatively straightforward due to my existing preparation.