/coding-interview-prep

My personal coding interview study plan for working as a full-time software engineer

Primary LanguageC++

Coding Interview Preparation Plan

This is my personal coding interview preparation plan that I hope to follow during the time frame. Many things were adopted from other interview prep guides, some were suggested by top KZ coders that I know. Everything was then customized according to my knowledge and experience. Feel free to customize it for yourself.

Time frame: ~6 month (mid May - mid November)

Goal: at least 1 offer to big tech company in Europe/US

Getting started

If you would like to prepare for the coding interview, feel free to reuse this repo. I, personally, find it very useful to organize things like so and track what you have done so far.

Installing

To prepare for the coding interview using this repository, fork it, and clone the forked repo to your local machine:

git clone https://github.com/yourusername/coding-interview-prep.git

Solving problems

You may want to solve problems on your own without reusing my codes. To do so, just remove everything from Problems directory.

To count your solved problems, execute the following Shell command:

./count_solved

Background

Plan is based on existing preparation guides:

To stay motivated during preparation:

Overview

The areas I know:

  • Back-end software development - Django MVC/REST, asynchronous Tornado, Play for Java, JAX-RS
  • Machine Learning - built language models with RNNs
  • iOS Development - 1 year experience (long ago, probably forgot)

The areas I need to work on:

  • Algorithms & Data Structures (Stacks, Queues, Graphs, Trees, etc.) - 80% of time
  • Object-Oriented Programming (in C++)
  • System Design (Scalability 😏)
  • Dynamic Programming
  • Computer Architecture (Cache, RAM, etc.) - review the course at NU
  • Operating Systems (Processes and Threads, Scheduling) - review the course at NU
  • Computer Networks (especially TCP/IP) - review the course at NU

Plan

I have decided to split my plan into two phases (three months each): summer and fall phases.

First phase: Summer Time

Time to dedicate:

  • 2 hrs on weekdays, 5 hours on weekends
  • 12 weeks
  • Total: ( 2 x 5 + 5 x 2 ) x 12 = 240 hrs (be realistic, 200 hrs will be good too😉)

Objective: solve > 200 problems on Leetcode! 😎

Programming language chosen: C++

Areas to work on:

  • Algorithms (e.g. sorting)
  • Data Structures (e.g. lists, stacks, queues, hash-map)
  • Graphs (e.g. BFS, DFS)
  • Trees (e.g. BST)
  • Object-Oriented Programming (in C++)
  • Dynamic Programming
  • Mock Interviews - once a month

Where to study:

Comments:

  • Push solved problems to Github for later usage to refresh memory

Second Phase: Fall Term

Time to dedicate:

  • TBD but less than previous phase due to university studies

Objective: solve 100 more Leetcode problems! 😎

Areas to work on:

  • Computer Architecture (Cache, RAM, etc.)
  • Operating Systems (Processes and Threads, Scheduling)
  • Computer Networks (especially TCP/IP)
  • System Design (Scalability uuh, cool)
  • Mock Interviews - once a week (on weekends)
  • Keep solving LeetCode problems + Cracking the Coding Interview

Where to study:

Extra Time

Everything listed here is optional. Even though it is not that realistic to dedicate time to all these, I will try doing it during rest time at leisure 😄

Read Books:

Develop own website/landing page:

Improve existing codes:

Complete started courses:

Open Source projects to contribute:

Physical:

  • Buy a whiteboard/glassboard, put it in front of a mirror - good investment