Bill gates once said, “To win big, you sometimes have to take big risks”.
This quote is truly inspirational, and reminds me of my placement preparation days. I have appeared for several interviews for tech companies until now, and have devised the D.R.O.P strategy based on my experience to help candidates streamline a placement/internship preparation strategy. I will also be providing relevant resources in the article.
So what does the D.R.O.P stand for?
The D.R.O.P basically lists down the areas on which a candidate should work upon, before appearing for an online test or an interview for a technical job profile.
1. Data Structures and Algorithms:
This would be the most important area that any candidate must work upon thoroughly. The choice of coding language doesn’t matter. People, more commonly use C++, meanwhile some candidates also use Java or Python.
Even though I use Java, I would recommend beginners to start learning in C++, since this would help them answer questions which are related to Pointers in interviews as well. Also, I have come across some online coding tests in which the compile times were not optimised for Java.
The topics that one should work upon are Arrays and Strings, Binary Search, Bit manipulation, 2 pointer, Linked List, Stacks and Queues, Hashing, Backtracking, Heaps (Priority Queue), Trees, Dynamic Programming, Greedy Algorithm, and Graphs.
For beginners: I would highly recommend beginners to start learning to code using some course. A paid offline course helps as it puts a time constraints on the learner, and ensures that you get comfortable with coding when you practise regularly, however you can go for a free online course.
1) You can check out this Youtube Channel for learning the coding basics.
2) GeeksforGeeks is one of the websites that offers great content from basics to advanced topics.
3) You can also checkout Hackerrank which have good content for beginners.
If you are someone who is aware of the basic data structures and algorithms, and you wish to prepare for the interviews by solving good quality problems, I would recommend the following approach.
- Preparing a Question Bank
GeeksforGeeks offers an exhaustive set of problems which are well categorised on topics, but since you need to prepare in a limited time, I would recommend you to prepare a questions set from it. You must be wondering why is this needed. One of the problems which I faced during preparation was that, I used to solve more problems on topics which I got more comfortable in as compared to the ones which were harder (and certainly more important). So sticking to a question set will make sure you solve questions from each of the topics. You can randomly pick questions (say 20 from each topic), copy-paste their URLs in a file (or a spreadsheet to track progress), and solve them initially to make sure you have atleast some confidence in each of the topics.
- MAKE NOTES FOR NEW PROBLEM
Making notes for coding problems sure sounds a bit strange (Its just logic at the end of the day), but I can’t emphasise how much this helped me gain confidence in the interviews. I used a notebook, and noted each of the problems that I found to be tricky along with the basic logic (For example, use 2 pointer). I used to make really tiny notes, which made the revision easier for me a day or two before the interview. Also, you can divide the questions based on topics.
How does this help? I think if the question bank is sufficiently big, this really helps to gain confidence just before the interview day (you can imagine you will have a lot more to do at that time). Also it’s not about mugging up the solutions, but more about how you will be able to figure out and use the same approaches on a new problem you will see in a test or an interview.
- Timed practise is a must
It’s important that you learn to solve problems within a time constraint, since every interview and every test will be timed. Also, I believe it becomes much harder to think in such an environment.
- Using websites like InterviewBit and Leetcode
Both of these websites have questions which are divided into the related topics, and also gives you experience in using an online IDE, in a timed environment. These websites are highly recommended.
I used InterviewBit for my placement preparation. It has limited number of good quality questions from different topics, and also mentions the companies in which these questions were asked. The test cases are strong, and you get to learn the skill of checking for boundary conditions and interesting test cases before submitting the solution.
The number of questions on Leetcode however is quite a lot. These are divided on the level of difficulty as well as the topics. Leetcode is recommended by Google for Google Interviews also. So if you have plenty of time, then you must go for it.
You must try out the solution to a problem first on a paper/whiteboard before starting to code. Sometimes the question is wrongly interpreted by the candidate in an online round, and trying it out on a paper reduces the possibility of you coding the wrong solution. Also, most companies including Microsoft ask the candidates to code the solution on a paper after the initial online rounds.
When preparing for interviews in a limited time, don’t spend hours on questions, instead keep a timer for yourself and read the solution once you have given it a thought thoroughly. You can then note it down, and come back to it later when revising the newly learned concepts.
I think the companies have started asking more questions from topics like Dynamic Programming and Graphs as opposed to trees and linked lists which were asked more commonly before. So make sure you give special attention to these topics.
In an interview, when a question is given to you, think of the most basic approach irrespective of its complexity and gradually try to optimise it. Also, you can ask the interviewer for some hints, or some time to think of the solution approach.
2. Database Systems
SQL Queries: The most commonly asked questions in database systems are related to SQL Queries. Here are some of the resources :
1. You can find good books here.
2. Checkout the youtube playlist.
3. If you prefer to read articles and learn, you can try this website.
Other important topics are ER Model, Functional dependencies, Normalisation, Indexing, Transactions and concurrency, and Recovery.
You can checkout this Youtube Channel called KnowledgeGate for good explanation of these concepts, or visit GeeksforGeeks (also checkout the commonly asked DBMS Interview questions here).
You can just revise the concepts some days before the interview by watching the videos on the channel mentioned on 2x.
A strong resume with interesting projects/internships/positions of responsibility/achievements serve as a good talking point in an interview. I would recommend you to follow the format as prescribed by your college in case of an on-campus placement drive.
Some tips for resume: size should be a single page, follow a chronological order while writing about projects/experience, highlight the important keywords (like the technical skills used for a certain project), check spellings.
You can do some research on the company profile, and highlight/add the work you have done related to it.
Note: Try to create a timeline in your mind, so you can talk the interviewer through your resume. Try and answer these three questions about each project/POR in your resume —
1. Idea of project/nature of work?
2. Challenges you faced in the project/work.
3. Steps taken and learnings from the project/position.
4. Object Oriented Programming Concepts
OOPs concepts are important for an online test (with MCQs) as well as from an interview perspective. Various online tests have output related questions based on OOP, which are usually tricky and can only be solved if you have strong concepts. Interviewers often ask candidates to explain the OOPs concepts in a particular problem statement given.
Cool Story: An interviewer once asked one of my friends to explain OOPs concepts to his 5 year old son on call.
5. Operating System
Some of the most commonly asked topics in OS are related to deadlocks, semaphores, synchronisation, and paging.
1. You can find good single-page articles on GeeksforGeeks for fast reads.
2. KnowledgeGate youtube channel also has good videos on OS concepts which will help in clarification of concepts.
As mentioned above, projects serve as a good talking point in an interview. Projects also serve as a great way of learning a new skill.
Common question I get is how to get the projects.
1. Think of a problem statement around you and try to build something around it — However some problem statements are too common to build product for and won’t impress the interviewer (say, an attendance system). Also, it’s not always possible to think of a problem statement right away which you can target.
2. Participate in Hackathons — Hackathons are a great way in which you can ideate on a specific problem statements in a team, and develop a project within a specified time. It may not be a full fledged project, but can be extended on later to look good on the resume. You can find online/offline hackathons on Hackerearth.
3. Look for internships and freelance work — You can also look for internships in companies depending upon your skill level. It wouldn’t matter if they are even unpaid, since working on a live project would boost your skill and it would also make a good talking point in an interview. Some startups in their initial stages would be happy to hire a developer who isn’t as skilled.
Don’t try to fake projects on the resume. Mention a project in your resume about which you can talk about. Try answering questions like: How it was ideated? What problem statement it aims to solve? What was the motivation behind the project? The challenges you faced? The tech stack used? Why the use of one stack over the other preferred?
This isn’t something as important and you can practise this in your free time. Again, mugging up puzzles sound lame, but still helps. You get an idea of the approaches you can use to solve some other puzzle. If you don’t have time to prepare puzzles, then you can possible figure out the solution in the interview itself with the help of hints. You can find many puzzles along with their solutions here.
How to manage time within the D.R.O.P?
The illustration gives a rough idea on how you can manage time on the different subjects. This is based on my experience, however different interviewers and different companies can have different priorities. Some companies with Operations job profile also ask subjects like Computer Architecture.
Remember that clearing the online round which mostly consists of coding questions (or maybe some MCQs) will land you the opportunity to appear in front of the interviewer and present your resume and projects.
Requesting Feedback: This is my first article on Medium, and it would be great if you could provide some feedback on it by commenting or connecting with me on Linkedin here.