Summary
I interviewed for an Intern position at Cult.fit, which included an online coding test, two technical DSA rounds, and an HR discussion focused on my projects, ultimately resulting in a job offer.
Full Experience
Online Test
Initially, 92 students were shortlisted for the online test after resume shortlisting. The test platform was HackerEarth, lasting 1 hour with 2 coding questions. I found the questions pretty easy and straightforward, completing both in under 30 minutes. Following this round, 10 students, including myself, were shortlisted for the interview rounds.
Round 1 Interview
This round began with a brief introduction, after which we directly jumped into Data Structures and Algorithms questions. The interviewer discussed a total of 3 questions, starting with my approach, discussing possible optimizations, followed by implementation, and then a dry run on some test cases. Fortunately, I was asked to code on an online editor, unlike some candidates who had to use Google Docs. This round lasted approximately 1 hour.
I was able to solve the first and third questions in one go with optimal approaches. For the second question, I initially explained a brute-force approach using sets. When asked to optimize, I proposed a solution using Disjoint Set Union (DSU) with a map<string, string> for string mapping. I was a bit unsure about this approach but confirmed with the interviewer that I was on the correct path before implementing it. The interviewer seemed completely satisfied with my approaches and explanations. After this round, 5 out of 10 candidates were shortlisted for the next round (HR round).
Round 2 Interview
This round, conducted by an HR manager, also started with an introduction. The HR was very friendly, and after asking about my well-being and a brief intro, he asked me to share my screen and explain one of my projects. This round lasted roughly 20-25 minutes.
The HR was highly focused on my project, delving deep into every aspect. I opened my portfolio website, which contained links to my projects, live demos, and source code. He first inquired about Netlify, where I hosted my portfolio. Then, I selected my E-commerce Website to explain. Upon opening its GitHub repository, he noticed my last commit was recent and questioned if I had copied the project. I clarified that I had developed the project last year but recently cleaned the code and added new features. After showing him my commit history from the previous year, he was somewhat satisfied.
He then asked me to open the code in my IDE (VS Code) and explain it. My website was built with Django, featuring 'account' and 'shop' apps, which I explained. He was particularly interested in the 'account' app and the authentication process. He asked me to demonstrate user creation and verification, then to explain how authentication worked, showing the relevant code, email sending mechanisms, and token generation. Since my website was hosted on PythonAnywhere, he also asked about my deployment process, showing him my PythonAnywhere account, folder structure, and console.
After numerous questions and verifying my commits and accounts, he was completely satisfied and asked if I had any questions for him. I asked a few questions about Cult.fit, which he briefly explained as he was running out of time. That marked the end of the interview process.
Verdict: I was selected! (Total 3 candidates out of 5 got selected).
Interview Questions (5)
Given N strings of equal length and a single integer K. In one operation, we can select two strings (say A and B) and swap characters at the same index (A[i], B[i]). We need to determine if we can make at least K strings equal by performing any number of operations.
Given n coordinates (x, y) of points on a 2D plane and Q queries. Each query contains an integer r. The task is to count the number of points lying inside or on the circumference of a circle having radius r and centered at the origin.
Given a sorted array containing duplicate elements, remove repeated integers such that all integers appear only a single once and return the length of this array without using any extra space.
Given two sentences (array of strings, vector<string>) and a list of pairs of words (array of pair of string, vector<pair<string, string>>) where each pair represents that both words in a pair are similar. The similarity follows symmetric and transitive properties. We need to determine if the two sentences are similar. Two sentences (say A and B) are similar if they have an equal number of words, and corresponding words (i.e., ith word of A and ith word of B) are similar. Example given: S1: Mango is fruit, S2: Apple is tasty, similar words = { {'Mango', 'Apple'}, {'tasty', 'yummy'}, {'yummy', 'fruit'} } -> S1 and S2 are similar.
Given a binary tree, find the length of the longest path where each node in the path has the same value. This path may or may not pass through the root. The length of the path between two nodes is represented by the number of edges between them.
Preparation Tips
When preparing for interviews, I found these tips helpful:
- Don't think silently; always vocalize your thought process.
- While coding, explain each line or piece of code and its purpose.
- After completing your code, always dry run it on given test cases and various corner cases, explaining it aloud to the interviewer.
- If you're stuck or having difficulty debugging, it's acceptable to ask for hints; it's not viewed negatively.