Learn DSA and System Design.
[1] In this article we will learn what exactly an interviewer trying to find out in a technical interview.
Read the updated version of this article here:
Problem Solving:
The only intent of an interviewr in tech companies is to solve a problem!
Problem solving strategy in computer science is equivalent to Algorithm design strategy. and an algorithm is the method to solve a computational problem.
The intention of an interviewer is to see how well you can design an algorithm and that needs to be correct, and efficient.
First Part
They expact us to design a correct and efficient algo to solve a given problem.
Second Part
They ask us to implement that algorithm as a program.
To gether they tests three things: problem solving skills, coding skills and fundamental knowledge of computer science and engineering principles.
What are Data Structure and Algorithms?
These are two parts together form a foundation of Programming - One is Data Structure and second is Algoritm.
Data Structure:
A data structure is simply a way of organizing data. In any function or program where we have to deal with data, we need to store that data in a way that we can use it efficiently. So, Data Structure and Algorithms are the foundation of programming.
Algorithm:
The process that then does something with the data to produce the output we are looking for.
Programming:
Programming is simpy about getting in some data, doing something with that data and getting something out from that data or producing something out from that data.
Coding:
Coding is the process of writing up some lines of code to get the job done. Again Programming is knowing how to write these lines of code in an intelligent and efficient way that produces algorithm that are correct, fast and efficient.
Below arrow connection showing how these concepts relate:
Data Structure -> Algorithm -> Programming -> Coding
“Programming: Efficiently combining data structures and algorithms through coding to solve problems”
Algorithm Design
Algorithm design is so crucial and to know which data structure is available and which one to use in which situation. Because certain data structures are more efficient for certain operations than others. That is why data structure and algorithm is really the foundation of programming and that is why they are so important.
Strategy:
Don’t try to memorize or learn the maths and theory side of DSA — that is not necessary. Instead understand the high level foundation and methods to solve the problems. Going too deep into the theory is the waste of time.
The best way is to learn about the foundation of topic and then do a lot of practice. Practice means start solving problems, and start with small problems then move to large problems. Example how heaps and graphs are used in real world problems and how they can be implemented in code.
[Topic 1] Learn Practice, Learn Practice, and Learn Practcice…
[Topic 2] Learn Practice, Learn Practice, and Learn Practcice…
[Topic 3] Learn Practice, Learn Practice, and Learn Practcice…
[…….]
[…….]
List of Data Structure and Algorithm topics that can be tested in technical interview:
Big O Notation
Big O Notation is the language for analyzing algorithms and data structures.
To answer the question of when an algorithm is fast or slow, we use Big O Notation. It provides a framework to discuss the efficiency of an algorithm in terms of its execution time as the input size grows. Big O Notation helps us analyze and compare algorithms based on their time complexity.
It also describes how much space an algorithm or data structure uses in memory, whether it’s a lot or a little.
In any interview, the interviewer will likely ask you to analyze the time & space complexity of your algorithm or data structure. This analysis is typically expressed using Big O notation.
In every interview and in any coding problem we will have to give Big O Notation. So first we need to understand how Big O Notation really works.
Data Structure List:
1. Computer’s memory
2. Lists
3. Arrays
4. Linked List
5. Queues & Stacks
6. Trees
7. Graphs
8. Hash Maps
Also need to understand how the computer memory works behind the scenes.
And also need to learn about Pointers which allow the data structure to work.
Algorithms List:
1. List algorithms
2. Recursion
3. Sorting algorithms
4. Graph search algorithms
5. Dynamic programming
6. Common problem solving patterns. Example: Two pointer technique, sliding window technique, etc.
What’s Next to Learn?
[2] From Data Structure and Algorithms to System Design and Architecture.
Thanks! for reading!
If you wouldn’t mind giving it some claps 👏 👏 since it helped, I’d greatly appreciate it :) Help others find the article, so it can help them!