Preparing for Coding Interviews




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.

Previous
Next Post »