Technical skills expected
DSA >> OOP ~~ DBS > OS
- InterviewBit is comprehensive and highly structured. It exhaustively covers DSA topics and has different solution approaches for problems. It also covers sections for System Design, Puzzles, DBS, etc.
- GeeksForGeeks has a long list of interview experience rounds.
- GeeksForGeeks and TutorialsPoint are useful for OOP, DBMS, and OS topics.
Preparing your resume
Interviewers will skim through your resume to understand your skills. Focus on points which showcase your technical skills (eg: coding projects, past internships, TAships). Extra curricular activities (clubs, sports, etc) don’t matter.
Don’t sugar coat; write things as they are. It's okay to have a small resume. Most companies don’t care about it, unless they have a resume shortlisting round.
Coding rounds are 2 - 3 hours long, and typically have 2 - 3 DSA questions. In addition to the DSA questions,
- AppDynamics had DBMS, aptitude, and OOP questions.
- Goldman Sachs had aptitude and analytical questions.
- Arcesium had aptitude questions.
During my year, companies held their coding rounds on,
- HackerRank for Uber, D.E. Shaw, Arcesium and Goldman Sachs
- Cocubes for Microsoft and Samsung
* Cocubes supports only C, C++ and Java. Other platforms supported most languages.
Usually, solving 2 out of 3 questions can get you through the coding round, but it depends on the difficulty of questions. Coding rounds can be hectic. We had 4 coding rounds together on day-1, with no breaks.
Typically, interviews start off with a brief discussion about what you've done, followed by technical questions.
While solving a question, keep the interviewer in sync with your approach. Don’t overdo such that it hinders your thinking. For a DSA heavy question, state the time and space complexity of your solution(s). Then proceed to find a better solution, and prove why(and when) is it a better solution.
Practicing for interviews is important, but not something that people usually do. A good way is to request someone who has appeared for interviews to take mock interviews and share feedback. Conversing in front of a mirror is also helpful.
Some obvious guidelines,
- Never lie in the interview (in life as well xD).
- Don’t clarify your mistakes. Improvise, Accept, Overcome.
- Don’t ask questions like “What does your company do?”. You're expected to know the answer.
- Don’t be in a hurry to answer. You might get questions which require 10+ minutes to solve; the interviewer knows that and does not expect an immediate response.
- While waiting for your interview, ask other candidates what questions were asked. You can expect a similar pattern of questions.
- Interviewers appreciate if you are able to drive different solution approaches yourself while solving the question.
Interview rounds can go till ~3 AM (starting afternoon), and you might not be able to step out in between. Have some food supplies with you. Keep your phone charged.
I gave coding rounds for 6 companies; Uber, D.E. Shaw, Microsoft, Arcesium, AppDynamics, Goldman Sachs. I got selected for the interviews with in Microsoft, Arcesium and AppDynamics.
- Round 1: 16 students were called. My interview started with a discussion of my GSoC project, past internship and research project. This interview focused on DBMS - questions like ACID properties and their applications, advantages of different methods of indexing, etc were discussed, similar to round 2 of this interview. Other students were also asked on one of the three topics, DBMS, DSA or OOP.
- Round 2: 8 students were called. My interview again started off with a discussion of my projects. This round was focused on OOP. My interviewer had my response (rough) sheet from the previous interview and picked up an example discussed in Round 1 to ask OOP related questions. We ended up covering all the topics from the OOP course at BITS.
- Round 3: 4 students were called. This round was more of an aptitude / HR round. There were standard puzzles and UX designing problems.
- Round 4: 4 students were called. This round had 1 DSA question - using DP and greedy algorithms to solve the problem. A System Design question was also asked - applying LRU cache to design a text editor. I reached the optimal solution for the DSA problem only after 3 iterations. I was hurriedly trying to share my approach before covering all the edge cases, and the interviewer seemed disappointed.
- Result: 2 students were selected, I wasn’t in them.
- Round 1: It started with a discussion of my semester project and GSoC. We went onto work on a DSA + OOP question for designing classes for trees to optimize for different kinds of operations. It was followed by a math puzzle.
- Round 2: 1 DSA question was asked on Dynamic Programming.
- Result: 2 students were selected, I wasn’t in them.
- GSoC and Semester Project was discussed in all three rounds. All of them had 1 DSA question, which had to be written on paper in C, with the correct syntax.
- Round 1: It was a simple question on matrix manipulation. Further questions involving variations of time and space complexity were built over it.
- Round 2: The question to finding longest path in a tree. My algorithm was correct, but I was unable to write an error free code on paper. We went through two dry runs and my code hit bugs in both of them.
- Round 3: The question was to design a generic method to convert buffer data stored in blocks of size X into blocks of size Y with varying scenarios based on time and memory constraints.
- Result: 12 students were selected, I was in them.
1. Does GPA matter ?
- Yes. Most companies have a GPA cutoff of 7 for appearing in their recruitment drive. A few may have 7.5 or 8. Resume shortlisting rounds if any, primarily judge you on your GPA and projects. Once you're called for interviews, your GPA usually acts just as a tie-breaker.
2. Does my majoring branch matter ?
- Yes. Some companies allow only circuit branches to sit for their tests. IT Companies usually prefer students majoring in Computer Science.
3. I didn't get an Internship in the on-campus drive. What should I do ?
- Make a list of the IT companies where you would like to apply. Follow the career pages of these companies to look for openings. Look for alums or your connections working there, and request for a referral. It would increase your chances of getting called for an interview.