The CS Interview Process (and how to prepare)
Hey there techie! looks like you want to know more about CS interviews, so let's just jump straight into it:
You'll find this blog divided into four sections:
Feel free to jump around to whichever section is most relevant to you.
1. Process
Many companies have their own style of conducting the interviews, but you can find certain steps common in most of them, majority of the big tech companies will have the following rounds :
- An online coding round
- A group round
- Personal interview round ( technical & HR )
So let's break each round down and see it in detail:
Online coding round
This round is a pure technical round, testing your problem solving ability and depth of CS concepts, the most important aspect to focus on here would be obtaining an efficient solution which requires you to have a good understanding of various basic data structures (stacks, queues, graphs,trees), algorithms and the ability to implement the same in a programming language.
Why do I need to know data structures and algorithms you might ask, well having a good understanding of it will help you immediately map the problem to a specific domain and give you a starting point to solve, it will also help you immensely when it comes to optimizing the solution in terms of time taken or space required (Time and Space complexity).
When armed with data structures and algorithms, solving a problem breaks down into unwinding it in different methods and seeing which is the better approach. Practicing it online would help a lot because it will give some experience on possible methods for "unwinding the problem". You can leverage competitive coding questions for the same.
Ps: Good tech companies don't usually restrict your choice of programming language but depending on the role you have applied for, you might be asked to know a specific language.
Group round
Once you're through the coding round/s, we get into the non-virtual process, (where you have a copy of your resume with you, go to an allotted area and have an interview with "real" people) the first step usually is a group interview... Let me give you a company's perspective on this: They might not want to hire everyone at present. Usually the reason being "limited business needs" or in plain language: lesser openings than the number of people present. So what would be the quickest way (Hey how about a death match!...ummm no...jk) So what they end up doing is try to pick the best of the best, which is usually done by means of: Giving everyone a level playground (same coding question, same topic to discuss, or something along these lines) and see how each person does the task. This round usually checks the communication skills and if it's about coding, then again, your understanding level and problem solving capabilities along with your abilities to communicate the solution.
Individual round
Once you have gone through the above 2 rounds, there is usually an individual interview, where an individual or a panel from the company interviews you. In a technical round they (again) give you a problem and see how you solve it, the only difference that they might ask you to “think out loud” or state what you're doing at every step, to understand how you're plowing through the problem. They might not necessarily ask you to execute the solution but they would expect you to manually run through some of the cases they give. They might also ask you for some optimization if they see that there is room for improvement. This stage is not as scary as most people think because you can directly ask the interviewer for clarification when needed or the interviewer might as well give some hints on solving the overall problem and see how you pick them up and use it. The HR round usually has to do with the HR of the company asking questions to check your fit in the company culture, I am no expert in this domain and so will leave it to books like "Cracking the coding interview" to explain it to you.
Once you get here, they will let you know whether you will be given an opportunity to work in their company or not
2. Resources
Book recommendations:
- Cracking the coding Interview : Everything you need to know about "How to tackle/solve a problem", "Why is the interview process the way it is", etc are answered. Even if you don't read the algorithms from this book, I highly recommend going through the first section of this book (The overview of HR and the mindset with which they ask questions.)
- CLRS algorithms: A rigorous book for an In-depth understanding of algorithms.
Websites for learning and practicing :
- Leet Code
- HackerRank
- HackerEarth ( the learning section here acts as a beautiful place to have a quick overview pre-interview or as a crash-course.)
- Geeks for Geeks summary notes
Other Resources:
- You can always participate in Online coding competitions to get that time bound experience of online coding rounds.
- There is always YouTube to learn too!
(will update this resource list over time...)
3. Mindset
Prep Work
Its better to sweat on the practice grounds than to bleed on the battle field. ~A quote from a Roman warrior.
Wake up everyday with a "I will hone my coding skills" mindset. Practice ATLEAST 2 problems per day, (by practice I mean, try to get the solution by yourself, without looking it up or asking anyone) Maybe after spending 4+ hrs on a question, if you still don't get it, only then look into the solution. ( trust me there will be such times) If you did solve it yourself, make sure to read the posted solution, which in most cases will be better optimized in some way or another.
My personal suggestion would be to learn and understand the algorithms and practice the same in the above platforms. If you are not able to answer a certain type of question, step back and revisit the concepts again.
Along with the coding practice understand the interview process , Research about the company and its products (more about this later)
Pre-Interview
"I am prepared", this should be your mantra, it will ease your nerves and help you stay calm and confident. Revise a few concepts if time permits. Mentally revise the points you wanted to focus on, be it might programming language, the body language, communication approach, etc. If it is a virtual process make sure to keep your environment as distraction free as possible and make sure no interruptions happen during the interview.
Interview time
The coding round goes as usual, you see the question, answer it and before you know it the round is over. What I am about to tell you applies to other parts of the interview.
- For the overall non-virtual part of the interview, your body language and indirect communication will definitely play a weighted role, Be aware of this throughout the interview ( Because at the end of the day they want a professional to help take the company and their products further :) )
- If you need clarity on something, make sure you ask.
- Take your time to think and answer the question. Don't be nervous about asking interviewer for more time to solve something, in most cases you will definitely get it.
- After the interview feel free to ask for feedback, you'll definitely receive some great tips/pointers.
4. Personal Thoughts and experience
Cracking the coding interview
My personal recommendation would be to read the first few chapters of "Cracking the coding interview" and use the rest of the book (the parts with algorithms and data structures) as a syllabus book or for revision and practice coding the same in the above mentioned platforms.
To choose or not to choose
Why I think you should not apply to all companies and apply ONLY to those where your goals align. (i.e. you think the company is a good fit for you.)
I have seen many who apply to all the companies they can get their hands on (because bro, what if I don't get...), but I would say thats the wrong mindset. Let me put it this way. When you don't feel strongly about a company but still choose to apply for it (for a multitude of reasons) you might not give it your best shot, leading to rejection (Which you might think won't bother you as you didn't resonate with the company in the first place) But here's the thing, we are all humans and such rejections will definitely affect us subconsciously and might even impact your next interview.
Research about the company
Here's the logic behind why you should research about the company: Knowing about the company will help you know what you are getting into, at this stage you might have questions regarding the company or its products, which you can clarify during the Individual or personal rounds of the interview or ask when they say "Do you have any questions". You can also have an edge in the interview by knowing the tech stack of the company/the role and better preparing for the same.
Some other thoughts
And in case you don’t get the opportunity, analyse the whole process and see what went wrong and keep that in mind when you apply again/elsewhere.
On D-day be confident and be yourself.
Hope it was helpful to you, Thank you for reading. And as always until the next post, Happy learning y’all !
