YOE : 2.5 years
Current Organization : A company in South Asia(Not India)
Title: Machine Learning Engineer
Background: Undergrad in CS. Although I had CS Background, I kinda started my studies from the 3rd year. So, I was pretty weak at data structures and algorithms. But, I always felt confident with my coding and loved coding. Ever since my 3rd year, I actually worked pretty hard to catch up although I never seemed to have the time to study data structures and algorithms properly.
Motivation: I basically felt like my career progression wasn't as fast as I wanted it to be. So, I wanted to move abroad for better opportunities where I can really progress my career and learn a lot.
Application: I initially thought of not applying to faang(or similar companies). I never had much confidence in myself and didn't think I could crack any of the interviews. But, on January 10, 2022, I was just going through the google careers page and found a position which felt like it was perfectly fitted with me and ended up applying. I never thought I would get a callback from them as I didn't have any referral. To my utter surprise, the next morning, I got a mail from the recruiter. Followed by the confidence I gained from there, I applied to Amazon for EMEA Zone. I took a referral for Agoda-Bangkok from a friend of mine. For those who don't know, Agoda is one of the top OTA in Asia, so I knew that it would also be better than what I had back at the moment. I also took referral for Meta, but couldn't find any role that matched my skillset. So, I didn't get a callback from them.
Edit: Unfortunately, the formatting is not working for the headlines.
At first, I will talk about my interview experience and thoughts. Later on, I will talk about my preparation.
Removed the preparation steps as it contained outside links
Interview Experience
Agoda - Sr. Data Scientist[Bangkok]
The whole interview process started in the last 5 days of January and ended in the mid February.
Online Assessment - Late January
2-3 days after getting the referral, I got a mail from agoda for an online assessment. I was given 48 hours to finish the assessment after starting. Btw, I forgot to mention that I intended to apply for the Machine Learning Engineer role, but somehow, I got referred for the Sr. Data Scientist Role. So, the whole interview was a bit more difficult for me. Anyway, I won't be disclosing the questions. The domain of the problems was combinatorics. But, I was getting a TLE with that. After I looked around for more information, I realized that it was kinda like a math puzzle given similar to math olympiads. After lots of brainstorming, I solved both problems. The first problem was a bit easier and could even be solved without any logic. But the next one was harder.
Technical Interview Round - Early February
There were two rounds. I would only be able to attend the second round if I passed the first round. The topics were mostly probability and data science, according to my recruiter. As I didn't have much experience with data science, I knew that just studying for 2-3 days wouldn't help me. Instead, I only went through my resume.
Round 1
The interview was with a data science manager. At first, he asked me to walk through the resume and asked me several practical questions related to my projects. Later, he asked me a few math questions related to bayesian theorem. Although I knew this, as I didn't prepare at all and my memory was rusty, I had to derive the equation and take help from him. Once I solved them by hand, I was asked to solve a dp medium problem. At that time, I didn't yet prepare for them, instead I came up with a dfs solution on which he said that it was suboptimal. As the time was up, he said that I passed the interview and moved me forward to the next one.
Verdict: I would say my interview didn't go well which was expected. But, it wasn't that bad either.
Round 2
This interview was with head of data science at Agoda-Bangkok. Initially, I was given math problems related to expectation and random value. I solved the first one. Then, I was asked a more difficult question. He gave me a few hints and finally, I solved the problem. Later, he asked me to solve it for n values. I came up with a solution pretty fast. In the end, he said I did really good and it was a hard problem to solve and not many have solved it in the interview.
Verdict: I would say, it went average as I needed hint. But, I did lots of derivations which I think was a proof that I understood them from the basics.
Home Test - Early February
After a week, I was provided with a home test and given a week to solve the problem. It was a practical problem similar to the problems they work on. I was expected to get at least 98% accuracy on the test set for which I didn't have the labels. I was also asked to make a presentation file explaining my solution. I tried my best to keep my code and the explanation clean and easily understandable. In the later part, I actually asked about the test and my manager said that I hit the 98% accuracy but there were people who have had higher accuracy which was pretty understandable. There were people have had PhDs from top schools and I never have done data scienc before.
Verdict: I think I did pretty good in terms of the code readability and the explanations. But, I knew if I had more time, I could have gotten better accuracy.
Final Interview Round - Mid February
This interview was with the global head of data science at Agoda. He asked me many behavioral questions and also asked me a lot about my projects. Besides, he asked me to solve a math problem similar to the first technical interview but this one was vague and had many valuable information missing.
After few more days, I got the offer and they gave me the upper range of the salary that I asked. At that time, I had no idea about negotiation and bonuses. So, I was happy with whatever I got. To be honest, the compensation was quite compelling and similar to faang after the taxes. Also, the process was pretty fast. Everything happened within 10-15 days. I really really loved all the interviews and the experience helped me a lot in the later parts.
Amazon - SDE-1[London]
Online Assessment - Mid February
This assessment was for two hours after starting. 105 minutes for the coding part and the next 15 minutes for the behavioral part. In the coding part, I was given a Trie based problem and the next one was a heap problem. Both the problem difficulties were medium, I'd say. In the end, I had to explain my logic and, the time and space complexity for both problems. It took me around 45 minutes to solve the problems. I wrote detailed explanation for both problems which took me a lot of time. After 30 minutes, I was proceeded to the next step.
Verdict: I was really satisfied with everything.
Phone Interview - Late February
I was really nervous about this interview as this was my first faang video interview with a faang engineer. The interviewer started with leadership questions which took up first 30 minutes. In the coding part, luckily, I got a problem from the famous list Blind75 which I studied thoroughly by then. It helped me to mitigate the nervousness. I still kept myself cool and solved the problem while explaining every single line. I even explained how heapify works in heapq library of python in the process. The coding part was for 25 minutes. On March 1, I got to know that I passed this interview.
Verdict: It went really amazing.
On-site Interview - Mid March
The interview for SDE-1 at Amazon desn't always follow the same pattern. Initially, I expected it to be 4 coding+leadership interviews. However, my recruiter was on leave till 9th March. So, no one was really sure what the interview structure will be. Also, as I told them to set it up within a short time, it became even more difficult. 10 days before the interview, I asked whether I will be having any system design round and was informed by a different recruiter that I will have one system design round. I was looking into them once in a while, so it was okay. However, 4 days before the interview, I got to know that I will have an object oriented design round instead of system design. After that, I got super scared. Although I have always liked designing large codebases in an object oriented way, I didn't know how to be best prepared within 4 days. It was a bad experience for me. But, the situation was a bit complex anyway. Overall, my main recruiter was amazing. I think, she was the best recruiter I had among all these interviews. She seemed to respond to my questions as soon as she could.
The structure for all the rounds were pretty similar. First 30 minutes, leadership questions and then, next 30 minutes were for coding.
Round 1
The interview started with leadership principles. After 30 minutes, I was asked to solve a problem. The problem could be solved using stack. I have solved a similar problem before. In fact, the one I solved was one of the hardest problems I ever approached. But, the given problem was easier. Anyway, I managed to solve the problem while explaining the code. Then, I was given a followup. I also solved that one. This interviewer was probably the bar raiser as he was not one of the hiring managers and the most experienced ones among all the interviewers. I asked him several questions. I have also mentioned to him that I looked him up on linkedin and asked him a question that I had, based on my idea from his linkedin. In later part, he told me to reach him out if my other interviews go well :p
Verdict: I felt like I didn't do that good(don't know why). But, seemed like this went quite well actually.
Round 2
This interview was with an SDE-2 from Alexa shopping. In the coding part, I was given a graph problem in a grid. I solved the problem optimally(i guess) and explained why I did what I did. However, after coding there was a bug that I missed. Turned out, I missed a clue in the question. The interviewer pointed this out to me and told me to fix it. The fix was quite easy but I was really nervous and was failing to come up with good names. I told her about that and she helped me with the naming. Slowly, I got the grip back and solved the bug. Then, she gave me one more followup question and said that it is okay even I don't code. But, I think I even finished that part although it should have few bugs as I solved the problem within 2-3 minutes max.
Verdict: I kinda felt like the interview was a mix. But, I felt proud that I could finish the followup question within such a short time span even though it had bugs.
1 hour break
Round 3
For this, the interviewer was from alexa shopping NLU team. She was one of the hiring managers as per my recruter. Before starting the interview, she mentioned that her mother tongue is same as mine. This immediately helped me to get relaxed. On 30 minutes mark, she copied a problem on the document. It was not similar to leetcode problems. it was more on the practical side. I had difficulties to get from where to start. I had to take lots of hints. In the end, I had come up with a convoluted solution and knew that I could do it better. I solved it using two dictionaries and heap as far as I remember. In the end, I asked her a few questions and she seemed happy about them.
Verdict: Coding wise, this was the weakest interview. But, somehow I still had good feelings about it.
Round 4
This interviewer was from prime tech. He was the second hiring manager. For this, I was asked to design a project using object oriented design. I asked him what features he wants me to add and clarified several other questions. Later, I told him how I would design this and also mentioned which desing patterns I plan on using. He suggested me some other design which I think was a better solution. In a method, I used python kwargs. At that point, he asked me about what I would do in case of statically typed languages.
Verdict: Initially, I felt really bad about this interview. But, slowly I felt like it didn't go that bad. It could have been better but it wasn't the worst in any way.
Recruiter Feedback
After 4 working days, I had the feedback meeting with my recruiter and she said they decided to offer me a position.
Google - L3[Taiwan]
Most of my initial preparation was centred towards google. I had a few discussion with the recruiter on late January. I asked her to give me a month to prepare for the interview.
Phone Interview - Early March
The interviewer directly went into the problem and gave me graph based problem. I think I used dfs to solve the problem. I solved it optimally and pretty fast. Then, I was asked a follow up question which was different from the first one. I gave him a solution with BFS. He said that I won't have to code the whole problem but he wanted to see whether I could BFS which I did.
After 6-7 days, I was informed that they are moving me forward. The feedback was that my thought process was clear. But, my second solution was suboptimal. Also, me doublechecking all my codes was kinda seen as negative.
Verdict: I could have done better but knew that I would pass the interview.
On-site Interviews - Late March
Fixing the dates was a problem specially because I wanted to be done with the interviews as soon as possible. I was tired, really. I had to give 4 interviews in 5 days. Also, my confidence took a hit after the last amazon interview. I noticed that the problems that I was able to solve within 10minutes was taking me more than 25 minutes. Somehow, no matter how much I practiced, my mind wasn't there anymore :( I knew I would bomb the interviews.
Round 1
The interviewer started the interview immdiately. He asked me a hard question which is similar to one of the leetcode problems I have seen before. But, it was even harder. I took one of the topological sorting approach. However, I got stuck in the middle(I was nervous) and took a different topological sorting approach.
Verdict: I think it was okayish as I changed the approach in the middle.
Round 2
The interviewer slowly built his questions and I was asked 2 followup questions. First one was pretty easy. Took me less than a minute to solve. Then, he asked me another problem. It was not that of a difficult problem, but unfortunately it took me a lot of time to solve this. Also, I had several bugs which he pointed out. He gave me final followup problem. This was harder. I didn't have enough time to code up the problem but told him my approach which he said was the right way.
Verdict: This was the worst interview. The interviewer was really nice and patient. But, I knew that I should have solved this problem faster.
Round 3
I was given two problems to solve. Second one was the follow-up of the first one. The problem was grid-based. Initially, I started thinking about dfs which would be O(m**2*n**2). Then, I told him about a DP approach which would be O(mn). He said he was looking for something even simpler. Later, I realized that I wouldn't need any complex algorithm. I can easily solve it like a math problem. Then, I got a harder followup of the same question. Initially, I was thinking whether I can solve using the previous solution. But, it would end up being O(m**2*n**2). So, I started looking for a better solution and gave an O(mn) solution using DP. While solving, I was stuck for a while. The interviewer helped me with that.
Verdict: I should have solved it without hints. But, I really liked the flow of the interview.
Round 4
This was my most favorite round. I was given a practical problem which had two parts. The first was pretty much about finding the right data structure which was heap. The next part was applying the data structure properly. Later on, he asked me a follow up which I wasn't asked to implement. At first I gave him O(nlogn) solution but it was not good enough. Then, I came up with an O(n) solution on which he pointed out a bug. He asked me what other data structure I know about. At that point, self balancing binary search tree hit me and told him the approach. But, I also admitted that I wouldn't be able to implement the tree all by myself. He asked me whether I know any python library for this on which I mentioned sortedcontainer.
My implementation had several bugs. I was planning on going through the bugs once I was done with the structure. But, my interviewer kept pointing me towards the bug which made it dfficult to concentrate.
Verdict: I really loved this round because of the problem. It was so interesting.
Round 5
Behavioral questions related to empathy, mentoring others and convincing people.
Recruiter Feedback
Positives:
Negatives:
My Own Verdict
I knew that I would need a lot of luck to pass the interview. I found myself to be slow even compared to myself. I was taking longer to to come up with the solution. Somehow, after the amazon interview, I was finding it difficult to be in the "coding mode". I wish I wasn't this much upset by self-rejecting myself. This was a lesson for me. I should not have self rejected myself. Even if I did, I should have been mentally strong enough to focus on the google on-site. I will work on this and will come back stronger than this in the future.