Cracking Coding Interviews
Hey there! This is my first post and am very happy that it’s about my favorite topic “Coding Interviews”. Let’s go on to the topic. Are the coding interviews easy ? No, they are not easy. You need constant dedication and hard-work to master it. In this post I will explain about my journey, lessons learnt and key take aways.
Fear and Struggle
When I was in college, making my baby steps in programming, I was solving problems on arrays, strings easily but when it comes to linked lists, trees and graphs I always got afraid of them. They were nightmares for me. Later, somehow I got job in MNC without touching them. I joined the company and I was given with role of QA. I didn’t like the job, in fact, hated it. Then, I quit it. I started applying for big companies. I went to amazon interview, there I was asked to write code on paper. The problems are based on linked lists and trees. Then, I started picking problems from geeks4geeks and solving them. The hurdle I faced is when I stuck somewhere, I have to clarify on myself. Then, I started exploring different resources. I will be listing them on end of the post.
After all my real struggle, I somehow grabbed a paid internship in a fintech startup. I gave many interviews in small and big companies, rejected in many of them, started learning from them. The one best practice I followed is, If I was rejected by a company, I never felt sad, instead I solve the questions asked in the interview. It helped me very much that I never forget them in life. So, all my struggles end up, when I went to the interview of bigbasket. When I was in last round, I didn’t feel nervous, One thing I kept chanting in my mind “If I fail in this interview, will I give up coding ? No, If I get succeed, will I give up ? . Either you fail or succeed, only thing you know is coding. Except coding, you know nothing.” I cracked the interview, got offer.
Time for a raise
After one and half year of my tenure with bigbasket, I felt that I need a raise. Then, I started my journey again. This time, I was improved a lot in both coding and system design. Work at bigbasket, taught me so many things. I started with a company called “coviam”. I have cleared online coding test, then a on-site interview. Cleared first two F2F rounds, interviewers are impressed by my knowledge and quickness in coming up with solutions. But rejected in third round. The more important thing here is to handle rejection. Despite rejected, I didn’t feel bad, I got a confidence and I felt I did well. Rejected from hackerrank, soroco, ninjacart, greedy game, tracxn, niki.ai, moengage and springboard.
I attended the interviews of hackerrank, bankbazaar, groupon, grab and flipkart. Even I took leaves for preparation. Felt very bad after rejected from these, because there are quality engineers in these companies, If I join there, despite of money I can learn more. Completing all rounds, HR tells me “we will get back to you after the team having discussion”, I was excited and expecting an offer, HR won’t respond but I have an ego that not to ask them, but out of anxiety ask them, get rejected email. The same thing repeated each and every time. It gave me a heart-break :P So, after many rejections, finally got selected in akamai. What are the key take-aways from my experience:
- Never Ever feel bad for rejection. Instead learn things from it
- Practice, Practice and Practice is the only mantra.
- When I got rejected from big companies, one thing I realized is that “fear”. After going through their interview experiences, I was afraid that their interviews are tough. So, even when I get a simple question in interview, I think it in a complex way. If I loose that fear and attempt the question then I might have cracked it.
Here are the resource that I followed:
For Data Structures and Algorithms:
leetcode.com - My favorite portal for interview preparations. The best thing about this is you find lot of intuitive, unique and easy solutions. Everyone solves a problem in different approaches, there you see all those solutions. Also, it has system design, database design questions too. Have a look at it.
geeksforgeeks.org - A famous computer science portal having everything you need for interview preparation. But in my opinion, the code, methods are not too intuitive and simple, their code has some bugs too. For example, consider this problem, http://bit.do/PetrolPump , the solution is not too intuitive. If you see this solution : http://bit.do/LeetcodePetrolPump. It’s very easy. That’s why I recommend leetcode over G4G.
interviewbit.com - This is also an excellent platform for coding interview preparation. The best thing is they have goal based structure where you can set your goal duration, hours you can spend per day, based on that you can solve problems. They have a neat flow diagram of topics with dependencies so that you can master topics and track progress. One more best thing is they have system design questions and mock interviews.
ideserve.co.in - The special thing about this platform is they have Algorithm Visualization. Also, they have video lectures too, I’m a great fan of their videos. The explanation is very easy and makes more sense. Here’s their channel : idserve.
codesignal.com - Previously called as codefights, the special thing about his platform is you can challenge other people, it’s like a game, you try to win and the skill in you comes automatically.
hackerearth.com - Excellent platform for participating in coding challenges put by companies which could secure you a job. They have “codemonk” which has very good tutorials, also “codearena” which is similar to “codefights”.
hackerrank.com - This is also one of the good platforms where they have bunch of problems on topic wise. Best thing about this is they have very strong testcases. Also, they have discussion platform where you find number of solutions.
pramp.com - Excellent platform for practicing mock interviews. This is very important, your real power comes out during the interview. You choose a slot, they match with another person and give both a random question. Each will interview another and get interviewed.
For System Design
System Design is also a very important topic asked in interviews. Here are the resources to follow:
hiredintech.com - An excellent guide for system design with video lectures
Tech Dummies Youtube Channel - Techdummies Youtube Channel is famous for system design questions. You can find system designs of uber/ola/lyft, bookmyshow/fandango, algorithmic questions.
Gaurav Sen Youtube Channel - Gaurav Sen is a great competitive programmer, his channel has some awesome coding questions and system design questions.
Tushar Roy - This guy is amazing, his explanation is mind-boggling. Subscribe and Watch here : Tushar Roy
Best Practices to Follow:
- Solve at least one problem a day. Go to interviewbit, there you can chose a problem randomly and solve.
- Give more and more mock interviews, it gives lot of confidence.
Final Note: I will be updating this post as and when I find new things, please keep a note in comments, if you need any help, contact me at firstname.lastname@example.org