General interview process for Computer Science new grads
I am master's student at NC State. I had interviewed with multiple companies for Software Developer and Site Reliability Engineer roles. My professional experience in US comprises of a summer full time internship at a startup named Aporeto and part time internship of 7 months at IBM. Probably I will be working for AWS when some of you are reading this article. This article is intended to help minor group of CS grads to help them in their internship and full time interview process.
Resources that helped me
As far as all the interview process I have heard and seen would comprise of the any of below 4 types of rounds
- Behavioral
- Technical
- Coding
- Design
- System Design
- Object Oriented Design
-
Behavioral -> These are general HR questions. Their importance in interviews vary from company to company. For example Amazon has greater focus on 14 leadership principles. Sample Questions
- Why this company? My Ans - My answer would be I am looking to work at a place where there is a strong innovation and global impact. Company XYZ has been leader in PQR field for quiet long time and there has been a lot of innovation here. Due to its wide global spread each contribution has an impact on wide userbase.
- 3 things that you will be looking for in your next work ? My Ans - Great learning curve, challenging role solving real world problems, where I can express my ideas and participate in design
- Strengths and weakness
This and most of the behavioral questions should have a references to personal experiences, thinking and interests. Make sure to spend some time in advance, definetly rewarding. Be prepared to answer followup questions, from my experience I feel big companies like Amazon, LinkedIn, Apple, Twitter, Uber attached a great importance to these kind of questions.
-
Technical -> This generally is asked to check your breadth and depth in a technology. Heavily focused for few roles like SRE, DevOps engineers. Look for overlapping technologies for the role and your resume and focus on them if you have an interview soon.
Example questions
- Scenario of Java pass by reference - most voted answer of question
- How to handle errors in Asynchronous programming?
- How DNS IP resolutions works?
There are lot of questions which would reveal your depth of knowledge on a technology.
Here are few example blogs which helped me.
-
NodeJS
https://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js
https://codeburst.io/the-only-nodejs-introduction-youll-ever-need-d969a47ef219
https://stackoverflow.com/questions/5062614/how-to-decide-when-to-use-node-js -
SRE interview
https://blog.balthazar-rouberol.com/preparing-the-sre-interview
https://syedali.net/engineer-interview-questions/
-
Coding ->
-
Cracking the coding interview
I feel this is the initial point for any programmer, this book covers almost everything needed for the technical interview.
-
Leetcode
From my experience I personally feel, it is better to solve leetcode by topics. For example, pick stack and solve all the questions later pick other topic such as trees or linkedlist etc. Further, in each topic there would be few models, once you identify the idea of a problem you should be good enough to identify the idea and solve it for similar problem. For example solving daily temperatures gives you idea of how to use increasing or decreasing stack, using the same idea you can solve largest rectangle in histogram, next greater element and many more. Even though you were able to solve the problem, I suggest go to discussions and spend some time analysing other alternative solutions and better time and space complexity
There is no good number in solving the leetcode questions, my friends were able to cracked Google by solving 150, 200, 300. It depends on how many unique Idea problems you were able to solve and how good are you in applying the ideas to the new problems you encounter.
-
-
Design ->
-
System Design
Ultimate Guide - https://github.com/donnemartin/system-design-primer
Few links
https://gist.github.com/vasanthk/485d1c25737e8e72759f
https://www.interviewbit.com/courses/system-design/
https://github.com/yangshun/tech-interview-handbook/tree/master/design
https://github.com/shashank88/system_designMany companies would have a system design rounds besides coding rounds when you interview for full time positions. I have seen Vmware, LinkedIn, Apple, Goldman Sachs given bit priority to system design from my experience.
-
Object Oriented Design
I had this from Cracking the coding interview and I felt it is good enough. Follow the 5 steps mentioned in the book and solve few questions from the book.
Less popular in interviews compared to system design and coding. From my experience Amazon, IBM had these in their interview process.
-
Few more things that helped me,
To get a better overview of the interview experience, I would suggest give some mock interviews in Leetcode, pramp or interviewbit whicever you feel comfortable.
Always good to ask the recruiter, or previous interviewees the type of interviews for the role. Which help you focus and narrow down your areas of preperation.
These are just my 2 cents of interview process from technical dimension of me and my peer experience. Be prepared to get some surprise technical rounds.