Preparing for a technical interview

Preparing for a technical interview

Any interview requires preparation and refresher knowledge. In this article, we describe the main topics that need to be repeated regardless of your technology stack. This checklist is more useful when interviewing a large company like Microsoft, Amazon, Google. But this knowledge will not be superfluous for you and "ordinary" companies.

Let's get down to how to prepare for a tech interview and what topics to review:

Warm-up with classic problems:

giphy.gif

Algorithms and data structures

algo.gif

Before moving on to the video about data structures and algorithms, consider solving these problems below. Their solution will help you know what to focus on when watching videos by algorithms.

Data structures

ds.png

Algorithms

Now, if you do not interview at Microsoft, Amazon, Google, etc, then most likely you will not be asked about algorithms. As for me, it is not necessary to know them by heart, but it is worth having a general idea about each of them.

alg.gif

"O" is large and "o" is small

omg.gif

In simple terms: Big O describes the complexity of your code using algebraic terms. That is, in this way you can determine the speed of the algorithm.

Dynamic programming

travelling_salesman_problem.png

Dynamic programming is a method for solving a problem by dividing it into several identical subtasks, recurrently related to each other. The very first example that comes to mind is Fibonacci numbers. To calculate some number in this sequence, we need to first calculate the third number by adding the first two, then the fourth in the same way based on the second and third, and so on.

- Dynamic Programming (Think Like a Programmer) - Algorithms: Memoization and Dynamic Programming - Dynamic Programming I: Fibonacci, Shortest Paths - Dynamic Programming II: Text Justification, Blackjack - Dynamic Programming 

String manipulation

Problematic questions that may arise during an interview:

Spaces after study

prob.jpg

Now that you've learned a lot and watched a few videos, let's tighten up a few more gaps and solve the problems:

Systems design

marvel-editorial-graphic.png

System design issues are important questions that are often asked at positions above the middle. You must be able to think big as a programmer. how to deploy a particular service, what servers do you need, how would you manage traffic, and so on. All these ideas show that you know how to develop, design, and deploy projects, and not just code what you are told.

OS

Questions about the operating system are a little less common now in interviews, probably only when you develop drivers. But to have a general understanding of concepts such as threads, scheduling, memory, etc. is necessary.

Design patterns

pt2.jpg

Pattern questions are very common in interviews. Here are some preparation materials:

SQL

sql.jpg

SQL puzzles

SQL video

HMxE4eGQ4.jpg

### This will also help you in the case of .NET