A Rookie’s Guide to Cracking Coding Interviews

Sample Thoughts
30 min readOct 16, 2020

Coding Interviews (securing an internship in my testimony) is the second most difficult thing one would face in college. First being, scoring good marks in college even though we are bombarded by procrastination (poor us). In this article, I am going to tell you my experience, followed by the resources I used and finally giving an overview of the dos and don’ts.

1. It Me

Who am I? Well, I am a third-year engineering student currently pursuing Electronics and Instrumentation at Birla Institute of Technology and Science, Pilani, and recently got shortlisted for summer internships(2021) in Citrix, Bangalore. I will categorize myself as a person who had a project heavy profile aiming for IT companies however lacking the theoretical knowledge required for proving your sanity to the interviewer. However, I would also consider myself as a person who had some language background (predominantly Python and a little bit in C, C++). Therefore, I was lacking the toolkit/goals/ guidance required to crack the online tests (major blocker in IT placements and interviews).

The Target Audience

Well, anyone who is short of 4 or more months from the onset of the intern season can benefit from this testimony. But anyone from a non-CS background (provided that your college allows non-CS peeps to sit for IT interviews) lacking any theoretical knowledge and has no idea where to start for the preparation of interviews or online-tests can benefit the most from this article.

Disclaimer:

Any testimony or article on similar topics won’t work for you if you don’t start implementing the things mentioned in the articles. Also, depending on person to person different methods of learning might suit their needs. Finally, reading this article is not going to make you smarter or crack questions faster. You are expected to put in hours of practice ranging from 120-hrs to 300-hrs over 3 months (increasing the months will also increase the hours proportionally? You can do the maths).

2. Mein Kampf

My Leetcode Journey

Well, my journey started around June 2020. I was in a position where I was familiar with what I wanted to learn broadly. I knew that I had to study DSA and use Java or C++ as that’s what most of the people recommend. There’s something known as stacks, queues, and graphs in DSA. In short, I knew close to nothing. Therefore, the first thing I did was procasti… I consulted a peer of mine who had a good amount of experience in Competitive Programming (will be referred to as CP from now on). He told me some topics to start with and a few tips which he gave me was as follows-

  1. Practice from either Leetcode or Interviewbit.
  2. Solve questions, don’t worry about memorizing algorithms.
  3. The theory will come automatically along with practising questions.
  4. Solve 5–6 questions per algorithm/concept. 7–8 if easier algorithm.

2.1 Preparing for Online Round

All That Glitter is not Gold

Following his rules with some modifications to suit my needs, I started grinding Leetcode. The progress was horrible for me during the initial stages (I do agree that I don’t have an above-average IQ) and the probability of cracking a completely new question is very low for me (RULE 1: Know what suites your mind, not your ego). So I focused on doing as many questions as possible.

June —

  1. Time Invested: 10–12 hrs per Week
  2. Number of Questions: 40
  3. Topics Covered: Sliding Window, Two Pointer, Greedy, Divide and Conquer, Arrays & Strings (Elementary Algorithms)

July —

  1. Time Invested: 14–16 hrs per Week
  2. Number of Questions: 80
  3. Topics Covered: Arrays, Linked Lists, Recursion, Backtracking, Hashing, and Trees(BST, Binary Trees, N-ary Trees)

August —

  1. Time Invested: 18–20 hrs per Week
  2. Number of Questions: 120
  3. Topics Covered: Stack & Queues, Graph Theory, BFS and DFS, Binary Search, String Manipulation, Coding Interview Playlist (Leetcode) (Around 80 out of 145 questions)
  4. Started participating in Leetcode Weekly Contests as well (Virtually and Live both)

September —

  1. Time Invested: 17–21 hrs per Week
  2. Number of Questions: 90
  3. Topics Covered: Dynamic Programming, Graph Theory, Heaps and Priority Queue, Coding Interview Playlist (Leetcode) (Around 40 questions)
  4. Continued participating in Contest, but the season also started so was invested mostly in giving companies’ online rounds.
  5. Started studying OOP, puzzles, and C++ (for language-related questions).

2.2 The Season Begins

Are you Hired, Son?

September started with the onset of the internship season and me failing the online tests day by day. However, I got shortlisted for the interview of two companies one was Oracle, and the other was Citrix. I couldn’t clear the interview round in Oracle because I failed at answering the puzzles.

In Citrix, the first round was on CodePair and the interviewer asked me two questions the first being a standard DP question (question using a similar concept) and the second being as follows-

Given an integer array of size N, divide it into subsets all containing K elements such that no number is repeated in a subset and no two subsets are the same i.e all the elements of those subsets are same

Round I

For the first question, I explained the possible solution to the interviewer explaining to him that we can do it recursively but I see that using DP is far more efficient for this question. While explaining to him the possible solution I also wrote comments on the solution i.e. what could be the DP relation and any constraint if possible. He then gave me a heads up with my approach and told me to start coding. I wrote the code and ran it once fixed minor bugs and ran it finally passing all the test cases.

The interviewer moved onto the next question where I again repeated all the steps all again writing the comments while explaining to him my solution. Although this time I could only pass 70% of the test cases and I went on debugging my code by looking at the test cases. One thing which I found out while investigating the test cases was that “no two subsets are the same” was missing from the question, I explained to him that it is missing from the question and asked for him to give me few minutes to come up with a solution. Although I couldn’t come up with a possible solution.

Then he moved onto discussing my projects and asked me to elaborate on my projects. Since I had been doing backend development for 1.5 years I knew about my projects in great depth. I explained to him all the crucial technical aspects of my projects such as REST, CRUD, FTS, etc. Finally, he asked what is polymorphism. He was quite satisfied with my explanation and asked if I had any questions for him (don’t show your modesty here, always prepare a question to ask the interviewer beforehand) and I asked him if he had any suggestions for me. He said that he was quite satisfied with my performance and that I am well versed with my projects and while explaining my approach to my code I also wrote comments which he liked.

Round II

After this, I was shortlisted to the second or the final round (managerial round) where the interviewer was an experienced employee probably someone in a manager position. Since I was from a non-CS background he did not expect me to know OS or DBMS and asked me a C++ question which was

What is a static variable? What is the difference between a static variable defined globally and a global variable?

For the latter question, he did say though that he does not expect me to know the solution for the later question and I didn’t. After that, he grilled me on some design choices oriented question. He asked me what data structure I am familiar with implementation wise. I said, “Stacks and Queues” and to which he followed up by saying what will you use to implement Stacks and I said Linked List and Arrays (yes you can use a linked list to implement stacks which I came across a day before while I was reading archives). Finally, he asked me to frame three questions that would help me to decide what should I use for my implementation. I framed the questions and he commented on those questions, his response I would say was fairly on the positive side although very neutral.

Finally, he grilled me on some HR questions which I had prepared for in a very vague fashion such as “how will I manage conflict in a workspace” and “how do I plan to cover the CS courses in the future”. I answered his question giving a mostly honest answer along with some preparation which I had done earlier. The interview was finally concluded by him asking if I had any questions for him and I asked two questions this time one was related to the company Citrix (do research on your company) and the second was that whether he had any feedback for me(he gave me some feedback such as prepare for HR questions well in advanced). Three hours later I got a mail from my placement unit that I was shortlisted for the internships and all this did not go in vain. P.S. this was the last company for the day 2 process meaning that after this all the companies would be coming in any random time window and might not be even worth preparing for. Also, I had left my academics to dust since the start of the semester, so I couldn’t afford to take more academic damage.

3. Let’s Talk Business

No one likes to hear someone brag and so let’s talk about how to prepare. I wouldn’t say that these are the hard and fast resources for the preparation of coding interviews but it’s a good place to start with.

3.1 Languages to be Learned

Any common CP language such as Java or C++ (in STL) would be sufficient to start learning DSA. Though, most of the resources usually use pseudocode for explanation and language is never a barrier. C++ and Java are very similar so you can understand the other language knowing any one of them. It won’t be difficult for you to translate from one language to another. Although, every college has one course of computer programming in the first year as it is an important tool in engineering and therefore learning a new language after that is only a 2–3 week job. I did my preparation in C++ and will be listing the resources for it below.

Videos and other References-

  1. 45-min video on STL by Rachit Jain
  2. C++ Guide for IT by Simple Snippets
  3. C++ Standard Template Library Reference by GFG- Used this always for referring to function arguments while solving questions.
  4. C++ STL Reference by cplusplus.com- Used this along with GFG, if interested in knowing the working behind the function as well

Question Pool-

Hackerrank C++ Playlist- Getting a gold medal in this will be more than sufficient for you.

Do keep this in mind that memorising syntaxes should be your least concern. You are going to refer online for syntaxes and arguments day in and day out for first 1–2 months and that’s okay. After a while, you will see that you don’t need to know every nuance of the language, it’s only a few functions and templates which you are required to know.

3.2 Data Structures, Algorithms and CP

The process for the preparation of CP and Coding Interviews are very similar only difference being the portion from which the questions are asked.

Note

Remember the 5% rule i.e. 5% time for reading and 95% time for solving questions.

Question Pool-

I used Leetcode for solving problems, although I wouldn’t say that Leetcode is the only site useful for preparation it’s just that what clicks with you. Some prefer Interviewbit and HackerEarth as well.

I will also hyperlink some of the topics with relevant question bank I used for learning and solving. A quick hack, go to Leetcode->Problems, click on the problem tag of your interest and finally click on show tags boolean and solve problems based on tags which you are familiar or comfortable with(you will be with none in beginning so pick more of array-based questions with easy difficulty).

  1. Divide and Conquer, Sliding Window, Greedy, and Two Pointer- These are the elementary algorithms that you will be using throughout your problem-solving sessions. A list of problems containing these algorithms is never-ending. However, solve around 8–10 questions per topic initially (will take around approximately 1–2 weeks) with 60% questions of Easy Difficulty and 40% questions of Medium difficulty.
  2. Arrays, Linked Lists, and Recursion I- Leetcode Explore section is sufficient for starters. Although, keep this in mind that as a beginner your should be familiar with algorithms and data structures and knowing where they can be used. The memorization of algorithms takes place automatically as you solve more questions around it.
  3. Stacks, Queues, and Linked Lists(Random Problems)- I will just be jotting down the problems which I find relevant in this section.

END OF MONTH 1

By now you would have developed a basic problem-solving flowchart in your mind which aid you in solving questions. This will also help in the memorization of more intermediate algorithms because of a sound logical system you would have devised by now.

4. Hashing, Recursion II, Binary Tree, Heaps, and Binary Search Tree- Leetcode Explore Section is pretty sufficient for these topics as well. Trees even though being a complex data structure I never had to refer to any other material for theory and that’s where I think that the explore section stands out. It’s very methodological and streamlined making your learning process very active. For heaps(priority queue in C++), I did random heap questions in the problems section and some BST questions can also be done using heaps. P.S. do prepare for some theory for hashing(preferably CLRS) as hashing is one topic from which objective questions are asked.

5. String Manipulation and Binary Search- Leetcode Explore Section is pretty exhaustive for Binary Search. However, for strings the list is never-ending. You have questions standalone on strings, one which has DP involved, and finally one with the usage of Trie.

https://leetcode.com/problems/magnetic-force-between-two-balls/ — A very common question type in binary search. Can be categorized within Aggressive Cow Problems and it’s a very crucial algorithm indeed. I encountered 2 questions about using the same algorithm in my online rounds.

You will also come across a lot of string questions in contests as well as in the Coding Interview Playlist, therefore, you wouldn’t be required to explicitly prepare for it. However, there are some benchmark questions in strings as well such as substring matching, palindromic string, reversing a string and check if anagram, and much more. However, these questions you will or would have encountered by now.

END OF MONTH 1.5

Your goal should now be to start solving random questions and ask questions such as which algorithm should be used to solve this question rather than how should I use this algorithm in this question.

6. Leetcode Coding Interview Playlist- By now you would have familiarised yourself with a significant pool of algorithms and data structures and you should now focus on solving at least 3–5 questions from the playlist daily or 6–8 questions every alternate day(not preferable). You are expected to solve the playlist parallelly to participating in contests and accomplishing other goals you have in mind until you complete at least 110+ questions from the playlist (ETA: 1.5 months).

7. Hard Questions and Contests- Start participating in contests. Although, you still won’t be able to crack all the questions you encounter and don’t get disheartened by it. Note that, don’t invest more than 30–45 mins per question if it’s of Medium or below difficulty in nature. You can also start investigating hard questions around this time.

8. Dynamic Programming- Although AtCoder is a site for CP, this particular DP contest is very exhaustive for interview preparation with regards to DP. This contest consists of 26 questions solving around 10–12 will be sufficient. Anything more than that won’t add up to your preparation as DP questions of such high difficulty won’t be asked in online rounds or interviews (ETA: 3–4 days).

END OF MONTH 2

By now you are expected to know everything except for Graph Theory, N-Ary Trees, and Trie. You are also expected to solve around 60–80 questions from the interview playlist and participated in at least 2 contests live and 2–3 contests virtually.

From now try to give 2–3 contest every week whether virtually or live. If using Leetcode you would either solve a question within 15–30 mins(medium or lower difficulty) or you were not familiar with that algorithm although the chance of that should decrease drastically. Try to solve at least 3 out of 4 questions from LeetCode contests, at least that should be your aim.

9. N-Ary Tree and Trie- Use the explore section that will be sufficient. Be familiar with implementation and usage although very rarely asked but gives you an edge if you are familiar with it.

10. Graph Theory- Techie Delight(refer to this article for an in-depth explanation). By now, you will able to choose questions useful for your learning by yourself. Graph-based questions do require some memorization of algorithms from your side for which I used the CSES CP Handbook. Graph Representation, SSSP(BF, Djistrka and Floyd Warshall), MST(Prim’s Algo), Topological Sort, and Graph Coloring are some of the theories from where the questions are usually asked hence don’t worry a lot about how to prepare for Graph Theory. In most cases knowing the knowing Graph Representation is sufficient for you to solve questions along with using brute force or hashmaps.

These are some of the questions from Leetcode which I did for Graph Theory. It usually went like reading the pseudo-code and then solving 1–2 questions around that concept just for awareness.

END OF MONTH 2.5

You are now the master of your world and proficient enough to set your own goals. Keep solving random questions every day, from different problem tags. You can even start attending contests from various CP sites although you wouldn’t be able to crack a lot of questions but will provide you with a fresh pool of problems.

END OF MONTH 3 (2 Weeks before the season)

Keep solving questions, participating in contests, and start practising logical questions. Also start revising subjects relevant for your technical interviews such as DBMS and OOP for CS students and OOP, DSA for non-CS students. Prepare for puzzles as well.

Playlists and Channels —

Youtube, has loads of resources when it comes to preparing for coding interviews. Some of the videos as well as playlist which I had used for my preparation are as follows-

Videos and Playlists-

  1. Introductory Data Structure Playlist by MyCodeSchool- If clueless, start with this playlist. Gives you a brief insight into the most crucial data structures. The concept covered in the playlist will be found in 80% of the books at least in my experience I never studied any data structure from any book.
  2. Graph Theory Algorithm by a Google Engineer- Although watching and practising all the questions from this video will be overkill for the coding interviews but watching the first 1.5 hrs will give you sufficient insight into graph theory required for internships.
  3. Algorithm Playlist by Hackerrank- Although this playlist is not exhaustive I used to refer to this playlist sometimes for some crucial algorithms.

The list for videos and playlists is never-ending I can suggest you more resources as such but that wouldn’t be useful for you. A lot of concepts you will learn while solving questions and will be required to search videos specifically for that concept. This is an exercise leaving to you viewers :)

Although, while searching for videos there are some channels whose videos I will prefer over solution provided by other channels. Youtube specifically has great tons of channels giving you top-notch advice exponentially better than me evening acting as a virtual mentor for you in the preparation season.

Channels-

  1. TECH DOSE- Explains the solutions for questions pictorially and by simulation as well. Has a large set of questions documented from Leetcode. Builds up the solution from the brute force level to the most optimum/feasible solution.
  2. Nick White- His most of the videos are in Java but gives an efficient and easy to understand solution for most of the questions. Has documented around 150 questions from Leetcode.
  3. Tushar Roy- The solutions for the questions on the difficult side of the spectrum can be found on his channel.
  4. CS Dojo- Although not a frequent uploader but he explains solutions to questions in a very straightforward and easy manner.

Finally, we come to more formal resources for our aristocratic audience.

Websites —

Well, there are only a few standards when it comes to websites that can be used for referring and learning purposes as those sites are pretty exhaustive for providing you with the knowledge to crack questions.

  1. GeeksForGeeks (your best buddy till the end of the season)
  2. TutorialsPoint (if you want more illustrative answers)
  3. Techie Delight (The resources provided in this Medium article will be sufficient for the graph theory)

Books for Reference —

Although, I am not a book person when it comes to preparing theory. Therefore, I have a very limited pool of books which I can suggest to you.

  1. Introduction to Algorithms (Eastern Economy Edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein- I had used this book in my initial stages to study things such as time complexity, Divide and Conquer, Sliding Window and Two Pointer.
  2. Competitive Programmer’s Handbook by Antti Laaksonen- Contains application for important concepts and focuses more on application rather than on building theory. With one shortcoming that it uses C++ as the primary language and not pseudocode. If planning to use this as a primary reference then Part I (excluding Segment Trees) and Part II( first 6 chapters only) will be more than sufficient.

Some Special Mentions-

Below is the list of videos and resources apart from those listed above and it is completely optional to refer to them. Some of them are alternative problem sets and some of them are motivational or guidance videos by already existing masters of the field of CP.

3.3 Aptitude, Technical and HR Interviews

JUST A SIDE NOTE, some companies also ask objective questions from programming languages(C, C++ and Java), theory questions(DBS, OS, OOP and Networking), general aptitude(logical reasoning and maths), essays and English language. Most of you won’t need to revise for the latter two but go through few GATE questions on aptitude and you would be good to go. Usually, the companies with fintech or quant oriented roles have a separate objective section but some technical companies also have a started asking objective questions apart from coding questions, just for tie-breaker or sometimes because they want to see the knowledge of an individual in a particular domain. I did not prepare for these sections explicitly till the end of Day-2 companies and I do regret that. Do take out some time from coding and start preparing for the objective sections as well. They will give you two advantages-

  1. You will be partially prepared for the technical theoretical aspects for the interview beforehand and you could focus more on your weakness and would even have time to through each testimony given in GFG archives in depth.
  2. Practising for these sections will improve your time in the objective section and give you more time for debugging the coding questions.

For me, cracking the interviews specifically was not that much of a bummer, but I know people who got shortlisted for 5–6 interviews and couldn’t clear most of them. Interviews in my personal opinion test your behavioural aspect more than your technical aspect. The interviewer looks for how well you communicate your thoughts and effectively you gel with them. It’s more like a date where you don’t have to weightlift the conversation as you are on the answering side of the conversation however bad and gloomy answers might lead to rejection. A perfect analogy!

Few things to keep in mind-

  1. Be vocal about your thoughts, keep a positive attitude and be a little forward. No one likes to talk to a person who’s silent majority of the time or never smiles or doesn’t add direction to a conversation.
  2. For coding questions being asked in a technical interview, if for some reason you are not able to solve the question. Don’t worry tell the brute force method to the interviewer and communicate the blocker you are facing, he might even give you a hint or even better the correct approach might strike you.
  3. The interviewer will give you chances to steer the conversation, don’t use that to brag about yourself but use it to talk about your strengths. You might have contributed one line to an open-source organisation but talking about that will bring your doom upon yourself. Rather talk about that 500 lines personal project you had made.
  4. Confidence is the key, it’s practically impossible to know everything the interviewer might ask you. Answer what you might know but if you don’t know something like not at all, don’t try to wrestle your mind around it. They have far more knowledge about things than you could ever imagine, they will grill you badly if they catch you fluking.
  5. Go through GFG Archives of the company, prepare theory from your core-CS subjects, go through puzzles, research about the company and revise important DSA problems (the ones which are standard for a concept). Not doing any of these things will be suicide for you. Also, given the time constraint of around 12–16 hrs for preparation, there are only limited resources from where you can prepare.
  6. Do prepare for the behavioural aspect, standard HR questions and general how-to guides on interviews. Preparation for the technical aspect is important but also keep this in mind that an hour or two should be invested for preparation of the behavioural aspect.

Resources —

The resources for interview and aptitude preparation are very limited in exhaustive because luckily there are only a set of questions which the interviewers ask from the aptitude and behavioural section. GFG archives also help in reducing the radius of the concepts and questions you might need to prepare for as most of the questions the interviewer ask are exactly word to word from archive or whose solution could be built upon from what you have read from archives. However, be prepared for a fresh set of questions to be asked by the interviewer in the technical section(it’s not a one-day preparation, it’s months of practising DSA questions and a week or two preparation for core CS theory).

  1. A Collection of Quant Riddles With Answers- A exhaustive collection of all the puzzles which could ever be asked in an interview. Just prepare all the puzzle given in the website and you are seriously good to go.
  2. C++ Guide for IT by Simple Snippets- Watch the last 15–20 videos from the playlist and you would have covered important aspects of OOP in C++.
  3. GFG Archives- Probably open this tab always in your web-browser. If clueless on how to prepare for an interview just refer to the archives of your company you are interviewing for and solve all the questions from related testimony on the archives.
  4. A must-watch video- A very helpful video preparing you for the behavioural part. Very exhaustive video explaining all the perspectives of an interview.
  5. Clément Mihailescu- An ex-google employee. His content is mainly centred around coding interviews. In addition to this, he also conducts mock interviews on his channel. Very helpful for understanding behavioural aspects in a technical interview.
  6. Rachit Jain- Well, he’s a good motivator. Gives you some behavioural insights into coding interviews.

4. My Personal Take

This has been a very long blog and I feel very lethargic as well. Till now we have covered all the resources and preparation required. In this section, I am going to give my insight into the whole process of preparation and selection. Talking about the problems one face and common mistakes people do. This section is entirely my take on the whole process and you are free to leave now if your sole motive was getting the resources required for preparation. Preparation for coding interview is a very lethargic and mentally demanding process. Not only you are on a race against time to complete your preparation which honestly speaking is never enough as the questions are never-ending as there is no exhaustive pool from which questions are asked but you also are required to work on your academics to not flunk it entirely and also prepare for interviews apart from questions you are practising for the online round which might have a common intersection but still a wide range of topics are to be covered.

During the season, one day you will be solving DSA questions for online round and the next day you will studying OOP, DBS and OS for the interview and other days you will be preparing for aptitude based questions for fintech oriented roles. A large domain of topics are to be covered and the chances of getting into a company are also statistically slim. It’s a mentally exhausting process and no one is going to deny that and hence it’s important to have realistic expectations. Preparing well in advanced is the most logical step you can do why to start at three months from the season? Taking the case for my college, after CGPA and resume shortlisting on an average 150–200 people were eligible for online round out of which 10–50 people used to get shortlisted (15–20 on an average, 30+ if the company has opened positions in multiple roles) for the interview. From which 2–15 people (5–7 on an average)receive an offer. So yeah, luck does play a prominent role but that’s only after you get shortlisted. As you can see the chance of you clearing an interview is higher than chances of you clearing the online round, which shows that the barrier of entry to an interview is pretty high which finally implies that there’s a significantly steep bell curve being formed. Since you all are familiar with the grading system in colleges, you know that steep bell curve is formed when the courses are tough and no one luckily scores high in a tough paper. Therefore, we have established the fact that clearing online rounds is determined by your practice, hard work and experience so start practising.

Now when it comes to interviews, as I have said earlier luck does play a prominent role in it. As what the interviewer is going to ask, how comfortable is the environment in which you are answering the questions and does your resume or branch or projects align with their job description(not a necessity, but a plus)? If you have cleared the online-round that means you have worked hard enough and you the master of the self when it comes finding resources, preparation of technical aspects. Be confident that you are going to nail the technical part and your focus should be improving your behavioural aspects. Watch mock coding interviews if you haven’t, try to use healthy coding practices while solving the question(it determines how good of a contributor you could be), do a little research on the company and try to ask questions related to the company (will score you some brownie points, makes you look interested in eyes of interviewer). Never try to fool the HR/ Manager, do prepare for answers in advanced but never act over-smart your answers should be 50% honest, 25% in favour of the company and 25% in favour of your strengths(this will drive your conversation). Below is the list of FAQs which I will try to answers.

4.1 Frequently Asked Questions

1. I will study the theory for DSA for a month, memorise all the algorithms and then will start my question-solving spree. Is that a good approach?

A very rookie mistake, never take this path as it will only add months to your preparation rather than subtracting it. Coding and mathematics are very similar and require active learning. Either you wouldn’t be able to learn all the algorithms by heart in a month time, or you will give up on DSA being overwhelmed by the concepts, or even worse you wouldn’t be able to solve a single question when you start solving. The easiest way of solving the problems is solving problems, if you get stuck refer to the solution. If you are not familiar with the approach used in the solution refer to a few videos, material for the concepts used in the solution and then solve more question related to that concept. For example, I couldn’t solve questions related to heaps when I was on the verge of finishing BST. I watched a few videos on heaps, and then solved a few questions on heaps and within 2–3 days, I was familiar with ins and outs of using heaps. In fact, for graph theory never had I sat for more than 10–15 mins for studying the related theory. ALWAYS FOLLOW THE 5% RULE.

2. My resume is filled with big projects like I had even cleared GSoC and several big hackathons. I don’t need to prepare that much for DSA or theory, my interviewer is going to grind me on my projects and shortlist based on my project. I just need to clear online round, the interview will be smooth sailing for me. Right?

WRONG, let me tell you one thing, I had done a lot of projects whose userbase was around 4000–5000 users(a very large number for a college developer). I had even extensively worked in a startup making the backend for them solely developing it from scratch. What difference did it make to me? A question less on DSA(2 instead of 3) and was instead asked about projects. That’s the only difference it makes. If you seriously think that projects are going to give you leverage and do you away with preparation for technical aspects you are dead wrong. The projects are going to give you an edge only if you answer all the technical questions correctly. The most they can give to you is smile on the interviewer’s face or 10–15 mins of conversation about your project out of a total time of 60 mins of the technical round. Having projects do help in highly specialised roles but until asked about your projects you are no different than an individual with no projects in the eyes of the interviewer.

3. I have completed all the questions from Interviewbit and Leetcode. Now can I watch my incomplete Netflix series?

No, sorry you can’t. Never did I said that the list of questions is exhaustive. A question was asked in Flipkart coding round which required us to use Graphs as well as DP which is a very rare concept in the coding round. Continuing giving contests and focus on reducing your time in coming to a solution. Also start solving tougher questions from Codeforces, Codechef or any other CP site. Preparation for an online round is never exhaustive, you are required to always solve questions to keep things in your recent memory. Taking a break will only result in you performing poor in actual tests.

4. My friend only prepared for 1 month and still got into Uber. We have the same CGPA, same branch (both non-CS) and the same projects. Why can’t I solve questions even after 2 months into the preparation?

IQ plays an important role in your learning curve. I had a very gradual learning curve when it comes to preparation. You should prepare according to the approach that suits your mind. Preparing 6 months before isn’t a shameful act, a lot of people like me are not good at coming up with new patterns, but are good and fast in using an existing already known pattern. I knew that my chances of solving an entirely new type of question are very low and hence I solved as many questions as I could. There is not a limited amount of questions but there is a limited amount of concepts. After a few months into the preparation, you would become familiar with 90% of the concepts and you should start focusing on analysing those concepts and patterns hidden in a question. The latter aspect is what improves your chances in cracking the online round. Hence, I said learning concepts is only going to increase your time and diminish your morale because you are not familiar with the questions. Sometimes, people being exceptionally good in maths and reasoning transcends their skills in preparation as well and therefore they are bound to get an edge over you. Ultimately the finish line is the same for everyone and if you reach the line in stipulated time that’s good enough.

5. I am doing CP for years and I will get shortlisted. Ohh no, I did not get shortlisted I am sad and depressed. Is it all my fault?

No, it's not your fault. Luck plays an important role in these scenarios and sometimes the odds are not in your favour. Just stay consistent. Also, keep this attitude before giving a paper. If you haven’t got shortlisted in any company you are as good as an individual who has 1 day of experience in CP. Keep giving your best, and one day you might strike a lucky chord. Watch this video by Veritasium, where he talks about how impactful factor of luck actually is statistically. Never stand on a pedestal and never feel worthless about yourself. I personally felt very mentally exhausted rejection after rejection and I started not caring about the process at all, I solved questions because that was something which I liked doing and in the end, being normal and not hyped up while solving questions was what made me shortlisted. Some people get into super Saiyan zone when they are hyped up and some get into that zone when they are at the lowest level of giving a f***. Don’t associate too much of your identity with clearing the rounds that will actually damage your worth. Just like you, everyone has an equal chance of securing the interviews and struggle becomes a norm, try to accept that rather than getting rid of it.

6. Does branch and CGPA play an important role?

Even though I will talk about this in my next and last section in-depth but with increasing supply as well as demand in IT roles the people who get shortlisted for interviews perform equally well. So now the recruiters have two options in hand either choose people based on CGPA or the ones who are from CSE and related branches. Refer to the next section for more detail. Scoring above a cutoff is was always important but getting having a higher CGPA has also started becoming an important factor. But don’t get disheartened I got a hack for everyone. Refer to the next section for more info.

4.2 What the future holds?

My super seniors used to tell us that preparing for 2–3 months for internships will be more than sufficient as a lot of people don’t take internship opportunities seriously but internships do increase the chances of you getting a PPO rather than getting into a company through placement interview. The companies have started preferring those who got into a role by securing an internship over those who are directly being interviewed for placement. Our college had better stats for internships in fact not being affected by COVID at all but our placement process did take a hit. However, this is one side of the coin. People are trying to get into IT roles more than ever before because of the low barrier of entry (3–4 months of practising DSA, OOP will get you into a company, but in electronics that is my core branch I have seen people practising and perfecting their concepts for over a period of 1–1.5 years just to get a job in ET). Core jobs are more difficult to be secured now and only those who are highly enthusiastic about their branch are only able to secure one. If you are one of the people rooting for a job in your core branch I have mad respect for you because people like you are rare, being primarily passionate about engineering. I will say that give in at least 3 or more months, preferably 6 months for the preparation and by the time your season arrives you will have 70% of people already being familiar with DSA and maybe 20–30% people would have been doing CP for 6–8 months.

Why would you miss this opportunity? Probably you won’t, if I tell you 6 months you will prepare a year before. Another thing is that we had an orientation by a few seniors who had secured internships the year before. Do you know what they said? Get 2+ questions out of 3 in the online round and your chances of clearing are high, get 2.5+ questions right out of 3 you will definitely get shortlisted. Well, that’s also fading away. I have known people who had solved the whole paper completely with 90% questions right and still didn’t get shortlisted for interview, due to their branch or their CGPA. Microsoft took those who solved all the questions it used to be 2.5 till last year and Microsoft has one of the easiest online rounds. Adobe only shortlisted those who nailed both objective and coding questions and objective was aimed for the research roles. I personally in my Citrix paper had done 2 out of 2 questions with only 1 one test case failing in the last question. Competition has started becoming fierce now and you all should start gearing up now.

See there are three types of paper in online tests. Either they are easy and they expect more than required people to solve the whole paper completely where branch and then CGPA plays an important role for the eligible people. Either the paper is moderate or tough and those who have done significant or more than the average number of questions in DSA will be able to crack it. In those cases branch and CGPA fades out because the pool of people getting shortlisted is very small. In those cases, the interviewer will actually test your knowledge and check how good of a fit you are in the company. That was how my Citrix interview was. On the other hand, Oracle had an easy paper I along with other 54 people had been shortlisted but they did not choose me because of an easy paper where the pool of people is so large that they will have no harm in choosing only CS peeps. Therefore, a hack for non-CS students keep your CGPA high irrespective of the cutoff, you have to prepare almost every type and difficulty of question no matter whatever be the condition.

Internship and Placement seasons are very exhausting processes and I myself was got an offer from the last company of Day 2. If you are honest with your preparation and grinding every day one day your lucky chord will surely strike. Don’t get disheartened if you don’t get shortlisted as any knowledge is a piece of good knowledge and you are getting an edge anyhow if not from the 100 people sitting in internships than the other 100 who are sitting for placements. If you had stayed till now, I really appreciate your interest in my blog. I will close this long blog by the following quote-

It’s not that I’m so smart, it’s just that I stay with problems longer. — Albert Einstein

--

--

Sample Thoughts

My English is very poor but I write as it fortifies my illusion of social validation.