Hello viewers are you Preparing for Coding Interviews To successfully prepare for coding interviews you should be confident in the following areas:
1. Algorithms & Data Structures
2. Computer
Organization & Operating Systems
3. Coding
4. System Design
Algorithms & Data
Structures
This is the most wanted skill set for programmers. Here are
the subjects every programmer must be familiar with: Algorithm Complexity:
Big-O notation and how to calculate algorithms complexity; knowing which
algorithm is better based on their complexity, e.g. O(N) vs O(logN). Basic Data
Structures & adapters: Array, Linked List, Stack, Queue.
Sorting & Searching: Knowing various sorting algorithms helps
you to identify the best possible implementation for your projects. For
practice, try to implement insertion sort, selection sort or merge sort and
spot the difference between linear search and binary search.
Trees & Graphs:
Trees and Graphs are everywhere, starting from "friends graph" in
Facebook to "knowledge graph" in Google Search.
Hashtables: Being one
of the most efficient data structures in the world, hashtables are always a
good choice. You should be able to implement a Hashtable and be familiar with
techniques to solve collisions.
Computer Organization & Operating Systems
It is strongly
advised to be familiar with topics like:
- Bitwise operations
- How does the CPU execute machine code
- What's the
difference between static RAM and dynamic RAM
- What kind of OS
kernel types exist
- What's the
difference between "mutex" and "semaphore"
- What is a deadlock and what is a livelock .
Coding
You should have
really good knowledge of at least one programming language. Knowing all the
pros and cons, best practices of your favorite language will always help you
write efficient, elegant and readable code. It is highly recommended to
practice by solving challenging problems, such as:
- The Josephus
Problem
- Tower of Hanoi
- String Compression
- Balanced Parenthesis
-Remove Spaces from a String
-Twin prime Numbers
System
Design
Knowing Object Oriented Programming is a must for a modern programmer. System Design means
thinking about the whole system, being able to design its architecture, dissect
it into classes, define object interactions. To be prepare try to answer the
questions below:
-How would you design Google search ? what if there are
millions of simultaneous requests per second?
-How would you implement Facebook’s friend search?
- Why would you use Relational Database Management System?
- Why would you use NoSQL DB?
It is highly recommended to know and use the correct design patterns.For
example, you should know the difference between a Composite and a Decorator.
I Hope that this information is prove useful to my viewers. Don't forget to leave a comment.
EmoticonEmoticon