Acing Amazon Web Services (AWS) : Placement Diaries
Every year hundreds of students enter the magnificent NIT Rourkela premises with an ambition of getting placed in tech giants with lucrative packages, after the sore grail of four or five years. NIT Rourkela unveils numerous opportunities before the students, providing them with the means, resources and guidance to hone their skills and successfully step into the professional world.
While fueling their dream with rigorous preparation and unending perseverance, three students from NIT Rourkela bagged a prestigious offer in Amazon Web Services (AWS) through an on-campus opportunity this year. Team Monday Morning brings to you the placement journey of Shubham Bishoi (M.Tech, Department of Computer Science), A Astha Varma (Dual Degree, Department of Computer Science) and Krishnu Binod Pradhan (Dual Degree, Department of Electronics and Communication) as they unravel their preparation strategies and interview experiences to offer the students an in-depth insight into the entire process.
Screening Procedure: There were three rounds in which the candidates have to appear. The first round was of an Online Test(OT). There were two technical rounds post-OT of 45 minutes each.
A Astha Varma (Dual Degree, Department of Computer Science):
Coding is really important to cross the initial stages of any interview process, especially product-based companies. Hence its worth spending time on building the foundations strong.
Quality is more important than quantity. I used to solve 5 easy, 10 medium and 4-5 hard problems to get an idea of data structures initially after reading about it.
Tracking progress is crucial. I decided not to spend more than 3 days on any single topic.
For every problem solved, I used to find the time and space complexity, and check if it can be done better.
I used to give more importance to solving medium problems than hard problems at the beginning, Idea is to solve problems of difficulty easy in 10-12 minutes, medium in 20-25 minutes, hard in 35-40 minutes.
For gaining pace and finishing within a time limit, I used to participate in CodeChef contests.
Initially, I started with practicing on paper and then moved to typing solutions in docs because the mode of the interview changed from offline to online. So, the idea is to try to think in a verbose mode. Practice the approach by typing in docs. Try and explain that solution out loud as if you are explaining it to the interviewer.
Taking mock interviews is highly recommended. It’s a good way to check your thought process for the solution as you try and explain to the proxy interviewer.
Solve company-specific questions 3 days prior to that company’s online tests.
GeeksForGeeks (articles, company-specific questions, placement stories).
LeetCode (go for Leetcode Premium, trust me it’s worth the time & money).
HackerEarth (articles for DS/ALGO)
CodeChef (contests to time yourself)
Book: Cracking the Coding Interview by Gayle Laakmann McDowell.
Youtube videos (Leetcode’s solution explanation - Tech Dose, Nick White, Back to Back SWE)
For System design standard problems - random Youtube videos
For me, getting the idea of an optimised solution in a time-constrained environment was a huge challenge. I used to panic initially and was not able to solve such questions in OT. These were the same problems that I could easily solve without any timer. Well, participating in contests that are time-framed helped me improve upon this aspect. Another challenge was getting all the edge cases right. This needed me to revisit the problem statement again and again, leading to wasting a lot of time. I think that solving problems in Leetcode and going through solutions/approaches of other people gradually improved my thinking process.
OT round had 2 coding questions - easy and medium. I was able to solve them in the first 20 minutes. Then, there were MCQs on CS subjects, mostly Data-Structures, Algorithms and Operating System.
1st Technical Round - I was asked 2 coding questions, and questions on Network Security because my specialization is in Information Security. I was also asked questions about my projects, concerned with implementational details.
2nd Technical Round - There was one System Design question. Focus is on how you explain your approach and give a better-optimised solution, what data structure you used and why. Then there were interesting questions about my projects that I had worked on. Here, I was expected to give technically reasonable answers.
The final year project is important. It acts as a preliminary validation of your technical skills and knowledge. An innovative project or a published research paper surely increases the chances of getting selected.
MESSAGE TO THE ASPIRANTS
Learn all standard problems in the algorithm paradigm.
Do company-specific questions before appearing for OT and interviews.
Practice coding in pen-paper format if there is an offline mode of interview, else in Google Docs.
Stay confident on the day of the interview. Explain your approach confidently, mention time-space complexity.
The journey of preparation is long. So, always motivate yourself to be the best version of yourself.
Krishnu Binod Pradhan (Dual Degree, Department of Electronics and Communication):
One should pick any one language between C++ and Java and master it. I learnt about various STL libraries that are commonly used in solving problems on Online Judges. I learnt basic Data structures and Algorithms from HackerEarth (Codemonk) and solved 5-8 problems from every new topic that I studied.
I solved a large number of problems (from CodeChef, HackerEarth, CodeForces) for about 3 semesters. I also took a number of contests but my ratings never seemed to rise. But doing it improved my problem solving and implementation skills a lot. I also learnt where to use different STL containers and algorithms by looking at the solutions written by other people.
When I had 6-7 months left for placement season, I started doing interview problems from LeetCode. I made a list of 300+ LeetCode problems of various topics previously asked in Microsoft/ Amazon/ Google interviews and started solving them one by one. I used to look at the editorial after briefly brainstorming a problem and write down the approach/trick used to solve that problem in a notebook.
For CS fundamentals like OOP and Operating Systems, I studied from GeeksForGeeks. Preparing these subjects requires very little time and effort.
Meanwhile, I also spent some time building projects. I was not sure what I liked, so I tried my hands at a lot of things. I learnt Machine Learning (Keras/TF), Web Development(Nodejs/ Expressjs/ React JS and later Python-Django) and also Mobile Applications (Flutter).
Since I was from the EC branch, initially I thought I would pursue a career in IoT or Embedded Systems in the future, but later, I realised that I had no interest in any subjects of electronics. I couldn’t perform well in any theory classes or labs. A point came where I studied curriculum subjects only to pass semesters.
In Dec 2019, I decided to apply for GSoC. So I started going through codebases of some organisations’ projects built with React and Angular. I even started contributing to one of the projects and also talked with the project mentors. In the last week of Jan 2020, OnePlus arrived for an on-campus internship opportunity. I applied for it, prepared DSA and Deep Learning concepts for a week and cleared the OT without much difficulty. A week later, I was asked very simple algorithm problems in interview rounds, which I solved with ease and was given the summer internship offer along with two other students. Since I got an on-campus internship, I dropped the plan for GSoC. Later, lockdown happened and my internship didn’t happen because they didn’t want to conduct work-from-home internship and it was postponed to whenever the lockdown ended. So, I had no internship in the summer.
The OT round for AWS had 2 coding questions and 20 MCQs from various topics like DSA, OS, OOPs and Computer Networks to be solved in 90 mins. The coding questions were like easy/ medium problems from LeetCode. Anyone who had done decent practice in coding problems could easily solve them. I think whoever solved more than one coding questions in OT was shortlisted for interview rounds.
The two interview rounds were exactly similar in format. Both of them were technical interviews with 2 coding questions in each and then a 20-25 minute discussion on projects and CS fundamentals. The first 5 minutes in each interview was an introduction about self and the technical things one was skilled at. The only difference was that the coding questions in the 1st round were a bit easier than those in the 2nd. In the 2nd round, there was even an OOP design based question. These questions were however easier than the Amazon SDE interview experiences listed on GeeksForGeeks. I was asked about my projects in depth: which frameworks/ networks architectures I used and why, and what could have been better. I had two Deep Learning projects, my final year project was based on Deep Learning and I had done one full-stack web development project as well. Both the interviewers seemed to be only interested in the deep learning projects.
MESSAGE TO THE ASPIRANTS
Getting placed in large product-based companies requires good problem solving skills, in-depth understanding of Data Structures and Algorithms and working knowledge of CS fundamental subjects like OOPs, OS and Computer Networks.
Get into competitive programming as early as you can. It’s certainly not necessary for interviews, but it can boost your problem solving skills greatly which makes the DSA preparation journey much better. Remember the approach used to solve a problem and implement it in the code yourself. Mugging up the code never works.
Topics like Trees, DFS, DP are based on recursion. These are the most popular topics for interviews. People find these topics hard because they don’t know recursion properly. Solve similar types of problems together. This works well when you’re learning DP. Most of the DP problems are slight variations of one of the 5-6 standard problems. Make sure you satisfy the eligibility criteria to appear for companies. It feels really bad when you are skilled enough and prepared for any kind of interview but you can’t even take the OT because of the eligibility criteria.
Shubham Bishnoi (M.Tech, Department of Computer Science):
I followed and would suggest Leetcode's interview preparation set and "Cracking the Coding Interview" by Gayle Lackmaan Macdowell. Other than questions, this book also provides great insights into the interview process. Aptitude and verbal is very important and are asked in every OT. You must be able to solve any coding question that they ask you to. You don't have to run it in the interview but you should be able to give a pseudocode and explain it.
Basic knowledge of subjects is important. One can go on the internet and search for top interview questions for the topic. You will get multiple links, go through each of them thoroughly. One site may miss some concepts but collectively you will be able to cover all the main questions. One should be able to explain every single thing written in the resume. One must also prepare specifically for the company and the role.
MESSAGE TO THE ASPIRANTS
Prepare for all common HR questions. Try to practice for any possible interview scenario, preferably with a friend by doing mock interviews. Try to score well in your semester exams to clear the cutoff for any company.
It will be hard and at times, you may feel frustrated but just remember that each failure teaches you something. Improve from your mistakes and keep on moving forward. Sooner or later, you will succeed.
With the hope that their advice and guidance would assist the students to enhance their placement preparation, Team Monday Morning congratulates all the three achievers for their success and wishes them the very best for their future endeavours.