Round 1: Screening / Practical Coding (HackerRank)
This was a practical low-level design coding problem based on a real scenario, and I was required to use C#. Given an existing repository class, I had to implement and complete every method in a Service class so that it passed the test cases. The main focus was how I organized the code, wrote clean code, handled edge cases, and thought through and solved the problem from the perspective of a real production environment.
Round 2
Maximum Length of a Square in a Matrix
Find the maximum possible side length of a square in a matrix under the given conditions.
Celebrity Problem
The classic Celebrity Problem: identify the celebrity from the given "knows" relationships. I needed to discuss the solution, possible optimizations, and the time and space complexity.
Round 3
Maximum Subarray Sum
The classic maximum subarray sum problem, solved with Kadane's algorithm.
Check Whether a Linked List Is a Palindrome
- Implement and build the singly linked list structure from scratch.
- Implement the palindrome-checking algorithm. This involved basic linked-list operations, reversing the relevant part of the list, and comparing values.
Round 4
Design a Notification System
- Discuss the overall class structure, division of responsibilities, interfaces and abstractions, and interactions among the components.
- Answer follow-ups about extensibility. During the interview, the interviewer would change or add requirements, and I needed to explain how the design could adapt without major modifications.
Round 5: Hiring Manager
High-Level Design and Project Deep Dive
- Give a detailed presentation of the high-level design of my current work project.
- Go deeply into the project's architecture, design decisions, technical challenges, trade-offs, and my specific contributions.
Behavioral Questions
- What is the most difficult coding or technical problem you have faced?
- How do you handle different types of tasks?
- Suppose you are already working on an important task and receive another task. How do you prioritize and manage both?
- How do you handle competing priorities?
- How do you decide what needs to be done first?
- How do you communicate when multiple things are urgent?
Discussion
Loading comments…