1

Step 1

Algorithms Overview - Week 1 - Union Find & Time and Space Complexity

03 February—09 February

2

Step 2

Algorithms Overview - Week 1.5 Repeat Union Find

10 February—16 February

3

Step 3

Algorithms Overview - Week 2 - Stack, Queues, Basic Sorting

16 February—23 February

4

Step 4

Algorithms Overview - Week 3 - Merge, Quick sort

24 February—01 March

5

Step 5

Algorithms Overview - Week 3.5 - Refresher for Sorting Algorithms

02 March—08 March

6

Step 6

Algorithms Overview - Week 4 - Priority Queues and Elementary Symbol Tables

09 March—15 March

7

Step 7

Algorithms Overview - Week 5 - Balanced Search Trees

16 March—22 March

8

Step 8

Algorithms Overview - Week 6 - HashTables

23 March—23 March

9

Step 9

Algorithms Overview Part 1 - Finish

23 March—23 March

10

Step 10

Algorithms Overview - Week 7 - Undirected and Directed graphs

24 March—30 March

11

Step 11

Practice Graph Problems

29 March—05 April

12

Step 12

Algorithms Overview - Week 8 - Minimum Spanning Trees, Shortest Paths

06 April—12 April

13

Step 13

Algorithms Overview - Week 9 - Maximum Flow and minimum Cut, Radix Sort

13 April—17 April

14

Step 14

Algorithms Overview - Week 10 - Tries & substring search

18 April—19 April

15

Step 15

Algorithms Overview - Week 11 - Regular expressions & Data Compression

20 April—21 April

16

Step 16

Algorithms Overview - Week 12 - Reductions, Linear Programming, Intractability

21 April—22 April

17

Step 17

Algorithms Overview - Finish

21 April—22 April

18

Step 18

Leetcode Preparation - Week 0 | Arrays

23 April—26 April

19

Step 19

Leetcode Preparation - Part 1 | Two Pointers & Sliding Window

27 April—03 May

20

Step 20

Leetcode Preparation - Part 2 | Fast & Slow Pointers | In-place Linked List reversal

04 May—10 May

21

Step 21

Leetcode Preparation - Part 3 | Modified Binary Search

11 May—14 May

22

Step 22

Leetcode Preparation - Part 4 | Binary Trees & Graph & BFS & DFS & Topological Sort

23

Step 23

Leetcode Preparation - Part 5 | BST & Trie

18 May—19 May

24

Step 24

Leetcode Preparation - Part 6 | Top K elements

18 May—19 May

25

Step 25

Leetcode Preparation - Part 7 | Backtracking

20 May—31 May

26

Step 26

Leetcode Preparation - Part 8 | Dynamic programming Intro

01 June—07 June

27

Step 27

Leetcode Preparation - Part 9 | Top Interview questions

07 June—14 June

28

Step 28

Frontend Preparation + Mock Interviews

15 June—05 July

29

Step 29

Behavioral Interview Preparation

06 July—12 July

30

Step 30

Interview Process

12 July—31 August

1

Step 1

Algorithms Overview - Week 1 - Union Find & Time and Space Complexity

03 February—09 February

2

Step 2

Algorithms Overview - Week 1.5 Repeat Union Find

10 February—16 February

3

Step 3

Algorithms Overview - Week 2 - Stack, Queues, Basic Sorting

16 February—23 February

4

Step 4

Algorithms Overview - Week 3 - Merge, Quick sort

24 February—01 March

5

Step 5

Algorithms Overview - Week 3.5 - Refresher for Sorting Algorithms

02 March—08 March

6

Step 6

Algorithms Overview - Week 4 - Priority Queues and Elementary Symbol Tables

09 March—15 March

7

Step 7

Algorithms Overview - Week 5 - Balanced Search Trees

16 March—22 March

8

Step 8

Algorithms Overview - Week 6 - HashTables

23 March—23 March

9

Step 9

Algorithms Overview Part 1 - Finish

23 March—23 March

10

Step 10

Algorithms Overview - Week 7 - Undirected and Directed graphs

24 March—30 March

12

Step 12

Algorithms Overview - Week 8 - Minimum Spanning Trees, Shortest Paths

06 April—12 April

13

Step 13

Algorithms Overview - Week 9 - Maximum Flow and minimum Cut, Radix Sort

13 April—17 April

14

Step 14

Algorithms Overview - Week 10 - Tries & substring search

18 April—19 April

15

Step 15

Algorithms Overview - Week 11 - Regular expressions & Data Compression

20 April—21 April

16

Step 16

Algorithms Overview - Week 12 - Reductions, Linear Programming, Intractability

21 April—22 April

18

Step 18

Leetcode Preparation - Week 0 | Arrays

23 April—26 April

19

Step 19

Leetcode Preparation - Part 1 | Two Pointers & Sliding Window

27 April—03 May

20

Step 20

Leetcode Preparation - Part 2 | Fast & Slow Pointers | In-place Linked List reversal

04 May—10 May

21

Step 21

Leetcode Preparation - Part 3 | Modified Binary Search

11 May—14 May

23

Step 23

Leetcode Preparation - Part 5 | BST & Trie

18 May—19 May

25

Step 25

Leetcode Preparation - Part 7 | Backtracking

20 May—31 May

26

Step 26

Leetcode Preparation - Part 8 | Dynamic programming Intro

01 June—07 June

27

Step 27

Leetcode Preparation - Part 9 | Top Interview questions

07 June—14 June

28

Step 28

Frontend Preparation + Mock Interviews

15 June—05 July

29

Step 29

Behavioral Interview Preparation

06 July—12 July

30

Step 30

Interview Process

12 July—31 August

11

Step 11

Practice Graph Problems

29 March—05 April

17

Step 17

Algorithms Overview - Finish

21 April—22 April

24

Step 24

Leetcode Preparation - Part 6 | Top K elements

18 May—19 May

22

Step 22

Leetcode Preparation - Part 4 | Binary Trees & Graph & BFS & DFS & Topological Sort

02 February 2020 01 September 2020

0 3


months
before completion
General

Prepare for FAANG Interview

The reason behind this goal

I want to grow as a specialist in my sphere and live in the country where I will be socially secured and can rely upon laws which the country has. An opportunity to work in an International company should give me the motivation to explore new things and grow in different areas of IT. To be a successful software developer is to has the ability to do something valuable. Get a job in the international companies which are the top ones in their industry and can give the most relevant experience.

The location where I want to live:

I've decided to move to Canada, Vancouver. I like this city because it has many things that I love.

  1. Ecology - close to mountains, lakes, fresh air, and ocean.
  2. Much better social programs in comparison to the USA
  3. No Guns :)
  4. IT sector is quite developed, and many famous companies have their branch offices in Canada
  5. English language - several times I thought about Germany as a relocation country, but I realized that when you move to a new country, you want to be a part of society. This obliges you to learn German inevitably, which I am not ready to invest my time in.
  6. Close to the USA

Why making this goal public

"Life is for sharing" (c)
As one of the many developers who want to move to another country, I feel the lack of descriptive stories of how people get a job in the FAANG level companies. I hope this "diary" will help me in structuring my preparation process and, in the end, will serve as a plan for people who also want to choose such a path.

Companies I'd like to go for:

  • Amazon ( AWS )
  • Facebook
  • Apple
  • Microsoft

Author background:

  • MS Degree in CS
  • 5 years of experience in software development (both Front-End and Back-End)
  • Successfully accomplished several big projects well-known companies
  • Location: Saint-Petersburg

Target Role: Front-End Engineer
Telegram Channel for posting valuable info: https://t.me/frontend_engineer_blog

Helpful Material - ( My plan is to make this section live. I'll add more stuff later )

-------------------------------------------------------------------------------------------------------

Algorithms and Data Structures - Topics

-------------------------------------------------------------------------------------------------------

Algorithm Analysis - Big O, Time and Space Complexity

  1. 1-16 videos by Abdul Bari

------------------------------

Union-Find:

  1. Union Find - Playlist
  2. Union Find problems I found worth solving:

https://leetcode.com/problems/regions-cut-by-slashes/

https://leetcode.com/problems/friend-circles/

https://leetcode.com/problems/redundant-connection...

https://leetcode.com/problems/most-stones-removed-...

Stack & Queues

Leet code problems:

  1. Baseball Game - 682
  2. Daily Temperature - 739
  3. Minimum Add to make Parathenses valid - 921
  4. Remove outmost parentheses - 1021
  5. Remove All adjacents duplicates in string - 1047
  6. Minimum remove to make parentheses valid - 1249

Divide & Conquer

Recurrent relations:

  1. video 18-25 from here

Recursion:

  1. https://www.sparknotes.com/cs/recursion/whatisrecursion/section2/
  2. https://www.youtube.com/playlist?list=PL2_aWCzGMAwLz3g66WrxFGSXvSsvyfzCO

Merge & Quick Sort

Priority Queue, Binary Tree, Heap, Heap Sort

  1. video 14-18 https://www.youtube.com/watch?v=GLIRnUhknP0&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=
  2. video by Abdul Bari ( MUST SEE ) https://www.youtube.com/watch?v=HqPJF2L5h9U&list=PLDN4rrl48XKpZkf03iYFl-O29szjTrs_O&index=33&t=0s

Binary Search Trees, Red-Black BST, B-Trees, AVL-Trees

  1. B-Tree by Abdul Bari https://www.youtube.com/watch?v=aZjYr87r1b8&list=PLDN4rrl48XKpZkf03iYFl-O29szjTrs_O&index=77
  2. AVL Tree by Abdul Bari- https://www.youtube.com/watch?v=jDM6_TnYIqE&list=PLDN4rrl48XKpZkf03iYFl-O29szjTrs_O&index=76
  3. BST playlists by google engineer - https://www.youtube.com/watch?v=JfSdGQdAzq8&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=24

Hash Tables

  1. The data structure in pictures series: https://habr.com/ru/post/128017/
  2. Hash Table playlist: playlist

Graph Theory

General

  1. Graph Theory playlist: link
  2. Bipartite Graph - link
  3. pathfinding in graphs - link

Leetcode problems:

  1. https://leetcode.com/problems/find-the-town-judge/
  2. https://leetcode.com/problems/course-schedule-i/
  3. https://leetcode.com/problems/course-schedule-ii/
  4. https://leetcode.com/problems/is-graph-bipartite/
  5. https://leetcode.com/problems/escape-a-large-maze/
  6. https://leetcode.com/problems/find-eventual-safe-s...

----------------------------

Other Material:

  1. https://www.geeksforgeeks.org/data-structures/ - Good DS theory
  2. ttps://www.youtube.com/playlist?list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu - videos on DS topics by Google engineer
  3. https://leetcode.com/discuss/general-discussion/494279/comprehensive-data-structure-and-algorithm-study-guide - one of many guides for learning algo and ds
  4. https://www.educative.io/courses/coderust-hacking-the-coding-interview - some practical algo questions

 Goal Accomplishment Criteria

All parts of preparation are done

 Personal resources

Experience, Motivation to go forward, Person, Family

 Goal ecological compatibility

This goal is the call of heart :)

  1. Algorithms Overview - Week 1 - Union Find & Time and Space Complexity

    Be Prepared for War
    This is the most important part of my interview preparation and also the most time consuming one. If I am good at this topic, I can pass all interviews easy-cheesy. Most companies in North America love the algorithmics problems in the interview. Most of them actually from well-known websites such as LeetCode or HackerRank. But before I start solving problems from these sites, I need to make a "quick-refresher" for myself.

    Here is a short plan for that:

    1. Algorithms, Part I - Standford University - Coursera
    2. Algorithms, Part II - Standford University - Coursera
    1. Union Find - Quick Union Approach - Coursera

    2. Union Find - Quick Find Approach - Coursera

    3. Union Find - Path Compression

    4. Union find videos by Google Engineer

    5. Programming Assignment - Coursera

    6. Analysis of Algorithm - Coursera

    7. Time Complexity by Bari

  2. Algorithms Overview - Week 1.5 Repeat Union Find

    It's impossible to keep in the head all the material that you've learned. So, you have to make refreshers regularly. The best way to remember is by applying your knowledge on a practical problem. For that, let's do a problem from LeetCode on Union Find Topic

    The task for a step:

    1. Refresh Last Week

    2. Regions Cut by slashes - https://leetcode.com/problems/regions-cut-by-slashes/

    3. Refactor - Regions Cut by slashes

    4. Upload Solution on GitHub and share in on leet code

    5. Let be friends - https://leetcode.com/problems/friend-circles/

    6. Friends circles - https://leetcode.com/problems/friend-circles/

    7. Redundant Connection - https://leetcode.com/problems/redundant-connection/

    8. Most Stones removed with same row or column - https://leetcode.com/problems/most-stones-removed-with-same-row-or-column/

  3. Algorithms Overview - Week 2 - Stack, Queues, Basic Sorting

    The second week of the course. Material to learn:

    • Stack, Queues
    • Sorting algorithms
    1. Stack and Queues

    2. Elementary Sort

    3. Data Structures By Google Engineer - Stack and Queues

    4. Implement Stack and Queue in JavaScript from scratch

    5. Solve 3 Easy LeetCode tasks applying Stack

    6. Solve 3 Easy LeetCode Tasks applying Queues

  4. Algorithms Overview - Week 3 - Merge, Quick sort

    Continue to review sorting algorithms

    1. Merge Sort

    2. Abdul Bari videos 18-25 about Divide and Conquer

    3. Quick Sort

    4. Coursera Week 3 Assignment

    5. Abdul Bari's video on quick sort

  5. Algorithms Overview - Week 3.5 - Refresher for Sorting Algorithms

    1) Make a sorting comparison table with a Time and Space Complexity
    2) No need for remembering algorithm implementation, but remember case for applying each of them.

  6. Algorithms Overview - Week 4 - Priority Queues and Elementary Symbol Tables

    1. Priority Queues - Coursera

    2. Abdul Bari videos about PQ, Heap, Binary Tree

    3. Google Engineer videos about PQ

    4. 8 Puzzle - Coursera

    5. Elementary Symbol Table - Coursera

    6. DS Implementation

  7. Algorithms Overview - Week 5 - Balanced Search Trees

    Work on Tree data structure. I feel like I will spend a little more time on this topic.

    1. Balanced Search Trees

    2. Data Structure Implementation

    3. Abdul Bari - B-tree

    4. Abdul Bari - BST

  8. Algorithms Overview - Week 6 - HashTables

    Work on HashTable

    1. HashTable - Coursera

    2. Symbol Table Applications

    3. Hash Table implementation

    4. Google Engineer playlist

  9. Algorithms Overview Part 1 - Finish

    Update materials

  10. Algorithms Overview - Week 7 - Undirected and Directed graphs

    This is the beginning of the second part of the course. Graphs topic is quite a large one. I'll try to cover more information on it to make sure that I understand everything

    1. Undirected Graphs

    2. Directed Graphs

    3. Graph Theory by William Set (5 videos) - https://www.youtube.com/watch?v=eQA-m22wjTQ&list=PLDV1Zeh2NRsDGO4--qE8yH72HFL1Km93P&index=1

    4. Programming assignment - Word Net

    5. 2 Leet code problems on graphs

    6. Implement Graph DS

    7. Implement DFS

    8. Implement BFS

  11. Practice Graph Problems

    Repeat theory material by applying it to practical problems from leetcode.

    1. https://leetcode.com/problems/find-the-town-judge/

    2. https://leetcode.com/problems/course-schedule-i/

    3. https://leetcode.com/problems/course-schedule-ii/

    4. https://leetcode.com/problems/is-graph-bipartite/

    5. https://leetcode.com/problems/escape-a-large-maze/

    6. https://leetcode.com/problems/find-eventual-safe-states/

  12. Algorithms Overview - Week 8 - Minimum Spanning Trees, Shortest Paths

    1. Minimum Spanning Trees

    2. Shortest Paths

    3. Programming Assignment - Seam Carving

    4. Compute Minimum Spanning Tree

    5. https://leetcode.com/problems/network-delay-time/

    6. https://leetcode.com/problems/cheapest-flights-within-k-stops/

  13. Algorithms Overview - Week 9 - Maximum Flow and minimum Cut, Radix Sort

    1. Maximum Flow and Minimum Cut

    2. Radix Sort

    3. Programming Assignment - Baseball Illumination

  14. Algorithms Overview - Week 10 - Tries & substring search

    1. Tries

    2. Substring search

    3. Programming Assignment - Boggle

    4. 2 Leetcode problems on topic

  15. Algorithms Overview - Week 11 - Regular expressions & Data Compression

    1. Regular expressions

    2. Data Compression

    3. Programming Assignment - Burrows-Wheeler

  16. Algorithms Overview - Week 12 - Reductions, Linear Programming, Intractability

    1. Reductions

    2. Linear Programming

    3. Intractability

  17. Algorithms Overview - Finish

    Party !)

  18. Leetcode Preparation - Week 0 | Arrays

    1. 54 Spiral Matrix
    2. 941 Valid mountain array
    3. 1089 Duplicate Zeros
    4. 48 Rotate Image
    5. 73 Set Matrix Zeros
    6. 283 move яeroes
    7. 485. Max consecutive ones
    8. 905. Sort Array By Parity
    9. 487. Max Consecutive Ones II
    10. 88. Merge Sorted Array
    11. 448. Find All Numbers Disappeared in an Array
    12. 977.Squares of Sorted array
    13. 1299. Replace Elements with Greatest Element on Right Side
    14. 287. Find the duplicate number
    15. 79. Word Search
    16. 442. Find duplicates numbers
    1. Cracking Code Interview - Introduction

    2. Check-out https://leetcode.com/explore/featured/card/fun-with-arrays/

  19. Leetcode Preparation - Part 1 | Two Pointers & Sliding Window

    1. (1) Two Sum

    2. (83) Remove duplicates from sorted list

    3. (833) - Backspace string compare

    4. (977) - Squares of a sorted array

    5. (167) - Two Sum input array is sorted

    6. 3Sum - усложнение задачи two sum.

    7. 3SumClosest

    8. 713 - Subarray products less than K

    9. 209 - Minimum Size subarray Sum

    10. 424 - Longest Repeating character replacement

    11. 3. - Longest Substring without repeating character

    12. 159 - Longest Substring with at most 2 distinct characters

    13. 340 - Longest Substring with at most 2 distinct characters

    14. 904. Fruit Into Baskets

    15. 567 - Permutations

    16. 11 - Container with a most water

    17. 75 - Sort Colors

    18. 763 - Partition labels

    1. Two Pointers problem from https://seanprashad.com/leetcode-patterns/

  20. Leetcode Preparation - Part 2 | Fast & Slow Pointers | In-place Linked List reversal

    1. 707. Design Linked List
    2. 141. Linked List Cycle
    3. 142. Linked List Cycle II
    4. 876. Middle of the Linked List
    5. 2. Add Two Numbers
    6. 21. Merge Two Sorted Lists
    7. 430. Flatten a Multilevel Doubly Linked List
    8. 206. Reverse Linked List
    9. 143. Reorder list
    10. 160. The intersection of Two Linked Lists
    11. 19. Remove Nth Node From End of List
    12. 203. Remove Linked List Elements
    13. 234. Palindrome Linked List
    14. 138. Copy List with Random Pointer
    15. 24. Swap Nodes in Pairs
  21. Leetcode Preparation - Part 3 | Modified Binary Search

    1. 704. Binary Search
    2. 278. First Bad Version
    3. 374. Guess Number Higher or Lower
    4. 162. Find Peak Element
    5. 69. Sqrt(x) - необычное применение бинпоиска
    6. 50. Pow(x,n) -
    7. 349. The intersection of Two Arrays
    8. 350. The intersection of Two Arrays II
    9. 34. Find First and Last Position of Element in Sorted Array
    10. 74. Search a 2D Matrix
    11. 240. Search a 2D Matrix II
    12. 152. Find peak element
    13. 852. Peak Index in a Mountain Array
    14. 744. Find the smallest letter greater than the target
    15. 153. Find Minimum in Rotated Sorted Array
    16. 154. Find Minimum in Rotated Sorted Array II
    17. 33. Search in Rotated Sorted Array
    18. 658. Find Closest K elements
  22. Leetcode Preparation - Part 4 | Binary Trees & Graph & BFS & DFS & Topological Sort

    ✅ Binary Trees

    • 94. Binary Tree Inorder Traversal
    • 144. Binary Tree Preorder Traversal
    • 145. Binary Tree Postorder Traversal

    ✅ DFS

    • 100. Same Tree
    • 101. Symmetric Tree
    • 104. Maximum Depth of Binary Tree
    • 112. Path Sum
    • 226. Invert Binary Tree
    • 230. Kth Smallest Element in a BST
    • 250. Count Univalue Subtrees
    • 98. Validate Binary Search Tree
    • 105. Construct Binary Tree from Preorder and Inorder Traversal
    • 113. Path Sum II
    • 572. The subtree of Another Tree
    • 617. Merge Two Binary Trees
    • 654. Maximum Binary Tree
    • 235. Lowest Common Ancestor of a Binary Search Tree
    • 236. Lowest Common Ancestor of a Binary Tree
    • 297. Serialize and Deserialize Binary Tree
    • 437. Path Sum III
    • 543. The diameter of the Binary Tree
    • 545. The boundary of Binary Tree
    • 662. Maximum Width of Binary Tree

    ✅ BFS

    • 102. Binary Tree Level Order Traversal
    • 107. Binary Tree Level Order Traversal II
    • 103. Binary Tree Zigzag Level Order Traversal
    • 116. Populating Next Right Pointers in Each Node
    • 111. Minimum Depth of Binary Tree
    • 199. Binary Tree Right Side View
    • 637. Average levels of binary tree
    • 662. Maximum Width of Binary Tree
    • 133. Clone Graph
    • 117. Populating Next Right Pointers in Each Node II
    • 863. All Nodes Distance K in Binary Tree

    ✅ Graphs - тут было проще. часть задач уже решал, разминаемся на простеньких:

    • 802. Find the Eventual Safe States
    • 997. Find the Town Judge
    • 743. Network delay time
    • 785. Is Graph Bipartite?
    • 787. Cheapest Flight within k stops

    ✅ Topsort

    • 207. Course Schedule
    • 208. Course Schedule II
    • 209. Graph Valid Tree
    • 210. Minimum Height Trees

    ✅ Union Find

    • 547. friend-circles
    • 684. redundant-connection
    • 947. most-stones-removed
    • 959. regions-cut-by-slashes
    • 200. Number of Islands
    • 323. Number of Connected Components in an Undirected Graph
  23. Leetcode Preparation - Part 5 | BST & Trie

  24. Leetcode Preparation - Part 6 | Top K elements

  25. Leetcode Preparation - Part 7 | Backtracking

  26. Leetcode Preparation - Part 8 | Dynamic programming Intro

  27. Leetcode Preparation - Part 9 | Top Interview questions

  28. Frontend Preparation + Mock Interviews

  29. Behavioral Interview Preparation

  30. Interview Process

    Let the war begin

    1. Amazon Web Services

    2. Facebook

    3. Microsoft

    4. Apple

  • 749
  • 02 February 2020, 10:46
Sign up

Signup

Уже зарегистрированы?
Quick sign-up through social networks.
Sign in

Sign in.
Allowed.

Not registered yet?
 
Log in through social networks
Forgot your password?