Hi Folks, glad to see you here! In this doc, I'll share the study material which I used to prepare for my campus placements. I'll try to cover as many aspects and I hope this will help all the students prepare for their first full-time job (either through Campus Placements or Applying Off-Campus). If you are planning to apply for a job in the coming years, this doc will help you, and if you have gone through that phase, I request you to contribute; this will help our juniors. Please note that in this doc, I have shared the study material. I have shared the non-academic strategies here: My Campus Placement Experience and my Strategies where I have talked about some niche techniques that I used to prepare for my exams. Let me know how you feel about it and if you have any comments/suggestions, please reach out to me at: go4pratham0897@gmail.com
As of December 2020, I am a final year undergraduate student at the Department of Chemical Engineering, IIT Roorkee. I'm a Software Developer, and my areas of interest are Security, Cloud, and the Internet of Foods. I have offers from Oracle, Cisco, and Amazon, and I have decided to move forward with Oracle. I have worked at Cisco in Silicon Valley for one year under the Cisco International Internship Programme. Before that, I went for an internship in Cloud Computing at IIT Kharagpur. Like my friends, I wasn't sure of building a career in software right from the start of my college, and I started off exploring Chemical Engineering (Industry and Research). I have published a research paper in Bioenergy. I was invited to present my work at the International Conference (fully funded :p). Later I explored Interdisciplinary Research and gradually shifted to Software Development, and that's when my journey started (~ at the end of my second year). CSec takes up most of my free time. If you are into security, we'll vibe :p.
It starts around September/October. The first few weeks are for Resume building and Verification. This typically involves gathering all the certificates and documents about the achievements that a student wants to display in his/her resume. I personally believe IITR has a strict verification process and a student has to prove everything except his name, branch, year, and cgpa. After this, companies start visiting the campus and organize a Pre-Placement Talk (PPT). After the PPT, they organize tests/competitions depending upon the job profile they are offering. These competitions could range from group discussions to guestimates to submitting assignments. These things i.e.the PPTs and the tests for different companies happen in parallel and could happen at any point in time in a day. Some of my friends who applied in international positions had to attend PPTs even after midnight, and sometimes as early as 4 AM. The same happens with the tests as well. This happens for months (typically till mid-December). Meanwhile, after the second week of November, companies start to announce the list of students who have made through the tests and are shortlisted for interviews. They also announce the waitlisted students, but all the interviews happen together starting December 1st at midnight, with the exceptions of the PSUs (these may happen any day earlier). Interviews happen in slots, and each slot has multiple companies, and their interviews happen in parallel. A student can have two interviews at the same time, but he has to manage it by himself, the placements team is quite supportive in this as well. Before every interview slot, each student has to fill in the priority form for the companies interviewing in a particular slot in case a student gets multiple offers from the same slot. Once a student gets an offer, he has to accept it and he is out of the placement session.
No doubt, getting a decent job in the software will requre good problem-solving coding skills, but that's not enough. There are some qualities like teamwork, leadership, communication skills, among others, which are also crucial. While these are critical skills, I believe there are more skills, and they are very important, Patience and Persistence. Students must not get over-excited if they perform great in some contests/exams and they should be consistent enough all throughout. Sometimes, the best coders might not make it to them. This could be due to many reasons; maybe they couldn't make it in the aptitude round or lacked soft skills. Aptitude plays a key role in some of the companies. Also, the placement process usually takes about 4 months in most of the colleges, patience is very important as it helps in persisted improvement. One big challenge students face is that they do not follow a proper structure; rather, they rely on random blogs, videos for their preparation. Even I have faced this issue. To help the next generation, I will try to put down all the useful resources in this repo, which I found very useful while preparing for my campus placements. Since I prepared for softeware roles, all the details presented in this doc are inclined towards preparing for software roles.
Also I have talked about my preparation strategies here: My Campus Placement Experience and my Strategies. In this blog, I tried to share as many minute details as I can. I hope you find it useful; pls give this repo a star if it deserves :p All the best.
Here's a broad breakdown that I feel are required for successful preparation for placements. I'll discuss each section in detail later:
- Communication skills -> how you speak in the interview
- Presentation skills -> how you explain your previous work
- General Aptitude -> aptitude tests and your approach in interview
- Coding skills -> the way you code
- Data structure and Algorithm -> Most Important
- Object Oriented Programming (OOPs) -> Important, typically asked in coding interviews
- Operating Systems -> asked in 20% tests and in 30% interviews
- Database Management Systems -> asked in 20% tests and in 30% interviews
- Computer Networks -> asked in 10% tests and in 20% interviews
- Basic Unix Commands -> asked in less than 5% tests and in interviews
- Basic System Design -> OPTIONAL
One key thing I would like to emphasize here is that having a good understanding of Data Dtructures and Algorithms is very important but may not be sufficient for some companies like Uber, Codenation, Alphonse among others. These companies also look for your coding style, which I'll disucss later in this doc.
Use these links to build a classic and an attractive Resume:
- Resume Secrets: YT Coding Ninjas
- Prepare Projects for Resume: YT Coding Ninjas
- How to Write a Resume: Socratia YT
- Employment Skills This will give idea about the skills you might want to add in your Resume.
Before you actually start working on your coding skills, I'd recommend going through this playlist. Most of the videos in this series are generic and could be skipped
- Jenny's Placement Series
- YT: take U forward He has good placement Series.
It includes a video series about English and communication skills. Companies usually skip communication test in tier 1 and tier 2 colleges of India. Ignore this section if you have a good hold of English.
The following video points out the importance of the speaing skills in job interviews:
The following links will help increase hold on general aptitude. Some of the software companies and almost all the banks require these skills. If you are targeting software companies, I'd recommend practicing aptitude for few hours once every week, and that's more than enough. Practicing Aptitude will give you an edge over others and it helps in Coding Contests as well.
- Quantitative Aptitude tricks YT
- AKAgarwalAptitude YT series for Aptitude
- IndiaBix: For practice Practice here for atleast an hour per week.
Decide a particular language you would like to work on. Keep following points in mind while you decide:
- Most of the students use c++ and if you go with c++, you can actively discuss with your peers and share codes when you practice.
- It has STL library which includes all the data structures you would be using in your contests
- STL library in c++ is optimized and you have to worry less about the time complexity of those operations
- Python is relatively slow and there are more chances of getting a Time Limit Exceed (TLE) error as compared to c++
- Python is simple, straighforward and less strict than c++. You don't have to worry about the data types and overflows while working in python. However, you might have to keep track of multiple ibraries for different data structures
- Python is used extensively for Data Analysis, so learning python might give you an edge there
While, there might of tonns of arguments, I personnaly believe c++ is a better option for Competitive Programming (CP). It have similarities with multiple languages like Java, JS, microprocessor programming( Arduino). Also, if a student is comfortable with a language, it is very easy to get hold of another.
Once, you have decided to go with a particular language, the following link will guide on how to setup an environment. While, there are a lot of online IDE for practice, I'd recommend using one locally (I prefer VSCode as it has many Add-Ons) and save your code snippets.
- Tutorial Point Will guide you through the basic of the language
- Cpp: VSCode
- Cpp: CodingBlocks
- Python
- Java
- Online compiler: Ideone
Since, I used cpp, here are some of the links that will help you train DSA in cpp. Also, I've added a link to my template which I used to use as a base to any problem I used to solve. It has pre-defined macros and basic functions that are used in most of the problems, so it can be used to save time.
- C++ STL: YT Bo Qian -> Short Videos on STL
- STL- 1: topcoder -> blog
- STL -2: topcoder -> blog
- C++ Tricks: YT
- Pratham's Template: To Be Added
Other Links (Optional)
- YT: cpp Nuts: Topic wise videos
- YT: Fit Coder This channel is new, but he explains nicely
This is the Most Important section and is a must do for every programmers, as it opens up the various insights about programming. Below are some of the links that I used as reference during my preparations. These are the most important Data Structures to be studied:
- Arrays
- Strings
- Linked Lists
- Stacks and Queues
- Trees
- Heaps
- Recursion
- Hashing
- Graph
- Greedy
- Dynamic Programming
- Divide and Conquer
- Backtracking
- Bit Magic
Competitive Programming (CP) is all about practice. You learn a lot when you practice. here are some links you coud use for theory, but ultimately what matters is your practice. I'll try to point out the specific topics that I referenced, as going through everything would unnecessarily suck up time.
- Data Structures and Algorithms: YT mycodeschool Must Watch. All his playlists are great.
- Data Structure tutorial Read as you practice.
- YT: TechDose This guys explains the concepts and problem solutions beautifully. I have watched almost all of his videos.
- YT: Aditya Verma Go through his DP playlist, he explains in Hindi but approach is nice. He relates the problems with one another.
- Tushor roy His DP playlist is good, but sometimes he doesn't explain the logic properly. His DP playlist has a set of important problems. I would recommend having a clear understanding of all those problems. If these videos aren't clear to you, try researching the internet.
- GFG The Bible of CP. Read the articles now and then whenever you have time.
- Abdul Bari: Concepts and Algos Nice Explanation, but he doesn't provides code. Refer him, if you want to get an understanding of an algorithm
- Graphs: Hackerearth Skip the last three topics
- Algorithm Tutorials and Practice: hackerearth
- Code N Code YT This channel is good for learning Graph Theory
- CodeChef: Learn Data Structures and Algorithms
- DSA: YT Coding By Fun This is a new YT channel and has explains properly
- Inverse Modulo This is an important topic and is usually asked in highly competitive companies like Uber, Alphonso, etc
- Coding Blocks: YT
- YT: Errichto: He explains great. Refer him if you want in depth understanding of a topic
- Advance Ds and Algo This link has some advance algos. I rarely used this link. Refer only if you are really interested and have time
- Youtube:Terrible Whiteboard, for leetcode problems Leetcode problems solution. Refer this if you are stuck at a particular LC problem or if you couldn't understand the logic properly
- How can I be good at graph theory based programming problems in competitive programming
- Graphs: Hackerearth Skip the last three topics. If the topics like articulation point is still not clear, refer YT channel techdose.
- Graph Theory Overview: YT Code NCode
- Doscjoint Set: YT Code NCode Important Topic, used invarious graph theory algorithms
- Visual Algo This website visually explains the graph theory
The following are some important Graph Theory Problems which should not be confused to be same - Hamiltonian Path
- Eulerian Path directed graph
- Eulerian Path undirected
- Eulerian Path & Circuit undirected
Competitive Programming is all about practice. The more you practice, more better you are at it. Here are some of the material which I used to practice during my prepration:
- InterviewBit Very Very Important. Complete the course in a span of about 2-3 months. I'd recommend going through the course once again after you've completed all the sections. While solving problems, try to give some time and solve by yourself. If you take more than 30 minutes and could not reach to the solution, read the discussion panel or access hints. Most of the problems are important and you might find it hard to solve it in the first attempt, don't let yourself down. There are some hard problems, and remember you don;t have to by-heart all the problems, try to understand the logic.
- GFG Must Do Very Important. Start solving these problems once you have completed the interviewbit ptoblems
- 60 must solve problems for placements Important practice Problems
- GFG Practice Practice here everyday, once you have a good hold of your DSA concepts.
- Code Monk HackerEarth Practice here if you find practicing on GFG monotonous.
- Online Platform to Practice- hackerearth try to solve some problems topicwise if you are not confident in a particular topic
- Online Platform to Practice- codechef try to solve some problems topicwise if you are not confident in a particular topic
Typically asked in Interviews, but one of the most important important topics:
- Operating Systems Playlist: YT Ravula
- OS for Programming Interview: YT SauravSchool Good for Revision
- Practice MCQs: Foxoyo
- Hand written notes (pdf)
- DBMS Playlist: YT Ravula
- SQL Interview Questions: YT kudvenkat
- DBMS Interview Questions: YT Wikitechy News
- DBMS/SQL interview questions and concepts: YT Interviewbit
- SQL Commands: Interviewbit
- SQL DB vs NoSQL DB Important
- SQL: W3Schools Read it for theory
- SQL: GradeUp Notes
Not every Company will ask question on this. Skip this part if ou are running out of time. However for networking comanies like Cisco, studying this is a must. There's a very famous question when it comes to networking:
What happens when you typr in a URL in you browser and press enter. Tak about the protocols used as you go along?
Some links to study Computer Networks:
- Youtube: Neso Academy
- GateSmasher: YT Go through the playlist, you can skip last few videos if things get complex
- GradeUp Notes
- Top Interview Questions
- GFG Commonly Asked Networking Questions
- Practice MCQs 1
- Practice MCQs 2
This section would highlight the essentials that are required for interviews. The best time to go through these links is about 1 month before the actual interviews (November if you're from an IIT, because interviews starts in December). This should be done in parllel to your current preparations and as the interview approaches, put in more time to it. Most if the material will seems to be already covered and could be seen as revision:
- Must do Coding Interview for Companies
- Top 20 DP interview questions
- Programming Interview Questions: YT IDeserve
- Interview Tips and Tricks: Coding Ninjas
- Interview Experience: Coding Ninjas
- Interview Problems: YT Coding By Fun
- Mock Interviews Series: YT Coding Ninjas
- GFG Practice for Coding Interview
- Get started for Technical Interviews
- Interview Mistakes-1
- Behavioural Interview Questions
- Common Mistakes in Technical Onsite Interviews
- Fight Imposter Syndrome Very Important
- YT Jenny's: Job Interview MISTAKES everyone makes
The following links have solutions to some of the standard problems of the websites like IB, Leetcode, HackerRank, HackerEarth. Refer these links if you find yourself stuck to a problem and could not find its solution. Also refere this, if you would like to get an alternative approach to the problem:
- LeetCode-Topicwise-Solutions
- IB Solutions 1
- InterviewBit-Topicwise-Solutions
- IB Solutions 2
- Hackerearth Problem Solutions
- Problem-Solving-Solutions This has solutions to problems of Leetcode, HackerEarth, Codeforces, Light Oj, SPOJ, e-Olymp.
- HackerRank Solutions
- Jenny's YT
- Link-6
Since, I have done internships in Cloud, I studied this as part of preparation for my interviews. While this may not be required for all the students, but the following video highlights the latest development techonologies, which could be a great point to discuss in your interviews. However, the student has to find a spot on where to bring up these points as the interviewer may not bring it up by himself:
- Dev-Prod Parity
- Openstack
- Openstack 2
- Kumulus YT Channel
- Tom Gregory: YT: Scaling Dev Productivity
- Cloud Security
Study this only if ou have done an intership or have worked on a project in data science:
Study this only if you have previous work experience in such field:
- System Design Primer
- Capacity Estimation Problem Such Questions are rarely asked
- System Design: YT Gaurav sen His system Design playlist is nice. But it is rarely asked in the coding tests and interviews
- Do's and Dont's of system design interview Such Questions are rarely asked in campus placements. Study this only if you have previous internship experience in a related field
If you have been through the campus placements phase, and if you've got something to contribute to this page, feel free to reah out to me or submit a merge request
If you're a junior, wish you luck for your placements.
Remember: In a Competitive Situation, Game Theory can tell you how to be smart
Once again, help me spread the words!!
Be smart and happy new year :)