This is a note of the various things related to competitive programming / doing interviews that I've gathered so far.
- Advent of Code problems
- Blind75 - Curated List of Top 75 LeetCode Questions to Save Your Time | Tech Industry - Blind
- Hacker Rank skill certification / verification
- Build a SaaS product with Next.js, Supabase and Stripe | egghead.io
- Top Interview 150 - Stdy Plan - LeetCode
- Blind75 - Curated List of Top 75 LeetCode Questions to Save Your Time | Tech Industry - Blind
- TopSWE
- fishercoder1534/Leetcode: Solutions to LeetCode problems; updated daily. Subscribe to my YouTube channel for more.
- Graph problems
- Solve Algorithms | HackerRank
- NeetCode - Practice
- System design - Primer · CatalanCabbage/notes
- systemdesign42/system-design: A resource to help you pass system design interview and become good at work 👇
- ByteByteGoHq/system-design-101: Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.
- System Design in a Hurry
- More resources: System design interview guide for Software Engineers | Tech Interview Handbook
- Online Coding Courses - AI-Powered Interactive Learning
- Technical Interview Guide for Busy Engineers | Tech Interview Handbook [repo]
- Mock Interview: Hume AI
For prep i used 3 paid resources.
- Coding ninjas (Started here, and i would still start here, considering the 24*7 doubt support )
- Algoexpert ( Good question set)
- LC Premium (Used for assessments)
See also buildyourownx GitHub profile which is great.
I used educative.io for system design, and then random videos
https://neetcode.io/roadmap - This for DSA
I took some notes while I did it. https://github.com/CatalanCabbage/notes/tree/master?tab=readme-ov-file#concepts
Go through these topics, you'll have all the lego blocks Then "hld and lld for xyz" videos will show you how to put the blocks together
That way you'll be able to explain an overall system and then go into depth when they focus on a specific component as well
A good twitter thread that deeply resonates with me: Akshaya Sivaraman on Twitter: "How did I go from a busily scheduled life to one with substantial unstructured time?
- Initial capacity and load factor affect the performance of hash table / map.
- It is open: in the case of a "hash collision", a single bucket stores multiple entries.
- Iterators returned by "collection view methods" are fail-fast: i.e., they throw
ConcurrentModificationException
if they detect a concurrent modification of the underlying hashtable. This is not fool-proof / guaranteed. So, implementations should not depend on the same. - Hashtable is synchronized. HashMap is not. For thread safe usage, a ConcurrentHashMap is recommended.
- JavaDoc
- Hash table cheatsheet for coding interviews | Tech Interview Handbook
- What are hashtables and hashmaps and their typical use cases?
- Listen - Listen carefully to the problem. Every detail is necessary to solve that problem.
- Example - Come up with a good example. Make examples larger and avoid special cases.
- Come up with a brute-force algorithm - It's better to start off with a slow and terrible algorithm than to start of with nothing at all. Don't code the brute-force algorithm. Just state the brute-force algorithm and it's runtime and then go into optimizing it.
- Optimize
- Walk through your algorithm - Don't code prematurely. Take a step back and verify that the algorithm is correct.
- Start coding - For whiteboard: write the line straight, use space wisely; Whiteboard or computer: coding style matters, consistent coding style, naming is important for good style (ask the interviewer if you could abbreviate them the next time), MODULARIZE
- Start testing - analyse, double check things that look weird/risky, small test first, special cases next and if time permits large test cases. Remember: Think as you test. Don't go through the code like a bot. Test your code and not the algorithm!. When you find a bug, don't panic! Give some thought about fixing the bug.
- B.U.D - Bottleneck, Unnecessary, Duplicates - walk through the brute force (to identity bottlenecks, unnecessary and duplicated code)
- Space-time tradeoffs - you can almost always save some time by trading off some space. Think about Hash tables.
- Do it yourself - use a large generic example and try to solve it yourself. You'll identify some nice ways to optimize when solving the problem for a large test case.
- 18/Sep/2024 - Continue working on the optimal solution for the Two sum problem.
- 17/Sep/2024 - Worked on the Two sum problem. Completed the brute-force solution. Was working on optimizing the solution and was reading up on HashMap / HashTable a bit.