-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathto-do-list.txt
180 lines (164 loc) · 7.11 KB
/
to-do-list.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
Trie:
https://github.com/hamidgasmi/training.computerscience.algorithms-datastructures#graph-algorithms
https://leetcode.com/problems/word-search-ii/
https://leetcode.com/problems/design-file-system/
https://leetcode.com/problems/wildcard-matching/
https://leetcode.com/problems/regular-expression-matching/
https://leetcode.com/problems/encrypt-and-decrypt-strings/
https://leetcode.com/problems/count-unique-characters-of-all-substrings-of-a-given-string/
Arrays:
https://leetcode.com/problems/search-a-2d-matrix-ii/submissions/
https://leetcode.com/problems/rotate-image/submissions/
https://leetcode.com/problems/spiral-matrix/
https://leetcode.com/problems/longest-consecutive-sequence/
Fastest paths:
findCheapestPrice
https://leetcode.com/problems/minimum-cost-to-reach-city-with-discounts/discuss/1779552/easy-to-read-djikstra-python-3-accepted-but-tle-on-dfs-dp-topdown
https://leetcode.com/problems/minimum-cost-to-reach-city-with-discounts/discuss/1779552/easy-to-read-djikstra-python-3-accepted-but-tle-on-dfs-dp-topdown
https://leetcode.com/problems/all-paths-from-source-lead-to-destination/
https://leetcode.com/problems/cheapest-flights-within-k-stops/
https://leetcode.com/problems/connecting-cities-with-minimum-cost/
https://leetcode.com/problems/unique-paths-iii/
Others:
https://leetcode.com/problems/shopping-offers/
https://leetcode.com/problems/find-the-duplicate-number/
https://leetcode.com/problems/design-an-expression-tree-with-evaluate-function/
https://leetcode.com/problems/my-calendar-iii/
https://leetcode.com/problems/my-calendar-ii/
https://leetcode.com/problems/median-of-two-sorted-arrays/
Current:
https://leetcode.com/problems/design-snake-game/
https://leetcode.com/problems/partition-labels/
https://leetcode.com/problems/range-sum-query-2d-immutable/
https://leetcode.com/problems/course-schedule-ii/
https://leetcode.com/problems/parallel-courses-iii/
https://leetcode.com/problems/parallel-courses-ii/
https://gist.github.com/craigtp/05a82b51557adc278acd71b5a2b88905?utm_source=pocket_mylist
https://microservices.io/patterns/data/transactional-outbox.html
https://khalilstemmler.com/articles/typescript-value-object/
SortedDict:
https://leetcode.com/discuss/study-guide/1515408/using-python3-sorteddict-effectively-floor-ceillings-minimum-maximum-etc
- Refresh:
- Ricursion: https://leetcode.com/discuss/study-guide/1733447/become-master-in-recursion
- Linked list: https://leetcode.com/discuss/study-guide/1800120/become-master-in-linked-list
- Trees: https://leetcode.com/discuss/study-guide/1820334/become-master-in-tree
- Pre-requisites:
-
- Algorithm Techniques and Design:
-
- Algorithms and Data Structures:
- Arrays & Dynamic Arrays:
- Binary Search
- Merge Sort
- Counting Sort
- Radix Sort (Bucket Sort)
- Quick Sort
- Random Quick Sort
- 3 ways partition Quick Sort
- Quick Sort recursive and Tail elimination
- Linked Lists
- Simple Linked List w/out tail
- Double Linked List w/out tail
- Merge Sort on Linked List
- Stack and Queue:
- Queue implemented with a cyclic array
- Queue implemented with 2 stacs
- Trees:
- DFS: In-Order, Pre-Order, Post-Order traversals
- BFS
- Binary Tree
- BST
- AVL Tree
- Splay Tree
- Priority Queue:
- Min/Max Queue
- D-Ary Queue
- Heap Sort
- Quick Sort and Deterministic pivot selection heuristic
- Disjoint-Set:
- Graphs:
- DFS
- Toplogical Sort
- Strongly Connected Components
- BFS
- Shortest Path Tree
- Fastest Route in weighted Graphs: Dijkstra's algorithm
- Fastest Route in weighted Graphs: Bellman-Ford algorithm
- Minimum Spanning Trees (MST): Kruskal's algorithm
- Minimum Spanning Trees (MST): Prim’s algorithm
- Eulrian Graph, Cycle and Path
- Hamiltonian Cycle
- Traveling Salesman Problem (TSP)
- Longest path Problem
- Vertex Cover problem
- Independent Set Problem (ISP)
- Hashing:
- Maps/Set
- Universal Family for integer
- Polynomial Hashing for String
- Strings:
- Trie Patterns
- Suffix Trie
- Suffix Tree
- Burrows-Wheeler Transform (BWT)
- Suffix Arrays
- Knuth-Morris-Pratt Algorithm
- Rabin-Karp's Algorithm
System Design:
Use it to share thoughts and resources, such as:
- Features scope
- API design
- Pseudo code for specific components
- Data model/schema
- Back-of-the-envelope calculations
- Reference links
- Link to whiteboard or diagram such as https://sketchboard.me/new
Python:
assert users == ['kevin', 'melody', 'alice'], f"Expected `users` to be ['kevin', 'melody', 'alice'] but got: {repr(users)}"
- How can I write test cases with Python
- Implement max pairwise product with Tournament approach
Problems:
- Amazon:
- Convert.a read/write system call that takes 512 byte aligned offset/size and reads from a block device that can read/write 4k aligned
- Design dropbox
- Google:
- Design a URL phishing verifier
- DP problem about finding optimal VM allocation of a physical machine
- Facebook:
- Design web crawler
How to improve:
- Learn patterns
- top k means at least consider a heap.
- "Find the order of these relationships": consider topological sort.
- Solve problems on paper:
- Talk out loud a lot. Nobody loses points for thinking.
- As soon as you understand the question,
- propose new inputs as for TDD
- For example if your question is remove invalid parens, suggest one or two inputs and example outputs.
- This gives you test cases AND shows you're thinking
- Immediately propose naive solution
- Eg if you have Range Sum immediately just note
- "The obvious solution is n^2 runtime without using space, but I think we can do better."
- Show your work, as professors like to say.
- Pseudocode a solution ASAP to get interviewer buy in.
- Once you get to a working solution, go back to your test cases and manually walk through the code
- Open a block comment and write line by line the data transformations
- The product design interview is HARD.
- Do a ton of these on paper for anything you can imagine.
- Online ordering at Walmart,
- pretend the deli counter at your grocery store needs to scale to your entire state, whatever you see.
- Just practice.
- Come up with a script for design interviews: I use the acronym README Bottlenecks:
- requirements,
- estimations,
- API,
- data model,
- main system,
- extended system (extended means load balancing, caching, etc).
- Bottlenecks (Identify and resolve bottlenecks).
- Write a spreadsheet for your behavioral interview.
- You can make one story about three different questions.
- For example, "I was the lead of this feature" can be about technical challenges, how did you give feedback, how do you prioritize.
- Just find 4-5 anecdotes that can scale to various possible questions.
- Buy a whiteboard. Google drawing and bluejeans whiteboard aren't as good.
- Trello board. Use spaced repetition. I'll add a pic of mine below