I recently went through the interview process for a Backend Intern role at Smallcase. The process was spread across a little over a month and consisted of three rounds, each testing a very different set of skills.
The Timeline
- June 25: Applied
- June 29: Received confirmation email
- June 30: HR call
- July 3: Round 1 — DSA
- July 10: Round 2 — Machine Coding
- July 29: Round 3 — Technical/Culture Fit
- August 4: Received the offer letter
Round 1 — DSA
The first round was a 1-hour DSA interview with three questions.
The first was a 2D Dynamic Programming problem. I was able to come up with and code a solution, but I wasn't able to fully optimise it.
The second was a Binary Search on Answer problem, similar to the CSES Array Division problem.
The third was a relatively straightforward Two Pointer problem.
I was able to solve the latter two questions reasonably well. Shortly after the interview, I received confirmation that I had cleared the round and was asked about my availability for the next round.
Round 2 — Machine Coding
The second round was a 1.5-hour machine coding round, where I had to build the backend system for a stock portfolio tracker completely from scratch, without using AI.
The system needed to support functionality such as:
- Creating portfolios
- Buying stocks
- Selling stocks
- Tracking holdings
- Calculating total returns
- Handling other portfolio-related operations
The round wasn't just about getting the functionality working. Code quality, structure, and design decisions were also an important part of the evaluation.
After implementing the core system, I had to convert it into an API. We then tested the APIs using Postman, going through different scenarios and edge cases to see how the system behaved under various inputs.
This made the round feel much closer to building an actual backend service rather than simply solving a machine-coding problem. I had to think about API design, validation, edge cases, code organisation, and maintainability, all while working within the time constraint.
Round 3 — Technical/Culture Fit
Interestingly, what was described as a culture-fit round wasn't really an HR round.
Instead, it turned into a fairly deep technical discussion. We discussed Go fundamentals, what Go does differently compared to other languages and why those design decisions exist, concurrency and threads, and some of my previous work.
A significant part of the discussion was around my LFX project, where I work with consensus algorithms. We discussed how consensus algorithms work, my work on the project, and even had a short discussion around Raft and its use cases.
I enjoyed this round quite a bit because it wasn't just a checklist of technical questions. A lot of the conversation was driven by my previous projects and the reasoning behind the technologies I had worked with.
The Result
After the third round, I received confirmation that I had been selected, and on August 4, I received the offer letter.
Overall, I really liked the interview process. Each round tested something different — DSA, practical backend development and code quality, and finally technical depth and understanding of the things I've worked on.
My biggest takeaway was that for a backend role, it's important to go beyond just making something work. Being able to write clean, maintainable code, design sensible APIs, handle edge cases, and explain the reasoning behind your technical decisions can be just as important as solving the problem itself.