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.
- Ecology - close to mountains, lakes, fresh air, and ocean.
- Much better social programs in comparison to the USA
- No Guns :)
- IT sector is quite developed, and many famous companies have their branch offices in Canada
- 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.
- 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 )
- 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-16 videos by Abdul Bari
------------------------------
Union-Find:
- Union Find - Playlist
- 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:
- Baseball Game - 682
- Daily Temperature - 739
- Minimum Add to make Parathenses valid - 921
- Remove outmost parentheses - 1021
- Remove All adjacents duplicates in string - 1047
- Minimum remove to make parentheses valid - 1249
Divide & Conquer
Recurrent relations:
- video 18-25 from here
Recursion:
- https://www.sparknotes.com/cs/recursion/whatisrecursion/section2/
- https://www.youtube.com/playlist?list=PL2_aWCzGMAwLz3g66WrxFGSXvSsvyfzCO
Merge & Quick Sort
Priority Queue, Binary Tree, Heap, Heap Sort
- video 14-18 https://www.youtube.com/watch?v=GLIRnUhknP0&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=
- 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
- B-Tree by Abdul Bari https://www.youtube.com/watch?v=aZjYr87r1b8&list=PLDN4rrl48XKpZkf03iYFl-O29szjTrs_O&index=77
- AVL Tree by Abdul Bari- https://www.youtube.com/watch?v=jDM6_TnYIqE&list=PLDN4rrl48XKpZkf03iYFl-O29szjTrs_O&index=76
- BST playlists by google engineer - https://www.youtube.com/watch?v=JfSdGQdAzq8&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=24
Hash Tables
- The data structure in pictures series: https://habr.com/ru/post/128017/
- Hash Table playlist: playlist
Graph Theory
General
Leetcode problems:
- https://leetcode.com/problems/find-the-town-judge/
- https://leetcode.com/problems/course-schedule-i/
- https://leetcode.com/problems/course-schedule-ii/
- https://leetcode.com/problems/is-graph-bipartite/
- https://leetcode.com/problems/escape-a-large-maze/
- https://leetcode.com/problems/find-eventual-safe-s...
----------------------------
Other Material:
- https://www.geeksforgeeks.org/data-structures/ - Good DS theory
- ttps://www.youtube.com/playlist?list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu - videos on DS topics by Google engineer
- https://leetcode.com/discuss/general-discussion/494279/comprehensive-data-structure-and-algorithm-study-guide - one of many guides for learning algo and ds
- https://www.educative.io/courses/coderust-hacking-the-coding-interview - some practical algo questions
Критерий завершения
All parts of preparation are done
Личные ресурсы
Experience, Motivation to go forward, Person, Family
Экологичность цели
This goal is the call of heart :)
-
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:
- Algorithms, Part I - Standford University - Coursera
- Algorithms, Part II - Standford University - Coursera
-
Union Find - Quick Union Approach - Coursera
-
Union Find - Quick Find Approach - Coursera
-
Union Find - Path Compression
-
Union find videos by Google Engineer
-
Programming Assignment - Coursera
-
Analysis of Algorithm - Coursera
-
Time Complexity by Bari
-
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:
-
Refresh Last Week
-
Regions Cut by slashes - https://leetcode.com/problems/regions-cut-by-slashes/
-
Refactor - Regions Cut by slashes
-
Upload Solution on GitHub and share in on leet code
-
Let be friends - https://leetcode.com/problems/friend-circles/
-
Friends circles - https://leetcode.com/problems/friend-circles/
-
Redundant Connection - https://leetcode.com/problems/redundant-connection/
-
Most Stones removed with same row or column - https://leetcode.com/problems/most-stones-removed-with-same-row-or-column/
-
-
Algorithms Overview - Week 2 - Stack, Queues, Basic Sorting
The second week of the course. Material to learn:
- Stack, Queues
- Sorting algorithms
-
Stack and Queues
-
Elementary Sort
-
Data Structures By Google Engineer - Stack and Queues
-
Implement Stack and Queue in JavaScript from scratch
-
Solve 3 Easy LeetCode tasks applying Stack
-
Solve 3 Easy LeetCode Tasks applying Queues
-
Algorithms Overview - Week 3 - Merge, Quick sort
Continue to review sorting algorithms
-
Merge Sort
-
Abdul Bari videos 18-25 about Divide and Conquer
-
Quick Sort
-
Coursera Week 3 Assignment
-
Abdul Bari's video on quick sort
-
-
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. -
Algorithms Overview - Week 4 - Priority Queues and Elementary Symbol Tables
-
Priority Queues - Coursera
-
Abdul Bari videos about PQ, Heap, Binary Tree
-
Google Engineer videos about PQ
-
8 Puzzle - Coursera
-
Elementary Symbol Table - Coursera
-
DS Implementation
-
-
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.
-
Balanced Search Trees
-
Data Structure Implementation
-
Abdul Bari - B-tree
-
Abdul Bari - BST
-
-
Algorithms Overview - Week 6 - HashTables
Work on HashTable
-
HashTable - Coursera
-
Symbol Table Applications
-
Hash Table implementation
-
Google Engineer playlist
-
-
Algorithms Overview Part 1 - Finish
Update materials
-
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
-
Undirected Graphs
-
Directed Graphs
-
Graph Theory by William Set (5 videos) - https://www.youtube.com/watch?v=eQA-m22wjTQ&list=PLDV1Zeh2NRsDGO4--qE8yH72HFL1Km93P&index=1
-
Programming assignment - Word Net
-
2 Leet code problems on graphs
-
Implement Graph DS
-
Implement DFS
-
Implement BFS
-
-
Practice Graph Problems
Repeat theory material by applying it to practical problems from leetcode.
-
https://leetcode.com/problems/find-the-town-judge/
-
https://leetcode.com/problems/course-schedule-i/
-
https://leetcode.com/problems/course-schedule-ii/
-
https://leetcode.com/problems/is-graph-bipartite/
-
https://leetcode.com/problems/escape-a-large-maze/
-
https://leetcode.com/problems/find-eventual-safe-states/
-
-
Algorithms Overview - Week 8 - Minimum Spanning Trees, Shortest Paths
-
Minimum Spanning Trees
-
Shortest Paths
-
Programming Assignment - Seam Carving
-
Compute Minimum Spanning Tree
-
https://leetcode.com/problems/network-delay-time/
-
https://leetcode.com/problems/cheapest-flights-within-k-stops/
-
-
Algorithms Overview - Week 9 - Maximum Flow and minimum Cut, Radix Sort
-
Maximum Flow and Minimum Cut
-
Radix Sort
-
Programming Assignment - Baseball Illumination
-
-
Algorithms Overview - Week 10 - Tries & substring search
-
Tries
-
Substring search
-
Programming Assignment - Boggle
-
2 Leetcode problems on topic
-
-
Algorithms Overview - Week 11 - Regular expressions & Data Compression
-
Regular expressions
-
Data Compression
-
Programming Assignment - Burrows-Wheeler
-
-
Algorithms Overview - Week 12 - Reductions, Linear Programming, Intractability
-
Reductions
-
Linear Programming
-
Intractability
-
-
Algorithms Overview - Finish
Party !)
-
Leetcode Preparation - Week 0 | Arrays
- 54 Spiral Matrix
- 941 Valid mountain array
- 1089 Duplicate Zeros
- 48 Rotate Image
- 73 Set Matrix Zeros
- 283 move яeroes
- 485. Max consecutive ones
- 905. Sort Array By Parity
- 487. Max Consecutive Ones II
- 88. Merge Sorted Array
- 448. Find All Numbers Disappeared in an Array
- 977.Squares of Sorted array
- 1299. Replace Elements with Greatest Element on Right Side
- 287. Find the duplicate number
- 79. Word Search
- 442. Find duplicates numbers
-
Cracking Code Interview - Introduction
-
Check-out https://leetcode.com/explore/featured/card/fun-with-arrays/
-
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
-
Two Pointers problem from https://seanprashad.com/leetcode-patterns/
-
-
Leetcode Preparation - Part 2 | Fast & Slow Pointers | In-place Linked List reversal
- 707. Design Linked List
- 141. Linked List Cycle
- 142. Linked List Cycle II
- 876. Middle of the Linked List
- 2. Add Two Numbers
- 21. Merge Two Sorted Lists
- 430. Flatten a Multilevel Doubly Linked List
- 206. Reverse Linked List
- 143. Reorder list
- 160. The intersection of Two Linked Lists
- 19. Remove Nth Node From End of List
- 203. Remove Linked List Elements
- 234. Palindrome Linked List
- 138. Copy List with Random Pointer
- 24. Swap Nodes in Pairs
-
Leetcode Preparation - Part 3 | Modified Binary Search
- 704. Binary Search
- 278. First Bad Version
- 374. Guess Number Higher or Lower
- 162. Find Peak Element
- 69. Sqrt(x) - необычное применение бинпоиска
- 50. Pow(x,n) -
- 349. The intersection of Two Arrays
- 350. The intersection of Two Arrays II
- 34. Find First and Last Position of Element in Sorted Array
- 74. Search a 2D Matrix
- 240. Search a 2D Matrix II
- 152. Find peak element
- 852. Peak Index in a Mountain Array
- 744. Find the smallest letter greater than the target
- 153. Find Minimum in Rotated Sorted Array
- 154. Find Minimum in Rotated Sorted Array II
- 33. Search in Rotated Sorted Array
- 658. Find Closest K elements
-
Leetcode Preparation - Part 5 | BST & Trie
-
Leetcode Preparation - Part 6 | Trie | BST | Top K elements
✅ Trie
- 208. Implement Trie (Prefix Tree)
- 211. Add and Search Word - Data structure design
- 642. Design Search Autocomplete System
- 648. Replace Words
- 677. Map Sum Pairs
✅ Top-K
- 215. Kth Largest Element in an Array
- 230. Kth Smallest Element in a BST
- 347. Top K Frequent Elements
- 973. K Closest Points to Origin
-
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
-
Leetcode Preparation - Part 7 | Backtracking
- 17. Letter Combinations of a Phone Number
- 22. Generate Parentheses
- 39. Combination Sum
- 46. Permutations
- 77. Combinations
- 78. Subsets
- 494. Target Sum
- 784. Letter case permutation
- 40. Combination Sum II
- 47. Permutations II
- 90. Subsets II
- 216. Combination Sum III
- 131. Palindrome Partitioning
-
Leetcode Preparation - Part 8 | Top Interview questions
✅ Design
- 146. LRU Cache
- 155. Min Stack
- 380. Insert Delete GetRandom O(1)
✅ Top-k-elements
- 692 - Top K Frequent words
✅ Trie
- 1268 - Search Suggestion System
✅ Min-PQ
- 1167 - Minimum Cost to connect sticks
✅ Stack
- 227 - Basic Calculator II
✅ Set, Map, Sort
- 12. Integer to Roman
- 13. Roman to Integer
- 49. Group Anagrams
- 819. Most Common Word
- 937. Reorder Data in Log Files
-
Frontend Preparation
-
System Design + Mock Interviews
-
Behavioral Interview Preparation
-
Facebook Onsite - Preparation | System Design
System Design is the most difficult part here. I'd like to prepare a technical document with a most common design problems
-
Read Refactoring UI Book
-
Read Accessibility for everyone
-
Design Netflix
-
Design Facebook
-
Design News Feed
-
Design Twitter
-
Design Pininterest
-
Design Facebook messenger
-
Record Video - Facebook News Feed
-
Record Video - PinInterest
-
Record Video - Facebook Messenger
-
Record Video - Netflix
-
-
Facebook Onsite - Preparation | Theory
Brush up the knowledge on https://javascript.info/
-
Facebook Onsite - Preparation | Behavioral
-
Facebook Onsite - Preparation | Coding
Practice coding and Browser API
2 Coding problems each day under 15-20 minutes.-
Solve all problems from - https://bigfrontend.dev/problem
-
Solve all problems from - https://leetcode.com/problemset/all/?listId=7p59281&difficulty=Medium
-
create `isPrime()` JavaScript
-
create a tokenizer
-
Virtual DOM I
-
Virtual DOM II
-
Implement a Stack by using Queue JavaScript
-
merge identical API calls
-
extract all anchor element from HTML string
-
implement String.prototype.trim()
-
implement your own `Object.create`
-
Generate Fibonacci Number with recursion
-
throttle Promises
-
write your own `instanceof`
-
Next Right Sibiling
-
support negative Array index in JavaScript
-
Generate Fibonacci Number
-
implement `_.get()` JavaScript
-
create a fake timer (setInterval)
-
create an interval JavaScript
-
convert snake_case to camelCase
-
convert HEX color to RGBA
-
get DOM tags
-
create your own Promise
-
add comma to number
-
auto-retry Promise on rejection
-
create your own `Function.prototype.call`
-
create your own `new` operator
-
get DOM tree height JavaScrip
-
create an Observable JavaScript
-
highlight keywords in HTML string JavaScript
-
flatten Thunk
-
write your own `extends` in es5
-
create a fake timer(setTimeout)
-
clearAllTimeout
-
implement completeAssign()
-
implement Object.assign()
-
create a sum()
-
find corresponding node in two identical DOM tree JavaScript
-
implement a simple DOM wrapper to support method chaining like jQuery
-
Implement a general memoization function - `memo()`
-
-
Facebook Onsite - Day 1 [CODING]
survive
-
Facebook Onsite - Day 2 [System Design + Behavioral]
survive
-
Waiting for results - DONE
-
Facebook Onsite - Day 3 [System Design]
-
Waiting for Results
-
OFFER ✅
- 11957
- 02 февраля 2020, 10:46
Не пропустите новые записи!
Подпишитесь на цель и следите за ее достижением