/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

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