I recently grabbed an offer as a Software Engineer in South East Asia’s biggest Unicorn - Grab.
What interested me the most about this opportunity is that the company employs cutting-edge technology to solve real-life problems at a massive scale.
I am exhilarated that I got to be a part of it!
Through this blog, I would like to share valuable insights on what went down in my interview experience before I got selected for the job.
Crio referral and online screening
The process started when Crio referred me for the relevant position.
I got an online test link on the codility platform which really got me excited as Grab was one of my dream companies that I was hoping to work at.
The HR told me that I needed to give the test within 24 hours, so all I did was surf about interview experiences at Grab and tried to get a sense of the kind of questions they frequent.
The test did not involve any DS/Algo as such, it was simply analytical in nature, based on logical thinking and basic coding skills.
There were 3 questions and I solved all of them with all test cases passing.
The test result was announced the next day and I was thrilled to move to the following interview rounds.
Coding interview rounds
After the test, there were 3 coding interviews, each involving 1 easy and 1 medium/hard question as follows:
Q1. Basic preorder traversal based question
Q2. Find max sum path in a binary tree.
In the first stage, I faced a lengthy question (Q2, as I was supposed to save the path as well) which took some extra time but then I performed perfectly in the other 2 stages and solved all the questions with concise explanations.
Q1. Basic DP question
Q2. Merge n sorted linked lists
Q1. Basic tree traversal question
Q2. Given a 2d matrix, where you can start from the leftmost column, go either one box diagonal right up, diagonal right down, or right to finally reach some box in the rightmost column. Each box is filled with some integer. Find the max sum path from start to end.
This was the only problem I hadn’t done before. I approached it systematically, trying out different test cases and trying to decipher a pattern.
After understanding the pattern, I cross-referenced it to various data structures and algorithms I could have used and eventually solved it using Dynamic Programming.
I think the interviewer was expecting a different solution but mine worked perfectly as well so he was rather impressed by this approach.
All 3 stages had in-depth discussions regarding my solutions. There were follow-up questions that were altered variations of the question. This was to test my skills and see how I could accommodate changes to the code and satisfy the altered problem statements.
3 days later…
HR called me and informed me that I am selected for the next round of interviews.
The key for clearing coding round stages was how you managed your time.
Since the questions were time-bound, you are expected to solve them with minimal or no help.
The interviewer will not tell you if you are wasting time or over-explaining anything until your time is up :)
Unless you are absolutely stuck, it’s best you focus on solving the problem on your own without losing much time on discussion.
Interview with the Hiring Manager
The hiring manager round was more holistic in nature. There was an in-depth discussion about my projects.
So make sure you have prepared at least one impressive project that you know in and out about, including the weaknesses of your system and how you could have fixed it.
They test your thought process and skill, they don't really expect that you would have actually created an entire working service perfectly, at least not for junior roles.
To emphasize this point, the project I mentioned was impressive but was definitely not fully tuned for real scalable functioning.
He pointed out problems in my system I didn't even know existed! But I told them that the scale was low and he was cool about it because again, they're very practical and he noticed that I did do it right based on my experience level.
Besides this, the interviewer asked me to write production-grade code for a simple problem statement. The factors they were grading me for were mainly my ability to find edge cases and general code quality. This is another place where the Crio program helped me out.
Crio’s learn-by-doing based practice had really instilled a fundamental habit in me, to always write clean and bug-free code.
Actual realistic code wasn't required, it was just to see how you think, what you consider, how you approach the problem and go about the implementation.
I got to know that I cleared this round and was asked to be prepared for the final round.
HR interview round
In the end, there were some behavioral questions, which were more of a general discussion, pretty straightforward. It was just a discussion mainly around why I wanted to join grab, why I was switching etc.
I was asked a few questions about:
- Why do you want to join Grab?
- How would you resolve conflict with a colleague?
- Talk about some challenges you have faced in the past and how did you react to them? What did you learn from the experience?
- Are you willing to relocate or work from home?
By the end of that day, I got an email saying I was selected for the job!
Crio played a fundamental role right from preparing me for the job and interview and of course, referring me for the role.
I was one of many engineers who graduated with a job but did not love what I was doing.
It was not an easy decision to switch to a product based company.
Crio really helped me by giving a clear path from start to end, that included everything from coding questions and projects to mock interviews and practice tests.
Now mind you, you're the only one who can actually walk on that path and consistently move along.
But when someone shows you the path, then at least then you know where you're heading!
The holistic set of questions and regular practice in the Crio program really changed the game for me.
Crio removed the fear in me when it came to solving hard coding problems.
Now, I approach any coding problem with curiosity and I am much more confident in finding the solution.
And not to mention, the Crio projects not only gave me awesome content to showcase in my resume and talk about in the interviews, but they also enhanced my actual industry performance!
Crio does give you a reliable base for learning from where you can fly and find out your strengths and weaknesses, then deal with them methodically.
All I had to do was
- stick to the course deadlines,
- complete my weekly goals,
- actively make notes and learn from my mistakes,
- ask doubts, and
- practice persistently on my weak areas until I got confident.
I'm sure there would have been many paths to my current position, but this was the one I took and can vouch for.