Interview Process Landscape in Tech Companies
Tags: beginners, career, interview, motivation
Published: 2022-10-28 21:57:56

## TLDR;
This document Explains how the process of interviewing in different levels of companies (Big Tech, Medium, Start up) looks like. We need to understand what is the current landscape of the interview process in Tech companies to better prepare for them. In this article we will detail every step you will encounter and how it is done in reality.

## Interview Process Landscape in Big Tech Companies

### Step 1: CV Screening

In big tech companies, usually you will find a high usage of AI based programs to do the screening process. These AI programs, will usually select a handful of candidates that much a handful of criteria. Then the recommended CVs will be screened again by hiring managers and tech recruiters. Thus, the CV screening process usually contains multiple layers of evaluation.
Tech recruiters, often find these AI based screening programs are flawless. They can get easily confused by fancy words, or something else. So, it is still very much important to involve a human being in the screening process.
This is the second round screening. After all this process, the CVs are usually sent to the interview managers, who will call the top candidates and get them to the interviews.
From here, the questions in the interview will be the final major step in order to make or break the hiring process.
This is a general workflow. The way different companies work is different from each other, even though there are a lot of similarities.
### Step 2: Coding Assignment

In this step, Candidates are presented with a set of 2 problems that they need to fix in a constrained time. The problems are generally complex and revolve around Algorithms and Data structures. Companies want to evaluate how good are candidates at taking an existing piece of code, identify the issues with it, and come up with a solution. Candidates should be able to: Understand the problem, break the larger problem into smaller and more manageable chunks, choose the appropriate data structure to handle and store data, analyze the running time of different algorithms and pick the most optimum one.
You should be good at solving at least 2 problems in the time constraint. Candidates who clear this step get promoted to the next level. In addition to this, candidates are judged on the efficiency with which they solved the code. Hence, candidates need to solve the problems in the most optimal, clear and efficient way.
### Step 3: Live Coding Interview

In this step, you are usually presented with a problem that reflects your job description. This challenge will assess multiple aspects of your programming knowledge and will include live coding, which means that you need to get the solution worked out on your screen in front of a panel of people. It is essential that you remember that the company wants to see how good you are at working in a team and how confident you are about the language you know. 
- Front End Developers:
	- You will usually be presented with an in house challenge using the front end framework of their choice. Keep in mind that this isn't about how long it takes you to complete the challenge, but how clean and efficient your code is. The live coding part will also include JS frameworks and patterns like MVC, MV*. They may also ask you to build a mock-up of a page based on their UI standards.
	- You will be presented with something that looks most likely like [this](https://codesandbox.io/s/wwebquiz-btnfls) 

- Back End Developers: 
	- You will usually be presented with a problem that is based on web development, database and network programming. The challenge will assess multiple things. How well are you able to solve a problem? How can you write clean, maintainable and efficient code? In this problem, you will be faced with creating APIs and connecting them to databases. You will be expected to write a program that can work with big datasets and how you go about doing it. You will be expected to come up with code that will be scalable and extensible.

### Step 4: On site Interview

The onsite technical interview is unlike any other job interview: it’s a specialized, rigorous process that tests your coding skills, problem-solving abilities, and personality. You have to _prove_ that you have the skills required to do the job, rather than just tell the interviewers that you have them.
An onsite interview happens in person, at the company’s office or virtually. The onsite usually consists of 2–6 individual, one-on-one technical interviews (usually in a small conference room). Each interview will be about an hour and have the same basic form as a phone screen—technical questions, book ended by some chitchat at the beginning and a chance for you to ask questions at the end.
If a technical phone interview is a sprint, an onsite is a marathon. The day can get really long. Best to keep it open—don’t make other plans for the afternoon or evening.
The onsite interview will usually encompass all of these different software engineering principles:
- System design Interview: In this interview, you will be asked to design a software application. You will be trying to architect the different parts of the requirements defined by the interviewer.
- Class Design Interview: In this interview, you will be given a class, and then asked multiple questions on it. The requirements will start increasing along the way, you will have to design a class that follows SOLID engineering principles.
- Coding Interview: In this interview, everything will be revolved around your problem-solving capabilities. You will be given a prompt where you need to write an algorithm that will test how you approach the problem. In fact, you have to show all your work along the way, be as concise as possible. This interview's theme is usually Data Structure and algorithms.

## Interview Landscape in Small to medium Companies

### Step 1: **Call with a recruiter/HR**

After you send in your application, usually someone from the HR department will get in touch with you after a few days if they think your profile suits the role. If you applied through a recruiter, then the recruiter might be the one letting you know. This round consists of general, non-technical questions about your background, motivation and experience, and your salary expectations.

### Step 2: **Call or meeting with tech team**

This step might or might not happen depending on the company. The call with the HR is sometimes followed by a call or an on-site meeting with someone from the tech team. This is an opportunity for you to get to know them and for them to get to know you to make sure you are a good fit for each other. They will usually ask you more details about your technical and non-technical skills and previous experience, and you have the chance to ask for more details about the tasks and responsibilities that the role entails. Although the technical questions are important, do not underestimate the importance of non-technical questions, such as those about your motivation and soft skills.

### Step 3: **Coding test or take-home coding assignment**

The next round usually involves you solving a coding test or a coding assignment. Coding tests are either held **online** on a platform, such as **Hackerrank**, **DevSkiller** or **Codility** where you have to solve a set of problems on the platform within a given time, or **live** where you are given one or more problems in person or via a video call and have to solve it while the interviewer reviews your solution simultaneously. Succeeding in coding tests needs practice and some understanding of the common patterns underlying the questions.

## Conclusion
You may encounter various interview formats in your software engineer interviews (from early to late stage):

### 1. Quiz

Frequency: Occasional

Quizzes are meant to be a first-pass filter as a quick and dirty way of weeding out extremely weak (or even non-technical) candidates. They are structured questions and have clear-cut answers, which makes them possible to be administered by recruiters/non-technical folks or automated graders. They are typically done early in the process.
Examples:
-   What is 4 & 5 (in binary)? Answer: 4
-   What is the time complexity of bubble sort? Answer: O(n2)

### 2. Online coding assessment

Frequency: Frequent

Like quizzes, online coding assessments are more frequently given early in the process. An algorithm problem is given with well-formed input and output, and candidates are expected to write code in an online coding interface to solve the problem. [HackerRank](https://www.hackerrank.com/) is a very common platform for conducting online coding assessments. LeetCode would be a good way to practice for the problem-solving aspects of online coding assessments.

### 3. Take home assignment

Frequency: Rare

There have been numerous debates on whether asking algorithm questions are a good way of assessing individual abilities as they aren't exactly the most relevant skills needed on a day-to-day basis at a job. Take home assignment is a format designed to address the shortcomings of the algorithm interview by getting candidates to work on larger projects which allow them to demonstrate software design skills.
However, this interview format takes up more time from both the candidates and the company and hence it is not as commonly seen in large companies where they have a high volume of candidates. This format is more common among startups and small companies. Examples
-   Build a flights listing app
-   Build a kanban app
-   Build a snake game

### 4. Phone screen interviews

Frequency: Common

Phone interviews are the most common format and every candidate will face this at least once while interviewing. You will be asked to speak with an interviewer either over a phone call or VoIP (BlueJeans/Skype/Google Hangout). A question will be given to you and you will work on that question using an online collaborative editor (CoderPad/CodePen/Google Docs).
You are usually not allowed to execute the code even if the editor supports execution. So don't rely on that for verifying the correctness of your solution. Formats would differ slightly depending on the roles you are applying to. Many companies like to use [CoderPad](https://coderpad.io/) for collaborative code editing. CoderPad supports running of the program, so it is possible that you will be asked to fix your code such that it can be run. For front end interviews, many companies like to use [CodePen](https://codepen.io/), or [CodeSandbox](https://codesandbox.io/), and it will be worth your time to familiarize yourself with the user interfaces of such web-based coding environments.

### 5. Onsite

Frequency: Always(Big Tech), Rare(Small to Medium)

If you have made it to this stage, congratulations! This is usually the final stage before an offer decision. Candidates who made it to the onsite stage will be required to have an in-person interview at the office. If you are an overseas candidate, companies might even fly you in and pay for your accommodations!
The onsite stage usually consists of multiple rounds (coding, system design, behavioral) and is expected to last for a few hours. Since you are onsite, it is possible that you will be asked to do a whiteboard exercise with an interviewer, usually either solving an algorithm question or a system design question. It is also possible that you have to bring your own laptop and work on a project/solve a coding problem on the spot.
For onsite interviews at smaller (non-public) companies, most will allow (and prefer) that you use your own laptop. Hence it is important that you prepare your development environment in advance.