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:
Algorithms and data structures
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.
- Sum of Even Numbers After Queries
- Robot Return to Origin
- N-Repeated Element in Size 2N Array
- Balanced Binary Tree
- Longest Substring Without Repeating Characters
- Remove Nth Node From End of List
- Merge k Sorted Lists
- Next Permutation
Data structures
- Data Structures & Algorithms #1 --- What Are Data Structures?
- Multi-dim
- Dynamic Arrays
- Data Structures: Linked Lists
- Core Linked Lists Vs Arrays
- Pointers to Pointers
- Data Structures: Trees
- Data Structures: Heaps
- Data Structures: Hash Tables
- Phone Book Problem
- Data Structures: Stacks and Queues
- Data Structures: Crash Course Computer Science #14
- Data Structures: Tries
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.
- Algorithms: Graph Search, DFS and BFS
- BFS (breadth-first search) and DFS (depth-first search)
- Algorithms: Binary Search
- Binary Search Tree Review
- Python Algorithms for social security
- Algorithms: Recursion
- Algorithms: Bubble Sort
- Algorithms: Merge Sort
- Algorithms: Quicksort
"O" is large and "o" is small
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.
A few more videos and articles on this topic:
Introduction to Big O Notation and Time Complexity (Data Structures & Algorithms #7)
Dynamic programming
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:
- Google Coding Interview --- Universal Value Tree Problem
- Google Coding Interview Question and Answer #1: First Recurring Character
- Find min and max elements in a binary search tree
- Find the height of a binary tree
- Check if a binary tree is a binary search tree or not
- What Is Tail Recursion? Why Is It So Bad?
Spaces after study
Now that you've learned a lot and watched a few videos, let's tighten up a few more gaps and solve the problems:
- Bigger Is Greater
- ZigZag Conversion
- Reverse Integer
- Combination Sum II
- Multiple Strings
- Larry's Array
- Short Palindrome
- Valid Number
- Bigger is Greater
- The Full Counting Sort
- Lily's Homework
- Common Child
- Repeated Substring Pattern
- Remove Element
- Delete Node in a BST
- Split Array into Consecutive Subsequences
- Number of Subarrays with Bounded Maximum
- Combination Sum IV
- Best Time to Buy and Sell Stock with Cooldown
- Longest Repeating Character Replacement
- Swap Nodes in Pairs
- Binary Tree Right Side View
- Flatten Nested List Iterator
- Binary Tree Level Order Traversal
- Binary Search Tree Iterator
- Maximum Length of Pair Chain
- Split Linked List in Parts
Systems design
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.
- Parking Lot System
- Whats App
- Uber design
- Tinder Service
- and Recommendation Algorithms and System Design
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.
- Commonly Asked Operating Systems Interview Questions
- What is Translation lookaside buffer?
- Why does Round Robin avoid the Priority Inversion Problem?
- Interrupt Vs System Call---What is 'inode' in file system?
- Operating System Interview Questions and Answers --- Part I
- What is a kernel --- Gary explains
- Round Robin Algorithm Tutorial (CPU Scheduling)
- The Magic of LRU Cache (100 Days of Google Dev)
- MIT 6.004 L15: The Memory Hierarchy
- Interrupts
- Scheduling
Design patterns
Pattern questions are very common in interviews. Here are some preparation materials:
SQL
SQL puzzles
- Trips and Users
- Human Traffic of Stadium
- Department Top Three Salaries
- Exchange Seats
- Hackerrank The Report
- Nth Highest Salary
- Symmetric Pairs
- Occupations Placements
- Ollivander's Inventory
- Binary Tree Nodes
- Weather Observation Station 18
- ChallengesPrint Prime Numbers
- Big Countries
- Exchange Seats
- Interview Questions: 3 Tech Screening Exercises (For Data Analysts)
SQL video