So, what do you get asked at the software engineering interviews? There are several common interview types. Let's learn about them here.
In the coding interviews, you typically get one or two algorithmic problems that you need to solve in about 45 to 60 minutes. You also need to code your solution in the programming language of your choice and discuss your solution with the interviewer.
For software engineers, coding interviews usually take the majority of the interview process and are by far the most important. A good performance here is the deciding factor for getting hired.
Behavioural interviews take a look at your personality and work related history, and consider things like how you work in a team or how you handled challenging work situations in the past.
At these interviews you may get asked questions like "What was the most challenging project you worked on and why?" or "What was your biggest failure during the time at the company X?". Also, the interviewer may go through your resume and ask very detailed questions about your work experience and past projects.
Behavioural interview can be a separate round of interviews, but it's also common to be asked similar questions during the coding or other interview rounds. For example, you may be asked to "briefly describe your previous experience", or just to "introduce yourself".
At the system design interviews, you are usually given a very big and vague design problem like "Design Twitter from scratch", and you need to share your approach in about 45 minutes. There is no single correct answer, and the purpose of these interviews is to test your experience working with the real software systems, and how much you know about these systems in general.
You usually don't code much during these rounds, but instead show your design and considerations on the whiteboard, and discuss your approach with the interviewer.
System design rounds are more common for the senior and more experienced candidates, while interns and new grads usually don't have them. But it's still important for everybody to keep them in mind.
Interview types described above should cover most of the cases, but sometimes there may be something different. For example, some companies ask you to complete a test project or participate in an online coding competition.
While it's impossible to anticipate all the possibilities, preparing for the interview types listed here should be enough most of the time. And it will also help in other possible scenarios. You should also research the company you are applying to to see how their interview goes.
If you don't know anybody with the interview experience, look for the online communities where you can ask this, or simply search for the interview experience videos on YouTube – there is a lot of material online.