My Interview Experience at Fi
Fi is one of India's best emerging neo-bank startups for digital natives. It has been founded by the former creators of Google Pay (previously known as Tez). I looked at their awesome team on LinkedIn and I felt as if working with them would be a great learning experience for me. So I immediately applied for an Intern + Full time opportunity for Software/Security Engineering roles at Fi on 24 January 2021.
The First Breakthrough:
After 9 days, I got an e-mail from Fi Hiring Team to attend a coding test on HackerRank for the duration of 90 minutes. I was in college when I received this e-mail and immediately after reaching home, I decided to take this test. It had 3 coding questions:
1) Almost Equivalent Strings [Easy] [50 Points]
2) Shopper's Delight [75 Points]
3) You will be given a list of articles with their page lengths and intellectual value coefficients. Given a limit to the number of pages you can read in a day, determine the maximum intellectual value you can achieve during one day. You have to read each article twice to gain value. [ Dynamic Programming / Knapsack ] [75 Points]
I was able to solve 1st & 3rd questions completely and managed to solve 2nd question partially where 50-60% of the test cases passed.
The First Call:
After 7 days, I got a call from a recruiter. She told me that Fi Hiring Team would like to invite me for a Hangout Interview with their co-founder Neeraj Bhope. The Interview was scheduled on 12th February 2021.
The First Round:
Honestly, I was nervous. Because, I was going to be interviewed by someone who not only worked at Google for 12 years but also lead a team that revolutionized digital payments in India. So here's how it goes..
Interviewer: Hi Ritish ! Let me introduce myself to you & later on you'll get a chance to introduce yourself and then we can move forward with this interview.
Interviewer: Introduced himself and asked "Can you tell me something about yourself ?"
Me: Introduced myself. Talked about my achievements in Facebook Bug Bounty. Talked about my previous Internships & also told why I applied at Fi.
Interviewer: Cool! Do you know about Public Key Cryptography?
Me: Explained clearly the concept of Public Key Cryptography.
Interviewer: Can you explain one interesting security issue that you found in Facebook, along with its impact?
Me: Explained a vulnerability that I found in Facebook [ Interested? Read here ]
Interviewer: How about solving a coding question now?
Me: Sure!
Interviewer: Please open the link in the chat box.
Given a huge text file which has chat logs of a group chat, find top K chatty users by word count. Assume number of users to be N. Ritish : Hello Guys Sanjay : Nice Rakesh : Old is Gold Top 2 chatty users are [Rakesh,Ritish]
Me: Instantly gave the solution using Hashmap + Sorting. Its time complexity was NlogN
Interviewer: I think we can reduce the complexity. How do we do it? [ At this point, I realized the importance of follow-up questions in Leetcode. Never ignore that! When you're being interviewed by the best, you are expected to deliver the best. No excuses]
Me: After 2 minutes of awkward silence.... "Max Heap!!!"
Interviewer: Explain the working of Max Heap along with heapify
Me: Beating around the bush... with some correct as well as incorrect explanation
Interviewer: Explained me the concept of heapify clearly along with its complexities [ I wish he was my professor at college ]
Interviewer: Now I expect you to give a solution using Max Heap! Can we maintain a heap of size K and reduce the time complexity of your solution from NlogN to NlogK ?
Me: Yes! We can do that. Derived a NlogK solution and explained him the approach and we were left with 3 minutes. I quickly tried to code the solution.
Interviewer: It's ok. I understood your approach. Stop coding as we have no time left. Any questions?
Me: Asked some questions about culture at Fi
Interviewer: Answered my question and we agreed upon to end the interview.
When the interview ended, I had mixed feelings whether I would go through to the next round or not. Because, someone explaining you the concept of Max Heap in an Interview is something that I have never heard before. But the experience was amazing, it felt like I was interviewing at Google!
The Second Call:
After 11 days, the recruiter called me and she told me that the team would like to invite me for the next round of interview with the Head of Engineering at Fi - Prasanna Ranganathan [Ex- Senior Architect @ Flipkart, Ex- Tech Lead @Paypal, Ex- Netflix]. The Interview was scheduled on 25th February 2021, but later got rescheduled to 2 March 2021.
The Second Round:
From the lessons I learnt in previous round, I knew that the interview was not going to be easy, one mistake & I will be knocked out. So I took this round seriously and here's the detailed replay...
Interviewer: Hi Ritish ! My name is Prasanna.... Introduced himself.
Interviewer: Please tell me something about yourself ?
Me: Introduced myself.
Interviewer: Explain one of the best vulnerabilities that you found in Facebook?
Me: Explained.
Interviewer: Do you have an idea about OAuth?
Me: Yes, I have a basic idea about it. 'Auth' in OAuth stands for Authorization and not Authentication... Then he immediately interrupted me!
Interviewer: You raised a good point. First, explain me the difference between Authentication & Authorization , later you can continue with your answer on OAuth.
Me: Explained him the difference between Authentication & Authorization.
Interviewer: Understood! Please continue with your answer on OAuth..
Me: Explained clearly my understanding about OAuth.
Interviewer: Sounds good! Let's do a coding question now. Open the link in the chat.
You are given a target and list of records. Return the record with minimum value for the target. The records can contain negative values as well. If a record doesn't contain the target assume the value to be 0 in that particular record. Assume number of records to be N. target: 'a' , records: [{'a':1,'b':3},{'a':3},{'a':4,'c':-5}] ans: {'a':1,'b':3} target: 'a' , records: [{'a':1,'b':3},{'a':3},{'c':-5}] ans: {'c':-5}
Me: Spent 5 minutes understanding the question. I wasn't able to understand the test cases and the expected output initially, but after 5 minutes I finally understood the question clearly and within further 5 minutes, I coded the solution with O(N) time complexity. All test cases passed.
Interviewer: What's the time & space complexity of your solution?
Me: O(N) time and constant space. Explained clearly why it is so.
Interviewer: Sounds good. Let's go to the next question.
You are given a target, param and list of records. Return the record with minimum value for the target if param is 'asc' or Return the record with maximum value for the target if param is 'dsc'. The records can contain negative values as well. If a record doesn't contain the target assume the value to be 0 in that particular record. Assume number of records to be N.
Me: Coded the O(N) solution and all test cases passed. Explained time & space complexity.
Interviewer: Cool ! Do you have any questions for me ?
Me: How different is your experience at Fi as compared to Flipkart, Paypal or Netflix ?
Interviewer: Answered my question and we agreed upon to end the interview.
When the Interview ended, I knew that I cracked this round. The only thing I can do now is to wait for the recruiter's next call.
The Third Call:
Next Day, I got a call from the recruiter and she told me that the hiring team would like to invite me for next round of interview with Pruthvi Sabbu [Senior Software Engineer with 8+ years of experience in digital payments]. The interview was scheduled on 5th March 2021.
The Third (Final) Round:
I have been interviewing at Fi for over a month now, so I cannot afford to lose my time & efforts in this final round. So I started preparing for system design concepts of digital payments because Pruthvi had 8 years experience in the same domain. Also read about internal working of sessions, cookies , DNS, OAuth and related web technologies concepts. Didn't touch coding.
Interviewer: Hello Ritish ! I'm Pruthvi... Introduced himself. Please give your introduction.
Me: Gave my introduction.
Interviewer: Since Neeraj & Prasanna have already tested you in Security, just explain me 2 best vulnerabilities that you found in Facebook.
Me: Explained my top findings in Facebook.
Interviewer: Good! I don't have much to ask about Security, so let's do a coding question.
Me: Sure!
Interviewer: I just sent you a link in chat. Open the link.
Given a string, your task is to count how many palindromic substrings in this string. Input : ABC Output: 3 Input : AAA Output: 6
I solved this question many times. But at this moment, I went numb for 10 minutes after seeing this question, due to nervousness. The only thing I knew about this question at that moment was "It is definitely not an easy question!". Ten minutes passed without any response from my end. So I decided to break my silence by giving a brute-force solution, then later decide how to approach an optimal solution.
Me: Pruthvi, the brute-force solution is to generate each and every substring and check if it is a palindrome or not.
Interviewer: What's the time complexity?
Me: O(N^3). But I am thinking of an optimal solution, please give me some time to think.
Interviewer: Sure, take your time.
After 5 minutes I got an idea about using "expanding-from-center" approach.
Me: I think we can solve this question using "expanding from center" approach. It will have a time complexity of O(N^2), I feel that's optimal enough for this question. [ I was hoping that he doesn't ask me to give O(N) solution using Manacher's Algorithm ]
Interviewer: Yes, that will work. You can code the solution.
Me: Coded the solution in 10 minutes & all test cases passed. When I saw the clock, we still had 21 minutes left in the interview. From no solution in first 10 minutes to saving 21 minutes in the end, I felt it like an achievement.
To utilize those 21 minutes, we had a chat about my experience with Facebook Bug Bounty and I explained him few more vulnerabilities that I found in Facebook & LinkedIn.
Interviewer: If you want to introduce one privacy feature in Facebook, what will it be?
Me: Providing users with an option to turn off receiving messages on WhatsApp, while their internet connection is turned on.
Interviewer: Why do you think WhatsApp has not yet implemented this feature yet? It is a piece of cake for them, they can implement this overnight. Are there any potential drawbacks ?
Me: Gave some possible situations and talked about drawbacks.
Interviewer: How end-to-end encryption works in WhatsApp? Are chats between two users saved in servers?
Me: Gave possible (not accurate) solutions to both questions with my knowledge about Cryptography & Network Security. Because we don't know exactly how Facebook deals with our sensitive data.
Interviewer: Good progress Ritish ! You have maintained a good profile at your age. Do you have any questions for me ?
Me: How different is Fi to you as compared to your previous fin-tech startups & companies?
Interviewer: Answered my question and we agreed upon to end the interview.
When the interview ended, I was expecting that this should be my final round. It has been almost 45 days since I stepped into this hiring process and I cannot imagine one more round.
The Suspense:
3 working days past my interview, I haven't heard back from anyone yet!
9 March : I mailed the recruiter for an update. No reply!
12 March : I mailed my interviewer and asked him whether he passed the feedback of our discussion to the recruiters?
12 March : Interviewer replied quickly - " Apologies for inconvenience, I will get things speeded up"
12 March : Recruiter called me and she said - "Hi Ritish! When can you join? We are having a discussion about you. I will let you know soon".
I was expecting an offer after the discussion with recruiter, but didn't heard back. I seriously wanted to join Fi and learn new things there!!
The Dunzo Twist:
While I was waiting for Fi's decision, I got an offer from Dunzo for the role of Security Engineer Intern. I waited till 21st March for Fi's reply and finally joined Dunzo on 22 March assuming that I was ghosted.
On 25th March I got a call from unknown number. He was a different recruiter from Fi (not same).
Recruiter : Hi Ritish! My name is Anonymous. I am calling from Fi. You had your previous interview on 5th March. We would like to invite you for the next round of discussion with the founding team. I called you to know your availibility.
Me : Hi Anonymous! Sorry, I have joined Dunzo because it's been a long gap since my last round at Fi and I assumed that I was ghosted. I would like to forfeit my interview process at Fi. Thanks for the opportunity, It was great meeting you guys!
Recruiter : I understand, Ritish! I wish you all the best for your future!
Conclusion:
60 Days! 4 technical rounds! Meeting the founders of Google Pay (Tez)! This boils down as my best interview process till date. But equally concerned that the end result could have been different, if the process was bit fast. That's life!
But where did Dunzo come from in the middle of the interview process? Well... that's a different story for upcoming episodes!
Thank you for reading till here. I hope you found the interview experience helpful. Don't shy to message me, I am always ready to help anyone and make new friends :)
SDE @Accuknox || Ex - Educator @CodingNinjas || 4?? @Leetcode(Top 0.4%)
1 年Wonderful Ritish! This was very helpful for me Thankyou ??
Amazing read.
Fans page of Samrat Investments for Clients, investor and end user| Sharing financial awareness to empower YOU + soar profit.
3 年Wonderful Ritish Kumar Singh