mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2025-07-13 08:51:37 +08:00
seo: fix page has links to redirect (#708)
Co-authored-by: Yangshun Tay <tay.yang.shun@gmail.com>
This commit is contained in:
12
README.md
12
README.md
@ -9,7 +9,7 @@
|
||||
<a href="https://www.techinterviewhandbook.org/">Read on the website</a>
|
||||
</h3>
|
||||
<p>
|
||||
Join/follow us on <a href="https://discord.gg/usMqNaPczq" target="_blank">Discord</a> | <a href="https://twitter.com/techinterviewhb" target="_blank">𝕏 (Twitter)</a> | <a href="https://t.me/techinterviewhandbook" target="_blank">Telegram</a> | <a href="https://facebook.com/techinterviewhandbook" target="_blank">Facebook</a>
|
||||
Join/follow us on <a href="https://discord.com/invite/usMqNaPczq" target="_blank">Discord</a> | <a href="https://twitter.com/techinterviewhb" target="_blank">𝕏 (Twitter)</a> | <a href="https://t.me/techinterviewhandbook" target="_blank">Telegram</a> | <a href="https://facebook.com/techinterviewhandbook" target="_blank">Facebook</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@ -26,7 +26,7 @@ Not everyone has the time to do a few hundred LeetCode questions. Here are _free
|
||||
Besides the usual algorithm questions, other **awesome** stuff includes:
|
||||
|
||||
- [Best practice questions](https://www.techinterviewhandbook.org/coding-interview-study-plan/) for coding interviews
|
||||
- [Grind 75](https://www.techinterviewhandbook.org/grind75) - the next evolution of Blind 75, bigger and better
|
||||
- [Grind 75](https://www.techinterviewhandbook.org/grind75/) - the next evolution of Blind 75, bigger and better
|
||||
- [How to prepare](https://www.techinterviewhandbook.org/coding-interview-prep/) for coding interviews
|
||||
- [Coding interview best practices](https://www.techinterviewhandbook.org/coding-interview-cheatsheet/) - Straight-to-the-point Do's and Don'ts
|
||||
- [Algorithm cheatsheets and tips](https://www.techinterviewhandbook.org/algorithms/study-cheatsheet/) categorized by topic
|
||||
@ -50,7 +50,7 @@ Anybody who wants to land a job at a tech company but is new to technical interv
|
||||
|
||||
<div align="center">
|
||||
<h3>💡 Stop grinding mindlessly! Study coding question patterns efficiently with
|
||||
<a href="https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview">Grokking the Coding Interview</a> by Design Gurus 💡
|
||||
<a href="https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU">Grokking the Coding Interview</a> by Design Gurus 💡
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
@ -68,9 +68,9 @@ Also, existing resources focus mainly on algorithm questions and lack coverage f
|
||||
|
||||
AlgoMonster aims to help you ace the technical interview **in the shortest time possible**. By Google engineers, AlgoMonster uses a data-driven approach to teach you the most useful key question patterns and has contents to help you quickly revise basic data structures and algorithms. Best of all, AlgoMonster is not subscription-based - pay a one-time fee and get **lifetime access**. [**Join today for a 70% discount →**](https://shareasale.com/r.cfm?b=1873647&u=3114753&m=114505&urllink=&afftrack=)
|
||||
|
||||
### [Grokking the Coding Interview: Patterns for Coding Questions](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
### [Grokking the Coding Interview: Patterns for Coding Questions](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages. **Learn and understand patterns, not memorize answers!** [**Get lifetime access today →**](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages. **Learn and understand patterns, not memorize answers!** [**Get lifetime access today →**](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
## Looking for Front End content?
|
||||
|
||||
@ -78,7 +78,7 @@ Front-end-related content has been moved to a separate website - [Front End Inte
|
||||
|
||||
## Looking for System Design content?
|
||||
|
||||
We're still working on System Design content. In the meanwhile, check out [ByteByteGo's System Design Interview course](https://bytebytego.com?fpr=techinterviewhandbook) or Design Gurus' [Grokking the System Design Interview course](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-system-design-interview), which in our opinion are among the most useful resources for getting started on system design interviews preparation.
|
||||
We're still working on System Design content. In the meanwhile, check out [ByteByteGo's System Design Interview course](https://bytebytego.com?fpr=techinterviewhandbook) or Design Gurus' [Grokking the System Design Interview course](https://www.designgurus.io/course/grokking-the-system-design-interview?aff=kJSIoU), which in our opinion are among the most useful resources for getting started on system design interviews preparation.
|
||||
|
||||
## Contents
|
||||
|
||||
|
@ -61,7 +61,7 @@ export default function AboutPage() {
|
||||
feedback / feature request / bug report
|
||||
<a
|
||||
className="text-primary-600 hover:text-primary-500 ml-1"
|
||||
href="https://forms.gle/6zV5yimPyiByKqDy8"
|
||||
href="https://docs.google.com/forms/d/e/1FAIpQLScbhjhlCdcmu9SGyASevqrqLl_HOr4W1B_bpTXUgs78yClr_w/viewform?usp=send_form"
|
||||
rel="noreferrer"
|
||||
target="_blank">
|
||||
here
|
||||
|
@ -116,7 +116,7 @@ export default function LandingPage() {
|
||||
</a>
|
||||
<a
|
||||
className="bg-primary-500 flex items-center justify-center rounded-md border border-transparent px-4 py-3 text-base font-medium text-white shadow-sm hover:bg-opacity-70 sm:px-8"
|
||||
href="https://youtu.be/e4g1lS6zWGA">
|
||||
href="https://www.youtube.com/watch?v=e4g1lS6zWGA&feature=youtu.be">
|
||||
Promo Video
|
||||
</a>
|
||||
</div>
|
||||
|
@ -34,21 +34,20 @@ Commerce Engineering (hardware sales) is Meta's next up and coming revenue strea
|
||||
|
||||
Some stories from engineers in Commerce Engineering:
|
||||
|
||||
- [Help 10 People—or Billions? Engineering Impact on a Global Scale](https://www.metacareers.com/life/help-10-peopleor-billions/), Nishita A., Software Engineering Manager, Commerce Engineering
|
||||
- [Embracing Change to Evolve Her Engineering Journey](https://www.metacareers.com/life/embracing-change-to-evolve-her-engineering-journey), Michelle T., Software Engineer, Commerce Engineering
|
||||
- [Help 10 People—or Billions? Engineering Impact on a Global Scale](https://www.metacareers.com/blog/help-10-peopleor-billions/), Nishita A., Software Engineering Manager, Commerce Engineering
|
||||
- [Embracing Change to Evolve Her Engineering Journey](https://www.metacareers.com/blog/embracing-change-to-evolve-her-engineering-journey/), Michelle T., Software Engineer, Commerce Engineering
|
||||
|
||||
On the Ads and Business organization, there are these teams:
|
||||
|
||||
- **Business Integrity**: They work on building tools to catch bad advertisers (advertisers who create ads which violate our policies). They want to maximize Business Integrity outcomes by building a human review system for ads & commerce on Meta, driving end-to-end improvements in the workflows, and providing best-in-class tools to IP rights holders, etc.
|
||||
- [Software Engineering in APAC: Building for Rapid Growth](https://www.metacareers.com/life/software-engineering-in-apac)
|
||||
- [Curiosity and Passion: Software Engineering at Facebook](https://www.metacareers.com/life/curiosity-and-passion-software-engineering-at-facebook), Henry B., Software Engineer, Business Integrity
|
||||
- [Software Engineering in APAC: Building for Rapid Growth](https://www.metacareers.com/blog/software-engineering-in-apac/)
|
||||
- **Business Support Platform**: They redefine the support experience across all Meta business products, making it available, effective and effortless for all businesses. They make sure businesses can identify the help resources available to them when they need assistance in accomplishing their goals across Meta's suite of business tools. Their tools will also effortlessly help marketers diagnose their issues and connect them to the best solution to solve their problem. They have also some investment into the machine learning space.
|
||||
- **Business Messaging Commerce**: They build products that enable the Business Messaging ecosystem across Messenger, Instagram, and WhatsApp.
|
||||
|
||||
Enterprise Engineering has a sizable presence in Singapore as well:
|
||||
|
||||
- [Enterprise Engineering in APAC: Building Products That Scale](https://www.metacareers.com/life/enterprise-engineering-in-apac)
|
||||
- [Opportunity and Trust: Growing an Engineering Career at Meta](https://www.metacareers.com/life/opportunity-and-trust-growing-an-engineering-career-at-facebook), Shuhong W., Enterprise Engineering Manager
|
||||
- [Enterprise Engineering in APAC: Building Products That Scale](https://www.metacareers.com/blog/enterprise-engineering-in-apac/)
|
||||
- [Opportunity and Trust: Growing an Engineering Career at Meta](https://www.metacareers.com/blog/opportunity-and-trust-growing-an-engineering-career-at-facebook/), Shuhong W., Enterprise Engineering Manager
|
||||
|
||||
## Career progression/compensation
|
||||
|
||||
|
@ -19,7 +19,7 @@ Before I share my resources and how to get a gentle start on this handbook, let
|
||||
|
||||
In most companies, the resume stage is the most important as it is the first stage that you will need to clear! For undergraduates, most hiring managers would only look at resumes that are within one page. The moment the second page is seen, they will not tend to consider. Hence, here are some tips that can help you to prepare your resume in under an hour to reduce your agony.
|
||||
|
||||
1. Use a <strong>career hiring tool</strong> like [Kinobi](https://app.kinobi.asia/resume). Kinobi saves you time in having to fix alignments unlike word as this career tool formats everything for you. Furthermore, they help you to score your resume so that you know where you stand when applying for a job.
|
||||
1. Use a <strong>career hiring tool</strong> like [Kinobi](https://kinobi.tech/resume). Kinobi saves you time in having to fix alignments unlike word as this career tool formats everything for you. Furthermore, they help you to score your resume so that you know where you stand when applying for a job.
|
||||
|
||||
2. As far as possible, <strong>attend career talks</strong> by your favorite companies because hiring managers are there and you can get some feedback about your resume. It is indeed helpful because you know what to look out for when applying.
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
{
|
||||
"slug": "two-sum",
|
||||
"title": "Two Sum",
|
||||
"url": "https://leetcode.com/problems/two-sum",
|
||||
"url": "https://leetcode.com/problems/two-sum/",
|
||||
"duration": 15,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -14,7 +14,7 @@
|
||||
{
|
||||
"slug": "valid-parentheses",
|
||||
"title": "Valid Parentheses",
|
||||
"url": "https://leetcode.com/problems/valid-parentheses",
|
||||
"url": "https://leetcode.com/problems/valid-parentheses/",
|
||||
"duration": 20,
|
||||
"epi": 3,
|
||||
"difficulty": "Easy",
|
||||
@ -25,7 +25,7 @@
|
||||
{
|
||||
"slug": "merge-two-sorted-lists",
|
||||
"title": "Merge Two Sorted Lists",
|
||||
"url": "https://leetcode.com/problems/merge-two-sorted-lists",
|
||||
"url": "https://leetcode.com/problems/merge-two-sorted-lists/",
|
||||
"duration": 20,
|
||||
"epi": 0,
|
||||
"difficulty": "Easy",
|
||||
@ -36,7 +36,7 @@
|
||||
{
|
||||
"slug": "best-time-to-buy-and-sell-stock",
|
||||
"title": "Best Time to Buy and Sell Stock",
|
||||
"url": "https://leetcode.com/problems/best-time-to-buy-and-sell-stock",
|
||||
"url": "https://leetcode.com/problems/best-time-to-buy-and-sell-stock/",
|
||||
"duration": 20,
|
||||
"epi": 0,
|
||||
"difficulty": "Easy",
|
||||
@ -47,7 +47,7 @@
|
||||
{
|
||||
"slug": "valid-palindrome",
|
||||
"title": "Valid Palindrome",
|
||||
"url": "https://leetcode.com/problems/valid-palindrome",
|
||||
"url": "https://leetcode.com/problems/valid-palindrome/",
|
||||
"duration": 15,
|
||||
"epi": 2,
|
||||
"difficulty": "Easy",
|
||||
@ -58,7 +58,7 @@
|
||||
{
|
||||
"slug": "invert-binary-tree",
|
||||
"title": "Invert Binary Tree",
|
||||
"url": "https://leetcode.com/problems/invert-binary-tree",
|
||||
"url": "https://leetcode.com/problems/invert-binary-tree/",
|
||||
"duration": 15,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -69,7 +69,7 @@
|
||||
{
|
||||
"slug": "valid-anagram",
|
||||
"title": "Valid Anagram",
|
||||
"url": "https://leetcode.com/problems/valid-anagram",
|
||||
"url": "https://leetcode.com/problems/valid-anagram/",
|
||||
"duration": 15,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -80,7 +80,7 @@
|
||||
{
|
||||
"slug": "binary-search",
|
||||
"title": "Binary Search",
|
||||
"url": "https://leetcode.com/problems/binary-search",
|
||||
"url": "https://leetcode.com/problems/binary-search/",
|
||||
"duration": 15,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -91,7 +91,7 @@
|
||||
{
|
||||
"slug": "flood-fill",
|
||||
"title": "Flood Fill",
|
||||
"url": "https://leetcode.com/problems/flood-fill",
|
||||
"url": "https://leetcode.com/problems/flood-fill/",
|
||||
"duration": 20,
|
||||
"epi": 2,
|
||||
"difficulty": "Easy",
|
||||
@ -102,7 +102,7 @@
|
||||
{
|
||||
"slug": "lowest-common-ancestor-of-a-binary-search-tree",
|
||||
"title": "Lowest Common Ancestor of a Binary Search Tree",
|
||||
"url": "https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree",
|
||||
"url": "https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/",
|
||||
"duration": 20,
|
||||
"epi": 1,
|
||||
"difficulty": "Easy",
|
||||
@ -113,7 +113,7 @@
|
||||
{
|
||||
"slug": "balanced-binary-tree",
|
||||
"title": "Balanced Binary Tree",
|
||||
"url": "https://leetcode.com/problems/balanced-binary-tree",
|
||||
"url": "https://leetcode.com/problems/balanced-binary-tree/",
|
||||
"duration": 15,
|
||||
"epi": 0,
|
||||
"difficulty": "Easy",
|
||||
@ -124,7 +124,7 @@
|
||||
{
|
||||
"slug": "linked-list-cycle",
|
||||
"title": "Linked List Cycle",
|
||||
"url": "https://leetcode.com/problems/linked-list-cycle",
|
||||
"url": "https://leetcode.com/problems/linked-list-cycle/",
|
||||
"duration": 20,
|
||||
"epi": 1,
|
||||
"difficulty": "Easy",
|
||||
@ -137,7 +137,7 @@
|
||||
{
|
||||
"slug": "implement-queue-using-stacks",
|
||||
"title": "Implement Queue using Stacks",
|
||||
"url": "https://leetcode.com/problems/implement-queue-using-stacks",
|
||||
"url": "https://leetcode.com/problems/implement-queue-using-stacks/",
|
||||
"duration": 20,
|
||||
"epi": 3,
|
||||
"difficulty": "Easy",
|
||||
@ -148,7 +148,7 @@
|
||||
{
|
||||
"slug": "first-bad-version",
|
||||
"title": "First Bad Version",
|
||||
"url": "https://leetcode.com/problems/first-bad-version",
|
||||
"url": "https://leetcode.com/problems/first-bad-version/",
|
||||
"duration": 20,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -159,7 +159,7 @@
|
||||
{
|
||||
"slug": "ransom-note",
|
||||
"title": "Ransom Note",
|
||||
"url": "https://leetcode.com/problems/ransom-note",
|
||||
"url": "https://leetcode.com/problems/ransom-note/",
|
||||
"duration": 15,
|
||||
"epi": 0,
|
||||
"difficulty": "Easy",
|
||||
@ -170,7 +170,7 @@
|
||||
{
|
||||
"slug": "climbing-stairs",
|
||||
"title": "Climbing Stairs",
|
||||
"url": "https://leetcode.com/problems/climbing-stairs",
|
||||
"url": "https://leetcode.com/problems/climbing-stairs/",
|
||||
"duration": 20,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -181,7 +181,7 @@
|
||||
{
|
||||
"slug": "longest-palindrome",
|
||||
"title": "Longest Palindrome",
|
||||
"url": "https://leetcode.com/problems/longest-palindrome",
|
||||
"url": "https://leetcode.com/problems/longest-palindrome/",
|
||||
"duration": 20,
|
||||
"epi": 2,
|
||||
"difficulty": "Easy",
|
||||
@ -192,7 +192,7 @@
|
||||
{
|
||||
"slug": "reverse-linked-list",
|
||||
"title": "Reverse Linked List",
|
||||
"url": "https://leetcode.com/problems/reverse-linked-list",
|
||||
"url": "https://leetcode.com/problems/reverse-linked-list/",
|
||||
"duration": 20,
|
||||
"epi": 1,
|
||||
"difficulty": "Easy",
|
||||
@ -203,7 +203,7 @@
|
||||
{
|
||||
"slug": "majority-element",
|
||||
"title": "Majority Element",
|
||||
"url": "https://leetcode.com/problems/majority-element",
|
||||
"url": "https://leetcode.com/problems/majority-element/",
|
||||
"duration": 20,
|
||||
"epi": 2,
|
||||
"difficulty": "Easy",
|
||||
@ -214,7 +214,7 @@
|
||||
{
|
||||
"slug": "add-binary",
|
||||
"title": "Add Binary",
|
||||
"url": "https://leetcode.com/problems/add-binary",
|
||||
"url": "https://leetcode.com/problems/add-binary/",
|
||||
"duration": 15,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -225,7 +225,7 @@
|
||||
{
|
||||
"slug": "diameter-of-binary-tree",
|
||||
"title": "Diameter of Binary Tree",
|
||||
"url": "https://leetcode.com/problems/diameter-of-binary-tree",
|
||||
"url": "https://leetcode.com/problems/diameter-of-binary-tree/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -236,7 +236,7 @@
|
||||
{
|
||||
"slug": "middle-of-the-linked-list",
|
||||
"title": "Middle of the Linked List",
|
||||
"url": "https://leetcode.com/problems/middle-of-the-linked-list",
|
||||
"url": "https://leetcode.com/problems/middle-of-the-linked-list/",
|
||||
"duration": 20,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -247,7 +247,7 @@
|
||||
{
|
||||
"slug": "maximum-depth-of-binary-tree",
|
||||
"title": "Maximum Depth of Binary Tree",
|
||||
"url": "https://leetcode.com/problems/maximum-depth-of-binary-tree",
|
||||
"url": "https://leetcode.com/problems/maximum-depth-of-binary-tree/",
|
||||
"duration": 15,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -258,7 +258,7 @@
|
||||
{
|
||||
"slug": "contains-duplicate",
|
||||
"title": "Contains Duplicate",
|
||||
"url": "https://leetcode.com/problems/contains-duplicate",
|
||||
"url": "https://leetcode.com/problems/contains-duplicate/",
|
||||
"duration": 15,
|
||||
"epi": null,
|
||||
"difficulty": "Easy",
|
||||
@ -271,7 +271,7 @@
|
||||
{
|
||||
"slug": "min-stack",
|
||||
"title": "Min Stack",
|
||||
"url": "https://leetcode.com/problems/min-stack",
|
||||
"url": "https://leetcode.com/problems/min-stack/",
|
||||
"duration": 20,
|
||||
"epi": 0,
|
||||
"difficulty": "Medium",
|
||||
@ -282,7 +282,7 @@
|
||||
{
|
||||
"slug": "maximum-subarray",
|
||||
"title": "Maximum Subarray",
|
||||
"url": "https://leetcode.com/problems/maximum-subarray",
|
||||
"url": "https://leetcode.com/problems/maximum-subarray/",
|
||||
"duration": 20,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -293,7 +293,7 @@
|
||||
{
|
||||
"slug": "insert-interval",
|
||||
"title": "Insert Interval",
|
||||
"url": "https://leetcode.com/problems/insert-interval",
|
||||
"url": "https://leetcode.com/problems/insert-interval/",
|
||||
"duration": 25,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -304,7 +304,7 @@
|
||||
{
|
||||
"slug": "01-matrix",
|
||||
"title": "01 Matrix",
|
||||
"url": "https://leetcode.com/problems/01-matrix",
|
||||
"url": "https://leetcode.com/problems/01-matrix/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -315,7 +315,7 @@
|
||||
{
|
||||
"slug": "k-closest-points-to-origin",
|
||||
"title": "K Closest Points to Origin",
|
||||
"url": "https://leetcode.com/problems/k-closest-points-to-origin",
|
||||
"url": "https://leetcode.com/problems/k-closest-points-to-origin/",
|
||||
"duration": 30,
|
||||
"epi": 1,
|
||||
"difficulty": "Medium",
|
||||
@ -326,7 +326,7 @@
|
||||
{
|
||||
"slug": "longest-substring-without-repeating-characters",
|
||||
"title": "Longest Substring Without Repeating Characters",
|
||||
"url": "https://leetcode.com/problems/longest-substring-without-repeating-characters",
|
||||
"url": "https://leetcode.com/problems/longest-substring-without-repeating-characters/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -337,7 +337,7 @@
|
||||
{
|
||||
"slug": "3sum",
|
||||
"title": "3Sum",
|
||||
"url": "https://leetcode.com/problems/3sum",
|
||||
"url": "https://leetcode.com/problems/3sum/",
|
||||
"duration": 30,
|
||||
"epi": 0,
|
||||
"difficulty": "Medium",
|
||||
@ -348,7 +348,7 @@
|
||||
{
|
||||
"slug": "binary-tree-level-order-traversal",
|
||||
"title": "Binary Tree Level Order Traversal",
|
||||
"url": "https://leetcode.com/problems/binary-tree-level-order-traversal",
|
||||
"url": "https://leetcode.com/problems/binary-tree-level-order-traversal/",
|
||||
"duration": 20,
|
||||
"epi": 1,
|
||||
"difficulty": "Medium",
|
||||
@ -359,7 +359,7 @@
|
||||
{
|
||||
"slug": "clone-graph",
|
||||
"title": "Clone Graph",
|
||||
"url": "https://leetcode.com/problems/clone-graph",
|
||||
"url": "https://leetcode.com/problems/clone-graph/",
|
||||
"duration": 25,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -370,7 +370,7 @@
|
||||
{
|
||||
"slug": "evaluate-reverse-polish-notation",
|
||||
"title": "Evaluate Reverse Polish Notation",
|
||||
"url": "https://leetcode.com/problems/evaluate-reverse-polish-notation",
|
||||
"url": "https://leetcode.com/problems/evaluate-reverse-polish-notation/",
|
||||
"duration": 30,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -383,7 +383,7 @@
|
||||
{
|
||||
"slug": "course-schedule",
|
||||
"title": "Course Schedule",
|
||||
"url": "https://leetcode.com/problems/course-schedule",
|
||||
"url": "https://leetcode.com/problems/course-schedule/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -394,7 +394,7 @@
|
||||
{
|
||||
"slug": "implement-trie-prefix-tree",
|
||||
"title": "Implement Trie (Prefix Tree)",
|
||||
"url": "https://leetcode.com/problems/implement-trie-prefix-tree",
|
||||
"url": "https://leetcode.com/problems/implement-trie-prefix-tree/",
|
||||
"duration": 35,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -405,7 +405,7 @@
|
||||
{
|
||||
"slug": "coin-change",
|
||||
"title": "Coin Change",
|
||||
"url": "https://leetcode.com/problems/coin-change",
|
||||
"url": "https://leetcode.com/problems/coin-change/",
|
||||
"duration": 25,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -416,7 +416,7 @@
|
||||
{
|
||||
"slug": "product-of-array-except-self",
|
||||
"title": "Product of Array Except Self",
|
||||
"url": "https://leetcode.com/problems/product-of-array-except-self",
|
||||
"url": "https://leetcode.com/problems/product-of-array-except-self/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -427,7 +427,7 @@
|
||||
{
|
||||
"slug": "validate-binary-search-tree",
|
||||
"title": "Validate Binary Search Tree",
|
||||
"url": "https://leetcode.com/problems/validate-binary-search-tree",
|
||||
"url": "https://leetcode.com/problems/validate-binary-search-tree/",
|
||||
"duration": 20,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -438,7 +438,7 @@
|
||||
{
|
||||
"slug": "number-of-islands",
|
||||
"title": "Number of Islands",
|
||||
"url": "https://leetcode.com/problems/number-of-islands",
|
||||
"url": "https://leetcode.com/problems/number-of-islands/",
|
||||
"duration": 25,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -449,7 +449,7 @@
|
||||
{
|
||||
"slug": "rotting-oranges",
|
||||
"title": "Rotting Oranges",
|
||||
"url": "https://leetcode.com/problems/rotting-oranges",
|
||||
"url": "https://leetcode.com/problems/rotting-oranges/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -460,7 +460,7 @@
|
||||
{
|
||||
"slug": "search-in-rotated-sorted-array",
|
||||
"title": "Search in Rotated Sorted Array",
|
||||
"url": "https://leetcode.com/problems/search-in-rotated-sorted-array",
|
||||
"url": "https://leetcode.com/problems/search-in-rotated-sorted-array/",
|
||||
"duration": 30,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -473,7 +473,7 @@
|
||||
{
|
||||
"slug": "combination-sum",
|
||||
"title": "Combination Sum",
|
||||
"url": "https://leetcode.com/problems/combination-sum",
|
||||
"url": "https://leetcode.com/problems/combination-sum/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -484,7 +484,7 @@
|
||||
{
|
||||
"slug": "permutations",
|
||||
"title": "Permutations",
|
||||
"url": "https://leetcode.com/problems/permutations",
|
||||
"url": "https://leetcode.com/problems/permutations/",
|
||||
"duration": 30,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -495,7 +495,7 @@
|
||||
{
|
||||
"slug": "merge-intervals",
|
||||
"title": "Merge Intervals",
|
||||
"url": "https://leetcode.com/problems/merge-intervals",
|
||||
"url": "https://leetcode.com/problems/merge-intervals/",
|
||||
"duration": 30,
|
||||
"epi": 3,
|
||||
"difficulty": "Medium",
|
||||
@ -506,7 +506,7 @@
|
||||
{
|
||||
"slug": "lowest-common-ancestor-of-a-binary-tree",
|
||||
"title": "Lowest Common Ancestor of a Binary Tree",
|
||||
"url": "https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree",
|
||||
"url": "https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/",
|
||||
"duration": 25,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -517,7 +517,7 @@
|
||||
{
|
||||
"slug": "time-based-key-value-store",
|
||||
"title": "Time Based Key-Value Store",
|
||||
"url": "https://leetcode.com/problems/time-based-key-value-store",
|
||||
"url": "https://leetcode.com/problems/time-based-key-value-store/",
|
||||
"duration": 35,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -528,7 +528,7 @@
|
||||
{
|
||||
"slug": "accounts-merge",
|
||||
"title": "Accounts Merge",
|
||||
"url": "https://leetcode.com/problems/accounts-merge",
|
||||
"url": "https://leetcode.com/problems/accounts-merge/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -539,7 +539,7 @@
|
||||
{
|
||||
"slug": "sort-colors",
|
||||
"title": "Sort Colors",
|
||||
"url": "https://leetcode.com/problems/sort-colors",
|
||||
"url": "https://leetcode.com/problems/sort-colors/",
|
||||
"duration": 25,
|
||||
"epi": 0,
|
||||
"difficulty": "Medium",
|
||||
@ -550,7 +550,7 @@
|
||||
{
|
||||
"slug": "word-break",
|
||||
"title": "Word Break",
|
||||
"url": "https://leetcode.com/problems/word-break",
|
||||
"url": "https://leetcode.com/problems/word-break/",
|
||||
"duration": 30,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -563,7 +563,7 @@
|
||||
{
|
||||
"slug": "partition-equal-subset-sum",
|
||||
"title": "Partition Equal Subset Sum",
|
||||
"url": "https://leetcode.com/problems/partition-equal-subset-sum",
|
||||
"url": "https://leetcode.com/problems/partition-equal-subset-sum/",
|
||||
"duration": 30,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -574,7 +574,7 @@
|
||||
{
|
||||
"slug": "string-to-integer-atoi",
|
||||
"title": "String to Integer (atoi)",
|
||||
"url": "https://leetcode.com/problems/string-to-integer-atoi",
|
||||
"url": "https://leetcode.com/problems/string-to-integer-atoi/",
|
||||
"duration": 25,
|
||||
"epi": 0,
|
||||
"difficulty": "Medium",
|
||||
@ -585,7 +585,7 @@
|
||||
{
|
||||
"slug": "spiral-matrix",
|
||||
"title": "Spiral Matrix",
|
||||
"url": "https://leetcode.com/problems/spiral-matrix",
|
||||
"url": "https://leetcode.com/problems/spiral-matrix/",
|
||||
"duration": 25,
|
||||
"epi": 1,
|
||||
"difficulty": "Medium",
|
||||
@ -596,7 +596,7 @@
|
||||
{
|
||||
"slug": "subsets",
|
||||
"title": "Subsets",
|
||||
"url": "https://leetcode.com/problems/subsets",
|
||||
"url": "https://leetcode.com/problems/subsets/",
|
||||
"duration": 30,
|
||||
"epi": 3,
|
||||
"difficulty": "Medium",
|
||||
@ -607,7 +607,7 @@
|
||||
{
|
||||
"slug": "binary-tree-right-side-view",
|
||||
"title": "Binary Tree Right Side View",
|
||||
"url": "https://leetcode.com/problems/binary-tree-right-side-view",
|
||||
"url": "https://leetcode.com/problems/binary-tree-right-side-view/",
|
||||
"duration": 20,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -618,7 +618,7 @@
|
||||
{
|
||||
"slug": "longest-palindromic-substring",
|
||||
"title": "Longest Palindromic Substring",
|
||||
"url": "https://leetcode.com/problems/longest-palindromic-substring",
|
||||
"url": "https://leetcode.com/problems/longest-palindromic-substring/",
|
||||
"duration": 25,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -629,7 +629,7 @@
|
||||
{
|
||||
"slug": "unique-paths",
|
||||
"title": "Unique Paths",
|
||||
"url": "https://leetcode.com/problems/unique-paths",
|
||||
"url": "https://leetcode.com/problems/unique-paths/",
|
||||
"duration": 20,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -640,7 +640,7 @@
|
||||
{
|
||||
"slug": "construct-binary-tree-from-preorder-and-inorder-traversal",
|
||||
"title": "Construct Binary Tree from Preorder and Inorder Traversal",
|
||||
"url": "https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal",
|
||||
"url": "https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/",
|
||||
"duration": 25,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -651,7 +651,7 @@
|
||||
{
|
||||
"slug": "container-with-most-water",
|
||||
"title": "Container With Most Water",
|
||||
"url": "https://leetcode.com/problems/container-with-most-water",
|
||||
"url": "https://leetcode.com/problems/container-with-most-water/",
|
||||
"duration": 35,
|
||||
"epi": 2,
|
||||
"difficulty": "Medium",
|
||||
@ -664,7 +664,7 @@
|
||||
{
|
||||
"slug": "letter-combinations-of-a-phone-number",
|
||||
"title": "Letter Combinations of a Phone Number",
|
||||
"url": "https://leetcode.com/problems/letter-combinations-of-a-phone-number",
|
||||
"url": "https://leetcode.com/problems/letter-combinations-of-a-phone-number/",
|
||||
"duration": 30,
|
||||
"epi": 3,
|
||||
"difficulty": "Medium",
|
||||
@ -675,7 +675,7 @@
|
||||
{
|
||||
"slug": "word-search",
|
||||
"title": "Word Search",
|
||||
"url": "https://leetcode.com/problems/word-search",
|
||||
"url": "https://leetcode.com/problems/word-search/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -686,7 +686,7 @@
|
||||
{
|
||||
"slug": "find-all-anagrams-in-a-string",
|
||||
"title": "Find All Anagrams in a String",
|
||||
"url": "https://leetcode.com/problems/find-all-anagrams-in-a-string",
|
||||
"url": "https://leetcode.com/problems/find-all-anagrams-in-a-string/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -697,7 +697,7 @@
|
||||
{
|
||||
"slug": "minimum-height-trees",
|
||||
"title": "Minimum Height Trees",
|
||||
"url": "https://leetcode.com/problems/minimum-height-trees",
|
||||
"url": "https://leetcode.com/problems/minimum-height-trees/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -708,7 +708,7 @@
|
||||
{
|
||||
"slug": "task-scheduler",
|
||||
"title": "Task Scheduler",
|
||||
"url": "https://leetcode.com/problems/task-scheduler",
|
||||
"url": "https://leetcode.com/problems/task-scheduler/",
|
||||
"duration": 35,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -719,7 +719,7 @@
|
||||
{
|
||||
"slug": "lru-cache",
|
||||
"title": "LRU Cache",
|
||||
"url": "https://leetcode.com/problems/lru-cache",
|
||||
"url": "https://leetcode.com/problems/lru-cache/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -730,7 +730,7 @@
|
||||
{
|
||||
"slug": "kth-smallest-element-in-a-bst",
|
||||
"title": "Kth Smallest Element in a BST",
|
||||
"url": "https://leetcode.com/problems/kth-smallest-element-in-a-bst",
|
||||
"url": "https://leetcode.com/problems/kth-smallest-element-in-a-bst/",
|
||||
"duration": 25,
|
||||
"epi": null,
|
||||
"difficulty": "Medium",
|
||||
@ -741,7 +741,7 @@
|
||||
{
|
||||
"slug": "minimum-window-substring",
|
||||
"title": "Minimum Window Substring",
|
||||
"url": "https://leetcode.com/problems/minimum-window-substring",
|
||||
"url": "https://leetcode.com/problems/minimum-window-substring/",
|
||||
"duration": 30,
|
||||
"epi": 3,
|
||||
"difficulty": "Hard",
|
||||
@ -754,7 +754,7 @@
|
||||
{
|
||||
"slug": "serialize-and-deserialize-binary-tree",
|
||||
"title": "Serialize and Deserialize Binary Tree",
|
||||
"url": "https://leetcode.com/problems/serialize-and-deserialize-binary-tree",
|
||||
"url": "https://leetcode.com/problems/serialize-and-deserialize-binary-tree/",
|
||||
"duration": 40,
|
||||
"epi": null,
|
||||
"difficulty": "Hard",
|
||||
@ -765,7 +765,7 @@
|
||||
{
|
||||
"slug": "trapping-rain-water",
|
||||
"title": "Trapping Rain Water",
|
||||
"url": "https://leetcode.com/problems/trapping-rain-water",
|
||||
"url": "https://leetcode.com/problems/trapping-rain-water/",
|
||||
"duration": 35,
|
||||
"epi": null,
|
||||
"difficulty": "Hard",
|
||||
@ -776,7 +776,7 @@
|
||||
{
|
||||
"slug": "find-median-from-data-stream",
|
||||
"title": "Find Median from Data Stream",
|
||||
"url": "https://leetcode.com/problems/find-median-from-data-stream",
|
||||
"url": "https://leetcode.com/problems/find-median-from-data-stream/",
|
||||
"duration": 30,
|
||||
"epi": 3,
|
||||
"difficulty": "Hard",
|
||||
@ -787,7 +787,7 @@
|
||||
{
|
||||
"slug": "word-ladder",
|
||||
"title": "Word Ladder",
|
||||
"url": "https://leetcode.com/problems/word-ladder",
|
||||
"url": "https://leetcode.com/problems/word-ladder/",
|
||||
"duration": 45,
|
||||
"epi": null,
|
||||
"difficulty": "Hard",
|
||||
@ -798,7 +798,7 @@
|
||||
{
|
||||
"slug": "basic-calculator",
|
||||
"title": "Basic Calculator",
|
||||
"url": "https://leetcode.com/problems/basic-calculator",
|
||||
"url": "https://leetcode.com/problems/basic-calculator/",
|
||||
"duration": 40,
|
||||
"epi": null,
|
||||
"difficulty": "Hard",
|
||||
@ -809,7 +809,7 @@
|
||||
{
|
||||
"slug": "maximum-profit-in-job-scheduling",
|
||||
"title": "Maximum Profit in Job Scheduling",
|
||||
"url": "https://leetcode.com/problems/maximum-profit-in-job-scheduling",
|
||||
"url": "https://leetcode.com/problems/maximum-profit-in-job-scheduling/",
|
||||
"duration": 45,
|
||||
"epi": null,
|
||||
"difficulty": "Hard",
|
||||
@ -820,7 +820,7 @@
|
||||
{
|
||||
"slug": "merge-k-sorted-lists",
|
||||
"title": "Merge k Sorted Lists",
|
||||
"url": "https://leetcode.com/problems/merge-k-sorted-lists",
|
||||
"url": "https://leetcode.com/problems/merge-k-sorted-lists/",
|
||||
"duration": 30,
|
||||
"epi": null,
|
||||
"difficulty": "Hard",
|
||||
@ -831,7 +831,7 @@
|
||||
{
|
||||
"slug": "largest-rectangle-in-histogram",
|
||||
"title": "Largest Rectangle in Histogram",
|
||||
"url": "https://leetcode.com/problems/largest-rectangle-in-histogram",
|
||||
"url": "https://leetcode.com/problems/largest-rectangle-in-histogram/",
|
||||
"duration": 35,
|
||||
"epi": 3,
|
||||
"difficulty": "Hard",
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
AlgoMonster aims to help you ace the technical interview **in the shortest time possible**. By Google engineers, AlgoMonster uses a data-driven approach to teach you the most useful key question patterns and has contents to help you quickly revise basic data structures and algorithms. Best of all, AlgoMonster is not subscription-based - pay a one-time fee and get **lifetime access**. [**Join today for a 70% discount →**](https://shareasale.com/r.cfm?b=1873647&u=3114753&m=114505&urllink=&afftrack=)
|
||||
|
||||
### [Grokking the Coding Interview: Patterns for Coding Questions](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
### [Grokking the Coding Interview: Patterns for Coding Questions](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
This course on by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages along with step-by-step visualizations. **Learn and understand patterns, not memorize answers!** [**Get lifetime access now →**](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
This course on by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages along with step-by-step visualizations. **Learn and understand patterns, not memorize answers!** [**Get lifetime access now →**](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
### [Master the Coding Interview: Data Structures + Algorithms](https://www.udemy.com/course/master-the-coding-interview-data-structures-algorithms/)
|
||||
|
||||
|
@ -102,7 +102,7 @@ Can you sort the array? Sometimes sorting the array first may significantly simp
|
||||
|
||||
### Precomputation
|
||||
|
||||
For questions where summation or multiplication of a subarray is involved, pre-computation using hashing or a prefix/suffix sum/product might be useful. Examples: [Product of Array Except Self](https://leetcode.com/problems/product-of-array-except-self/), [Minimum Size Subarray Sum](https://leetcode.com/problems/minimum-size-subarray-sum/), [LeetCode questions tagged "prefix-sum"](https://leetcode.com/tag/prefix-sum/)
|
||||
For questions where summation or multiplication of a subarray is involved, pre-computation using hashing or a prefix/suffix sum/product might be useful. Examples: [Product of Array Except Self](https://leetcode.com/problems/product-of-array-except-self/), [Minimum Size Subarray Sum](https://leetcode.com/problems/minimum-size-subarray-sum/), [LeetCode questions tagged "prefix-sum"](https://leetcode.com/problem-list/prefix-sum/)
|
||||
|
||||
### Index as a hash key
|
||||
|
||||
|
@ -25,7 +25,7 @@ Dynamic Programming (DP) is usually used to solve optimization problems. The onl
|
||||
|
||||
## Learning resources
|
||||
|
||||
- [Demystifying Dynamic Programming](https://medium.freecodecamp.org/demystifying-dynamic-programming-3efafb8d4296)
|
||||
- [Demystifying Dynamic Programming](https://www.freecodecamp.org/news/demystifying-dynamic-programming-3efafb8d4296)
|
||||
- [Dynamic Programming – 7 Steps to Solve any DP Interview Problem](https://dev.to/nikolaotasevic/dynamic-programming--7-steps-to-solve-any-dp-interview-problem-3870)
|
||||
- [Less Repetition, More Dynamic Programming](https://medium.com/basecs/less-repetition-more-dynamic-programming-43d29830a630), basecs
|
||||
- [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming), James Aspnes, Yale University
|
||||
@ -60,8 +60,8 @@ _These are recommended questions to practice after you have studied for the topi
|
||||
|
||||
import AlgorithmCourses from '../\_courses/AlgorithmCourses.md'
|
||||
|
||||
### [Grokking Dynamic Programming Patterns for Coding Interviews](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-dynamic-programming)
|
||||
### [Grokking Dynamic Programming Patterns for Coding Interviews](https://www.designgurus.io/course/grokking-dynamic-programming?aff=kJSIoU)
|
||||
|
||||
Brought to you by the same folks behind the famous ["Grokking the Coding Interview"](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview), this is one of the rare few courses focused on helping you get better at Dynamic Programming questions. If you are interviewing for companies who are famous for asking Dynamic Programming questions (-cough- Google -cough-), this course should be helpful.
|
||||
Brought to you by the same folks behind the famous ["Grokking the Coding Interview"](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU), this is one of the rare few courses focused on helping you get better at Dynamic Programming questions. If you are interviewing for companies who are famous for asking Dynamic Programming questions (-cough- Google -cough-), this course should be helpful.
|
||||
|
||||
<AlgorithmCourses />
|
||||
|
@ -155,7 +155,7 @@ While DFS is implemented using recursion in this sample, it could also be implem
|
||||
|
||||
:::
|
||||
|
||||
For additional tips on BFS and DFS, you can refer to this [LeetCode post](https://leetcode.com/problems/pacific-atlantic-water-flow/discuss/90774/Python-solution-with-detailed-explanation)
|
||||
For additional tips on BFS and DFS, you can refer to this [LeetCode post](https://leetcode.com/problems/pacific-atlantic-water-flow/discuss/90774/Python-solution-with-detailed-explanation/)
|
||||
|
||||
### Topological sorting
|
||||
|
||||
@ -197,7 +197,7 @@ print(graph_topo_sort(4, [[0, 1], [0, 2], [2, 1], [3, 0]]))
|
||||
_These are essential questions to practice if you're studying for this topic._
|
||||
|
||||
- [Number of Islands](https://leetcode.com/problems/number-of-islands/)
|
||||
- [Flood Fill](https://leetcode.com/problems/flood-fill)
|
||||
- [Flood Fill](https://leetcode.com/problems/flood-fill/)
|
||||
- [01 Matrix](https://leetcode.com/problems/01-matrix/)
|
||||
|
||||
## Recommended practice questions
|
||||
@ -206,7 +206,7 @@ _These are recommended questions to practice after you have studied for the topi
|
||||
|
||||
- Breadth-first search
|
||||
- [Rotting Oranges](https://leetcode.com/problems/rotting-oranges/)
|
||||
- [Minimum Knight Moves (LeetCode Premium)](https://leetcode.com/problems/minimum-knight-moves)
|
||||
- [Minimum Knight Moves (LeetCode Premium)](https://leetcode.com/problems/minimum-knight-moves/)
|
||||
- Either search
|
||||
- [Clone Graph](https://leetcode.com/problems/clone-graph/)
|
||||
- [Pacific Atlantic Water Flow](https://leetcode.com/problems/pacific-atlantic-water-flow/)
|
||||
|
@ -43,7 +43,7 @@ In the case of hash collisions, there are a number of collision resolution techn
|
||||
|
||||
| Language | API |
|
||||
| --- | --- |
|
||||
| C++ | [`std::unordered_map`](https://docs.microsoft.com/en-us/cpp/standard-library/unordered-map) |
|
||||
| C++ | [`std::unordered_map`](https://learn.microsoft.com/en-us/cpp/standard-library/unordered-map) |
|
||||
| Java | [`java.util.Map`](https://docs.oracle.com/javase/10/docs/api/java/util/Map.html). Use [`java.util.HashMap`](https://docs.oracle.com/javase/10/docs/api/java/util/HashMap.html) |
|
||||
| Python | [`dict`](https://docs.python.org/3/tutorial/datastructures.html#dictionaries) |
|
||||
| JavaScript | [`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) or [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) |
|
||||
@ -68,8 +68,8 @@ _\* This is the average case, but in interviews we only care about the average c
|
||||
|
||||
_These are essential questions to practice if you're studying for this topic._
|
||||
|
||||
- [Two Sum](https://leetcode.com/problems/two-sum)
|
||||
- [Ransom Note](https://leetcode.com/problems/ransom-note)
|
||||
- [Two Sum](https://leetcode.com/problems/two-sum/)
|
||||
- [Ransom Note](https://leetcode.com/problems/ransom-note/)
|
||||
|
||||
## Recommended practice questions
|
||||
|
||||
|
@ -38,9 +38,9 @@ In the context of algorithm interviews, heaps and priority queues can be treated
|
||||
|
||||
| Language | API |
|
||||
| --- | --- |
|
||||
| C++ | [`std::priority_queue`](https://docs.microsoft.com/en-us/cpp/standard-library/priority-queue-class) |
|
||||
| C++ | [`std::priority_queue`](https://learn.microsoft.com/en-us/cpp/standard-library/priority-queue-class) |
|
||||
| Java | [`java.util.PriorityQueue`](https://docs.oracle.com/javase/10/docs/api/java/util/PriorityQueue.html) |
|
||||
| Python | [`heapq`](https://docs.python.org/library/heapq.html) |
|
||||
| Python | [`heapq`](https://docs.python.org/3/library/heapq.html) |
|
||||
| JavaScript | N/A |
|
||||
|
||||
## Time complexity
|
||||
|
@ -38,7 +38,7 @@ Breadth-first search is commonly implemented using queues.
|
||||
|
||||
| Language | API |
|
||||
| --- | --- |
|
||||
| C++ | [`std::queue`](https://docs.microsoft.com/en-us/cpp/standard-library/queue-class) |
|
||||
| C++ | [`std::queue`](https://learn.microsoft.com/en-us/cpp/standard-library/queue-class) |
|
||||
| Java | [`java.util.Queue`](https://docs.oracle.com/javase/10/docs/api/java/util/Queue.html).Use [`java.util.ArrayDeque`](https://docs.oracle.com/javase/10/docs/api/java/util/ArrayDeque.html) |
|
||||
| Python | [`queue`](https://docs.python.org/3/library/queue.html) |
|
||||
| JavaScript | N/A |
|
||||
@ -67,15 +67,15 @@ Most languages don't have a built-in Queue class which can be used, and candidat
|
||||
|
||||
_These are essential questions to practice if you're studying for this topic._
|
||||
|
||||
- [Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues)
|
||||
- [Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues/)
|
||||
|
||||
## Recommended practice questions
|
||||
|
||||
_These are recommended questions to practice after you have studied for the topic and have practiced the essential questions._
|
||||
|
||||
- [Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks)
|
||||
- [Design Circular Queue](https://leetcode.com/problems/design-circular-queue)
|
||||
- [Design Hit Counter (LeetCode Premium)](https://leetcode.com/problems/design-hit-counter)
|
||||
- [Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks/)
|
||||
- [Design Circular Queue](https://leetcode.com/problems/design-circular-queue/)
|
||||
- [Design Hit Counter (LeetCode Premium)](https://leetcode.com/problems/design-hit-counter/)
|
||||
|
||||
## Recommended courses
|
||||
|
||||
|
@ -45,7 +45,7 @@ Many algorithms relevant in coding interviews make heavy use of recursion - bina
|
||||
## Learning resources
|
||||
|
||||
- Readings
|
||||
- [Recursion](https://www.cs.utah.edu/~germain/PPS/Topics/recursion.html), University of Utah
|
||||
- [Recursion](https://users.cs.utah.edu/~germain/PPS/Topics/recursion.html), University of Utah
|
||||
- Videos
|
||||
- [Tail Recursion](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1), University of Washington
|
||||
|
||||
|
@ -45,8 +45,8 @@ While you're unlikely to be asked to implement a sorting algorithm from scratch
|
||||
- [Counting Linearly With Counting Sort](https://medium.com/basecs/counting-linearly-with-counting-sort-cd8516ae09b3), basecs
|
||||
- [Getting To The Root Of Sorting With Radix Sort](https://medium.com/basecs/getting-to-the-root-of-sorting-with-radix-sort-f8e9240d4224), basecs
|
||||
- Videos
|
||||
- [Heapsort](https://youtu.be/ryRfapIQHW0) ([slides](https://samuelalbanie.com/files/digest-slides/2022-12-brief-guide-to-heapsort-and-binary-heaps.pdf)), Samuel Albanie, University of Cambridge
|
||||
- [Quicksort](https://youtu.be/kbiKn1K08RM) ([slides](https://samuelalbanie.com/files/digest-slides/2023-01-brief-guide-to-quicksort.pdf)), Samuel Albanie, University of Cambridge
|
||||
- [Heapsort](https://www.youtube.com/watch?v=ryRfapIQHW0&feature=youtu.be) ([slides](https://samuelalbanie.com/files/digest-slides/2022-12-brief-guide-to-heapsort-and-binary-heaps.pdf)), Samuel Albanie, University of Cambridge
|
||||
- [Quicksort](https://www.youtube.com/watch?v=kbiKn1K08RM&feature=youtu.be) ([slides](https://samuelalbanie.com/files/digest-slides/2023-01-brief-guide-to-quicksort.pdf)), Samuel Albanie, University of Cambridge
|
||||
- [Lower bounds for comparison sorts](https://www.youtube.com/watch?v=JWSiXs9aB5U) ([slides](https://samuelalbanie.com/files/digest-slides/2023-01-brief-guide-to-comparison-sorting-lower-bounds.pdf)), Samuel Albanie, University of Cambridge
|
||||
- [Counting sort](https://www.youtube.com/watch?v=0aMcZpAySjw) ([slides](https://samuelalbanie.com/files/digest-slides/2023-01-brief-guide-to-counting-sort.pdf)), Samuel Albanie, University of Cambridge
|
||||
- [Radix sort](https://www.youtube.com/watch?v=HzPbzQi9404) ([slides](https://samuelalbanie.com/files/digest-slides/2023-01-brief-guide-to-radix-sort.pdf)), Samuel Albanie, University of Cambridge
|
||||
|
@ -38,7 +38,7 @@ Stacks are an important way of supporting nested or recursive function calls and
|
||||
|
||||
| Language | API |
|
||||
| --- | --- |
|
||||
| C++ | [`std::stack`](https://docs.microsoft.com/en-us/cpp/standard-library/stack-class) |
|
||||
| C++ | [`std::stack`](https://learn.microsoft.com/en-us/cpp/standard-library/stack-class) |
|
||||
| Java | [`java.util.Stack`](https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html) |
|
||||
| Python | Simulated using [List](https://docs.python.org/3/tutorial/datastructures.html) |
|
||||
| JavaScript | Simulated using [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) |
|
||||
@ -67,22 +67,22 @@ TODO: Monotonic stacks -->
|
||||
|
||||
_These are essential questions to practice if you're studying for this topic._
|
||||
|
||||
- [Valid Parentheses](https://leetcode.com/problems/valid-parentheses)
|
||||
- [Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks)
|
||||
- [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/)
|
||||
- [Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks/)
|
||||
|
||||
## Recommended practice questions
|
||||
|
||||
_These are recommended questions to practice after you have studied for the topic and have practiced the essential questions._
|
||||
|
||||
- [Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues/)
|
||||
- [Min Stack](https://leetcode.com/problems/min-stack)
|
||||
- [Asteroid Collision](https://leetcode.com/problems/asteroid-collision)
|
||||
- [Evaluate Reverse Polish Notation](https://leetcode.com/problems/evaluate-reverse-polish-notation)
|
||||
- [Basic Calculator](https://leetcode.com/problems/basic-calculator)
|
||||
- [Basic Calculator II](https://leetcode.com/problems/basic-calculator-ii)
|
||||
- [Daily Temperatures](https://leetcode.com/problems/daily-temperatures)
|
||||
- [Trapping Rain Water](https://leetcode.com/problems/trapping-rain-water)
|
||||
- [Largest Rectangle in Histogram](https://leetcode.com/problems/largest-rectangle-in-histogram)
|
||||
- [Min Stack](https://leetcode.com/problems/min-stack/)
|
||||
- [Asteroid Collision](https://leetcode.com/problems/asteroid-collision/)
|
||||
- [Evaluate Reverse Polish Notation](https://leetcode.com/problems/evaluate-reverse-polish-notation/)
|
||||
- [Basic Calculator](https://leetcode.com/problems/basic-calculator/)
|
||||
- [Basic Calculator II](https://leetcode.com/problems/basic-calculator-ii/)
|
||||
- [Daily Temperatures](https://leetcode.com/problems/daily-temperatures/)
|
||||
- [Trapping Rain Water](https://leetcode.com/problems/trapping-rain-water/)
|
||||
- [Largest Rectangle in Histogram](https://leetcode.com/problems/largest-rectangle-in-histogram/)
|
||||
|
||||
## Recommended courses
|
||||
|
||||
|
@ -119,7 +119,7 @@ When a question is about counting the number of palindromes, a common trick is t
|
||||
|
||||
_These are essential questions to practice if you're studying for this topic._
|
||||
|
||||
- [Valid Anagram](https://leetcode.com/problems/valid-anagram)
|
||||
- [Valid Anagram](https://leetcode.com/problems/valid-anagram/)
|
||||
- [Valid Palindrome](https://leetcode.com/problems/valid-palindrome/)
|
||||
- [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/)
|
||||
|
||||
@ -128,7 +128,7 @@ _These are essential questions to practice if you're studying for this topic._
|
||||
_These are recommended questions to practice after you have studied for the topic and have practiced the essential questions._
|
||||
|
||||
- [Longest Repeating Character Replacement](https://leetcode.com/problems/longest-repeating-character-replacement/)
|
||||
- [Find All Anagrams in a String](https://leetcode.com/problems/find-all-anagrams-in-a-string)
|
||||
- [Find All Anagrams in a String](https://leetcode.com/problems/find-all-anagrams-in-a-string/)
|
||||
- [Minimum Window Substring](https://leetcode.com/problems/minimum-window-substring/description/)
|
||||
- [Group Anagrams](https://leetcode.com/problems/group-anagrams/)
|
||||
- [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/)
|
||||
|
@ -29,7 +29,7 @@ Be familiar with implementing from scratch, a `Trie` class and its `add`, `remov
|
||||
|
||||
- Readings
|
||||
- [Trying to Understand Tries](https://medium.com/basecs/trying-to-understand-tries-3ec6bede0014), basecs
|
||||
- [Implement Trie (Prefix Tree)](https://leetcode.com/articles/implement-trie-prefix-tree/), LeetCode
|
||||
- [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/solution/), LeetCode
|
||||
- Additional (only if you have time)
|
||||
- [Compressing Radix Trees Without (Too Many) Tears](https://medium.com/basecs/compressing-radix-trees-without-too-many-tears-a2e658adb9a0), basecs
|
||||
|
||||
@ -56,14 +56,14 @@ Sometimes preprocessing a dictionary of words (given in a list) into a trie, wil
|
||||
|
||||
_These are essential questions to practice if you're studying for this topic._
|
||||
|
||||
- [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree)
|
||||
- [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/)
|
||||
|
||||
## Recommended practice questions
|
||||
|
||||
_These are recommended questions to practice after you have studied for the topic and have practiced the essential questions._
|
||||
|
||||
- [Add and Search Word](https://leetcode.com/problems/add-and-search-word-data-structure-design)
|
||||
- [Word Break](https://leetcode.com/problems/word-break)
|
||||
- [Add and Search Word](https://leetcode.com/problems/design-add-and-search-words-data-structure/)
|
||||
- [Word Break](https://leetcode.com/problems/word-break/)
|
||||
- [Word Search II](https://leetcode.com/problems/word-search-ii/)
|
||||
|
||||
## Recommended courses
|
||||
|
@ -136,7 +136,7 @@ Source: [Glassdoor](https://www.glassdoor.com/Interview/Dropbox-Interview-Questi
|
||||
- Where do you want to be in five years?
|
||||
- Tell me about a time you needed information from someone who wasn't responsive. What did you do?
|
||||
|
||||
Source: [Glassdoor](https://hired.com/blog/candidates/10-top-interview-questions-how-to-answer/)
|
||||
Source: Glassdoor
|
||||
|
||||
## Lyft Software Engineer behavioral interview questions
|
||||
|
||||
@ -190,7 +190,7 @@ Source: [Glassdoor](https://www.glassdoor.com/Interview/Slack-Interview-Question
|
||||
- Why do you want to work here?
|
||||
- How do you handle disagreements with co-workers?
|
||||
|
||||
Source: [Glassdoor](https://hired.com/blog/candidates/10-top-interview-questions-how-to-answer/)
|
||||
Source: Glassdoor
|
||||
|
||||
## Stripe Software Engineer behavioral interview questions
|
||||
|
||||
|
@ -16,7 +16,7 @@ keywords:
|
||||
sidebar_label: Behavioral interview rubrics
|
||||
---
|
||||
|
||||
_The following page is contributed by [Lior Neu-ner](https://www.linkedin.com/in/liornn/) — former Meta engineering manager and founder of [Remote Rocketship](http://remoterocketship.com/), a job board for remote tech jobs._
|
||||
_The following page is contributed by [Lior Neu-ner](https://www.linkedin.com/in/liornn/) — former Meta engineering manager and founder of [Remote Rocketship](https://remoterocketship.com/), a job board for remote tech jobs._
|
||||
|
||||
## How behavioral interviews are evaluated
|
||||
|
||||
|
@ -26,7 +26,7 @@ import InDocAd from './\_components/InDocAd';
|
||||
|
||||
Succeeding in an engineering career involves more than just technical skills. People skills become more important as an engineer becomes more senior. Senior engineers should have the ability to lead and influence, resolve conflicts, anticipate risks, plan the roadmap, and more.
|
||||
|
||||
Hiring a talented engineer that cannot work with others can ultimately be a net deficit for companies. Companies don't want to hire [brilliant jerks](http://www.brendangregg.com/blog/2017-11-13/brilliant-jerks.html). The company is better off not hiring a very talented engineer who refuses to work with others or causes an entire team to be unproductive. Companies want to hire the right person that will work well with the existing employees and help the team and company achieve greater heights, and behavioral interviews are one way of determining if someone will be good to work with from a non-technical standpoint.
|
||||
Hiring a talented engineer that cannot work with others can ultimately be a net deficit for companies. Companies don't want to hire [brilliant jerks](https://www.brendangregg.com/blog/2017-11-13/brilliant-jerks.html). The company is better off not hiring a very talented engineer who refuses to work with others or causes an entire team to be unproductive. Companies want to hire the right person that will work well with the existing employees and help the team and company achieve greater heights, and behavioral interviews are one way of determining if someone will be good to work with from a non-technical standpoint.
|
||||
|
||||
Typically, behavioral interview questions can be split into several types:
|
||||
|
||||
@ -100,5 +100,5 @@ If you would like to practice behavioral interviews with professional interviewe
|
||||
|
||||
I don't really think one needs to attend a course on behavioral interviews, but your mileage may vary. I've seen candidates get rejected for failing the behavioral round even though they did super well on the coding and system design interviews. If you want to take a course on behavioral interviews, I'd recommend the following courses:
|
||||
|
||||
- ["Behavioral Interviews" by Exponent](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook) - While Exponent also has courses on technical content, what really makes them stand out from the other interview preparation platform is their availability of content for non-software engineering roles such as Product Management and Product Marketing. Their behavioral interview course is a mix of videos (by the Exponent CEO himself!) and text, going through the most common questions and imparting you with techniques to help you ace the interview. To top it off, they also have an interview question bank for behavioral questions with responses from the platform's helpful community. While the subscription might be a little pricey for just the behavioral interviews content, they also offer quality technical content for [System Design](https://www.tryexponent.com/courses/system-design-interview?ref=techinterviewhandbook), [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook) and [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
- ["Behavioral Interviews" by Exponent](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook) - While Exponent also has courses on technical content, what really makes them stand out from the other interview preparation platform is their availability of content for non-software engineering roles such as Product Management and Product Marketing. Their behavioral interview course is a mix of videos (by the Exponent CEO himself!) and text, going through the most common questions and imparting you with techniques to help you ace the interview. To top it off, they also have an interview question bank for behavioral questions with responses from the platform's helpful community. While the subscription might be a little pricey for just the behavioral interviews content, they also offer quality technical content for [System Design](https://www.tryexponent.com/courses/system-design-interviews?ref=techinterviewhandbook), [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook) and [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
- ["Grokking the Behavioral Interview" on Educative](https://www.educative.io/courses/grokking-the-behavioral-interview?aff=x23W) - As per other courses on Educative, this course is text-based and they believe that text-based courses are the more efficient than video courses. One thing that stands out about this course is that they teach you **patterns** for behavioral interviews, not just about memorizing questions and preparing answers.
|
||||
|
@ -19,7 +19,7 @@ import InDocAd from './\_components/InDocAd';
|
||||
|
||||
:::tip
|
||||
|
||||
As of April 2022, I've developed a [12-week study plan](./coding-interview-study-plan.md) which includes a curriculum for revision and practice questions. If you want to customize your own practice questions, I've also developed [Grind 75](https://www.techinterviewhandbook.org/grind75) which is a modern version of Blind 75 that you can customize.
|
||||
As of April 2022, I've developed a [12-week study plan](./coding-interview-study-plan.md) which includes a curriculum for revision and practice questions. If you want to customize your own practice questions, I've also developed [Grind 75](https://www.techinterviewhandbook.org/grind75/) which is a modern version of Blind 75 that you can customize.
|
||||
|
||||
:::
|
||||
|
||||
@ -27,7 +27,7 @@ Hey there, the author of Blind 75 here 👋!
|
||||
|
||||
Practicing is the best way to prepare for coding interviews. LeetCode has over a thousand questions. Which should you practice? Hence years ago, I curated a list of the most important 75 questions on [LeetCode](https://leetcode.com). Many other LeetCode questions are a mash of the techniques from these individual questions. I used this list in my last job hunt to only do the important questions.
|
||||
|
||||
I [shared this list on Blind](https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU) by extracting the questions from [my freeCodeCamp article](https://www.freecodecamp.org/news/coding-interviews-for-dummies-5e048933b82b/) to save peoples' time when revising and someone reposted this list on [the LeetCode forum](https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions). It somehow blew up and became super famous in the coding interview scene, people even gave it a name - **Blind 75**. The Blind 75 questions as a LeetCode list can be found [here](https://leetcode.com/list/xi4ci4ig/).
|
||||
I [shared this list on Blind](https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU) by extracting the questions from [my freeCodeCamp article](https://www.freecodecamp.org/news/coding-interviews-for-dummies-5e048933b82b/) to save peoples' time when revising and someone reposted this list on [the LeetCode forum](https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions/). It somehow blew up and became super famous in the coding interview scene, people even gave it a name - **Blind 75**. The Blind 75 questions as a LeetCode list can be found [here](https://leetcode.com/list/xi4ci4ig/).
|
||||
|
||||
Years later, I further distilled the list down into only 50 questions and spread them across a 5-week schedule. Here is the suggested schedule for revising and practicing algorithm questions on LeetCode. Sign up for an account if you don't already have one, it's critical to your success in interviewing!
|
||||
|
||||
@ -119,7 +119,7 @@ Week 4 builds up on knowledge from previous weeks but questions are of increased
|
||||
| Subtree of Another Tree | Easy | [Link](https://leetcode.com/problems/subtree-of-another-tree/) |
|
||||
| Lowest Common Ancestor of BST | Easy | [Link](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) |
|
||||
| Implement Trie (Prefix Tree) | Medium | [Link](https://leetcode.com/problems/implement-trie-prefix-tree/) |
|
||||
| Add and Search Word | Medium | [Link](https://leetcode.com/problems/add-and-search-word-data-structure-design/) |
|
||||
| Add and Search Word | Medium | [Link](https://leetcode.com/problems/design-add-and-search-words-data-structure/) |
|
||||
| Kth Smallest Element in a BST | Medium | [Link](https://leetcode.com/problems/kth-smallest-element-in-a-bst/) |
|
||||
| Merge K Sorted Lists | Hard | [Link](https://leetcode.com/problems/merge-k-sorted-lists/) |
|
||||
| Find Median from Data Stream | Hard | [Link](https://leetcode.com/problems/find-median-from-data-stream/) |
|
||||
@ -162,7 +162,7 @@ Practically speaking the return of investment (ROI) on studying and practicing f
|
||||
|
||||
#### Dynamic programming course
|
||||
|
||||
- [Grokking the Dynamic Programming Patterns for Coding Interviews](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-dynamic-programming)
|
||||
- [Grokking the Dynamic Programming Patterns for Coding Interviews](https://www.designgurus.io/course/grokking-dynamic-programming?aff=kJSIoU)
|
||||
|
||||
## Quality courses
|
||||
|
||||
|
@ -14,12 +14,12 @@ After being hired, it's crucial to focus on your career growth so you don't stag
|
||||
- [The Pragmatic Engineer](https://newsletter.pragmaticengineer.com/)
|
||||
- [Level Up Software Engineering](https://levelupsoftwareengineering.substack.com/)
|
||||
- [Peak Performance](https://addyo.substack.com/)
|
||||
- [Engineer's Codex](https://engineercodex.substack.com/)
|
||||
- [Techlead Mentor](https://open.substack.com/pub/ravirajachar)
|
||||
- [Engineer's Codex](https://read.engineerscodex.com/)
|
||||
- [Techlead Mentor](https://newsletter.techleadmentor.com/)
|
||||
- [The Caring Techie](https://www.thecaringtechie.com/)
|
||||
- [Refactoring](https://refactoring.fm/)
|
||||
- [Strategize Your Career](https://strategizeyourcareer.substack.com/)
|
||||
- [Hungry Minds](https://hungryminds.dev/)
|
||||
- [Strategize Your Career](https://strategizeyourcareer.com/)
|
||||
- [Hungry Minds](https://www.hungryminds.dev/)
|
||||
- [Saiyan Growth Letter](https://www.saiyangrowthletter.com/)
|
||||
- [Data Engineering Newsletter](https://blog.dataengineer.io/)
|
||||
- [16x Engineer](https://16x.engineer/)
|
||||
@ -59,7 +59,7 @@ After being hired, it's crucial to focus on your career growth so you don't stag
|
||||
|
||||
- [Taro](https://www.jointaro.com/)
|
||||
- [Kent C. Dodds Discord Community](https://kentcdodds.com/discord)
|
||||
- [GreatFrontEnd](https://discord.gg/NDFx8f6P6B)
|
||||
- [GreatFrontEnd](https://discord.com/invite/NDFx8f6P6B)
|
||||
|
||||
## References
|
||||
|
||||
|
@ -13,7 +13,7 @@ Do your due diligence by researching on the companies before deciding!
|
||||
|
||||
First and foremost, compensation. Most technical roles at tech companies would receive compensation in similar components - Base salary, Bonuses, Stocks, and Sign On. The [Understanding Compensation](./understanding-compensation.md) section goes into more detail. Some companies are more flexible in their offer and allow candidates to choose between higher base salary or higher stocks. Base salary is the most straightforward to understand and you are being paid that same amount regardless of how well/poorly the company is doing. Bonuses are also usually a percentage of the base salary, so a high base salary is great for the risk-adverse.
|
||||
|
||||
Not all stock grants are equal as well. Some companies have linear vesting cycles (you vest the same amount every year), some companies like Amazon and Snap have backloaded schemes (you vest less in the earlier years, more later), and there are pay attention to cliffs as well. [Stripe and Lyft](https://www.theinformation.com/articles/stripe-and-lyft-speed-up-equity-payouts-to-first-year) recently changed their stock structure and announced that they will speed up equity payouts to the first year. This sounds good initially, [but in reality there are some nuances](https://tanay.substack.com/p/employee-compensation-and-one-year).
|
||||
Not all stock grants are equal as well. Some companies have linear vesting cycles (you vest the same amount every year), some companies like Amazon and Snap have backloaded schemes (you vest less in the earlier years, more later), and there are pay attention to cliffs as well. [Stripe and Lyft](https://www.theinformation.com/articles/stripe-and-lyft-speed-up-equity-payouts-to-first-year) recently changed their stock structure and announced that they will speed up equity payouts to the first year. This sounds good initially, [but in reality there are some nuances](https://www.tanayj.com/p/employee-compensation-and-one-year).
|
||||
|
||||
Regardless of company, **always negotiate** your offer, especially if you have multiple offers to choose from! Having multiple offers in hand is the best bargaining chip you can have for negotiation and you should leverage it. We go into this more in the [Negotiation](./negotiation.md) section. Use [Rora](https://www.teamrora.com/?utm_source=techinterviewhandbook&utm_medium=referral&utm_content=website_choosing_between_companies) for risk-free negotiation services.
|
||||
|
||||
|
@ -81,7 +81,7 @@ How long does it take to prepare for a coding interview? It actually depends on
|
||||
|
||||
To start preparing for your coding interviews, always begin with a plan. Calculate the amount of time you have left to realistically prepare for your interview from now till the day of the coding test, and carefully make a plan of the topics and questions you will cover per day, prioritizing the most important ones first.
|
||||
|
||||
But how do you know which are the most important topics and questions to practice based on the time you have left? You may use the free [Grind 75 tool](https://www.techinterviewhandbook.org/grind75) (built by me) which produces coding interview study plans for varying lengths of preparation time. The algorithm behind it includes a ranking of questions by priority and also a balance between breadth and depth of topics covered.
|
||||
But how do you know which are the most important topics and questions to practice based on the time you have left? You may use the free [Grind 75 tool](https://www.techinterviewhandbook.org/grind75/) (built by me) which produces coding interview study plans for varying lengths of preparation time. The algorithm behind it includes a ranking of questions by priority and also a balance between breadth and depth of topics covered.
|
||||
|
||||
If you have the luxury of time to prepare, it is recommended to spend around 3 months (2-3 hours per day) to prepare more holistically. I came up with a [personal 3-month study plan](./coding-interview-study-plan.md), which takes you from start to finish on which topics and questions to complete.
|
||||
|
||||
@ -92,15 +92,15 @@ For the sake of memory retention and efficiency, it is best to study for a singl
|
||||
Fortunately, there are already excellent coding interview preparation resources which enable you to do this very easily and systematically:
|
||||
|
||||
1. [AlgoMonster](https://shareasale.com/r.cfm?b=1873647&u=3114753&m=114505&urllink=&afftrack=)
|
||||
1. [Grokking the Coding Interview: Patterns for Coding Questions](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
1. [Grokking the Coding Interview: Patterns for Coding Questions](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
#### [AlgoMonster](https://shareasale.com/r.cfm?b=1873647&u=3114753&m=114505&urllink=&afftrack=)
|
||||
|
||||
Apart from helping you master important coding interview data structures and algorithm questions through practice and easy to understand guides, AlgoMonster has the added perk of synthesizing [common interview question patterns](https://algo.monster/problems/stats) that you could apply to solve any other questions you have never encountered before. Made by Google engineers, this is definitely a quality platform to use as compared to the unstructured nature of LeetCode grinding. Data structures and algorithms questions are covered in all the common languages - Python, Java, C#, JavaScript, C++, Golang, and more. [**Join today for a 70% discount →**](https://shareasale.com/r.cfm?b=1873647&u=3114753&m=114505&urllink=&afftrack=)
|
||||
|
||||
#### [Grokking the Coding Interview: Patterns for Coding Questions](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
#### [Grokking the Coding Interview: Patterns for Coding Questions](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages along with step-by-step visualizations. **Learn and understand patterns, not memorize answers!** [**Get lifetime access today →**](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages along with step-by-step visualizations. **Learn and understand patterns, not memorize answers!** [**Get lifetime access today →**](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
<InDocAd />
|
||||
|
||||
@ -158,7 +158,7 @@ Best of all, AlgoMonster is not subscription-based - pay a one-time fee and get
|
||||
|
||||
This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages.
|
||||
|
||||
Learn and understand patterns, not memorize answers! [Join today for a 10% discount →](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
Learn and understand patterns, not memorize answers! [Join today for a 10% discount →](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
---
|
||||
|
||||
|
@ -267,7 +267,7 @@ Note that in Software Engineering, mutating input data is generally frowned upon
|
||||
|
||||
The [Dutch National Flag](https://leetcode.com/problems/sort-colors/) problem could be easily solved with O(n) time and O(n) space by creating a new array and filling it up with the respective values in a sorted fashion. As an added challenge and space optimization, the interviewer will usually ask for an O(n) time and O(1) space solution which involves sorting the input array in-place.
|
||||
|
||||
An example of using the original array as a hash table is the [First Missing Positive](https://leetcode.com/problems/first-missing-positive) question. After the first for loop, all the values in the array are positive, and you can indicate presence of a number by negating the value at the index corresponding to the number. To indicate 4 is present, negate `nums[4]`.
|
||||
An example of using the original array as a hash table is the [First Missing Positive](https://leetcode.com/problems/first-missing-positive/) question. After the first for loop, all the values in the array are positive, and you can indicate presence of a number by negating the value at the index corresponding to the number. To indicate 4 is present, negate `nums[4]`.
|
||||
|
||||
#### 2. Change a data structure
|
||||
|
||||
|
@ -71,6 +71,6 @@ These roles can vary widely between companies, and some organizations may have a
|
||||
|
||||
- [Software Engineering Salaries at Google](https://careerkarma.com/blog/software-engineering-salary-google/)
|
||||
- [Dropbox Engineering Career Framework](https://dropbox.github.io/dbx-career-framework/overview.html)
|
||||
- [Engineering Levels at SoundCloud](https://developers.soundcloud.com/blog/engineering-levels)
|
||||
- [Engineering Levels at SoundCloud](https://developers.soundcloud.com/blog/engineering-levels/)
|
||||
- [Every Public Engineering Career Ladder](https://www.swyx.io/career-ladders)
|
||||
- [progression.fyi](https://progression.fyi/)
|
||||
|
@ -24,13 +24,13 @@ Interviewing is a skill that you can get better at. The steps mentioned above ca
|
||||
|
||||
## [interviewing.io](https://iio.sh/r/DMCa)
|
||||
|
||||
A great resource for practicing mock coding interviews would be [interviewing.io](https://iio.sh/r/DMCa). [interviewing.io](https://iio.sh/r/DMCa) provides anonymous practice technical interviews with Google and Facebook engineers, which can lead to real jobs and internships. By virtue of being anonymous during the interview, the inclusive interview process is de-biased and low risk. At the end of the interview, both interviewer and interviewees can provide feedback to each other for the purpose of improvement. Doing well in your mock interviews will unlock the jobs page and allow candidates to book interviews (also anonymously) with top companies like Uber, Lyft, Quora, Asana and more. You can also book mock interviews for more specific roles such as Mobile, Front End, Engineering Management. For those who are totally new to technical interviews, you can even view [recorded interviews](https://interviewing.io/recordings) and see how phone interviews are like. Read more about them [here](https://techcrunch.com/2017/09/27/interviewing-io-hopes-to-close-the-engineer-diversity-gap-with-anonymous-interviews/).
|
||||
A great resource for practicing mock coding interviews would be [interviewing.io](https://iio.sh/r/DMCa). [interviewing.io](https://iio.sh/r/DMCa) provides anonymous practice technical interviews with Google and Facebook engineers, which can lead to real jobs and internships. By virtue of being anonymous during the interview, the inclusive interview process is de-biased and low risk. At the end of the interview, both interviewer and interviewees can provide feedback to each other for the purpose of improvement. Doing well in your mock interviews will unlock the jobs page and allow candidates to book interviews (also anonymously) with top companies like Uber, Lyft, Quora, Asana and more. You can also book mock interviews for more specific roles such as Mobile, Front End, Engineering Management. For those who are totally new to technical interviews, you can even view [recorded interviews](https://interviewing.io/mocks) and see how phone interviews are like. Read more about them [here](https://techcrunch.com/2017/09/27/interviewing-io-hopes-to-close-the-engineer-diversity-gap-with-anonymous-interviews/).
|
||||
|
||||
I have used [interviewing.io](https://iio.sh/r/DMCa) both as an interviewer and an interviewee and found the experience to be really great! [Aline Lerner](https://twitter.com/alinelernerLLC), the CEO and co-founder of [interviewing.io](https://iio.sh/r/DMCa) and her team are passionate about revolutionizing the technical interview process and helping candidates to improve their skills at interviewing. She has also published a number of technical interview-related articles on the [interviewing.io blog](http://blog.interviewing.io/).
|
||||
I have used [interviewing.io](https://iio.sh/r/DMCa) both as an interviewer and an interviewee and found the experience to be really great! [Aline Lerner](https://twitter.com/alinelernerLLC), the CEO and co-founder of [interviewing.io](https://iio.sh/r/DMCa) and her team are passionate about revolutionizing the technical interview process and helping candidates to improve their skills at interviewing. She has also published a number of technical interview-related articles on the [interviewing.io blog](https://interviewing.io/blog).
|
||||
|
||||
## Pramp
|
||||
|
||||
Another platform that allows you to practice coding interviews is [Pramp](https://pramp.com). Where [interviewing.io](https://iio.sh/r/DMCa) matches potential job seekers with seasoned technical interviewers, Pramp takes a different approach. Pramp pairs you up with another peer who is also a job seeker and both of you take turns to assume the role of interviewer and interviewee. Pramp also prepares questions for you, along with suggested solutions and prompts to guide the interviewee.
|
||||
Another platform that allows you to practice coding interviews is [Pramp](https://www.pramp.com/). Where [interviewing.io](https://iio.sh/r/DMCa) matches potential job seekers with seasoned technical interviewers, Pramp takes a different approach. Pramp pairs you up with another peer who is also a job seeker and both of you take turns to assume the role of interviewer and interviewee. Pramp also prepares questions for you, along with suggested solutions and prompts to guide the interviewee.
|
||||
|
||||
Personally, I am not that fond of Pramp's approach because if I were to interview someone, I would rather choose a question I am familiar with. Also, many users of the platform do not have the experience of being interviewers and that can result in a horrible interview experience. There was once where my matched peer, as the interviewer, did not have the right understanding of the question and attempted to lead me down the wrong path of solving the question. However, this is more of a problem of the candidate than the platform though.
|
||||
|
||||
@ -42,7 +42,7 @@ Hello Interview uses a combination of AI and expert FAANG staff engineers and ma
|
||||
|
||||
Hello Interview offers included services from resume reviews to salary negotiation and offer decision support ensuring you're able to minimize the time spent preparing and maximize the result of your interview journey.
|
||||
|
||||
## [Meetapro](https://meetapro.com/?utm_source=techinterviewhandbook)
|
||||
## [Meetapro](https://www.meetapro.com/?utm_source=techinterviewhandbook)
|
||||
|
||||
**Disclaimer: This section was added by the Meetapro team**
|
||||
|
||||
|
@ -22,7 +22,7 @@ keywords:
|
||||
|
||||
import InDocAd from './\_components/InDocAd';
|
||||
|
||||
Key points extracted from "Ten Rules for Negotiating a Job Offer" [Part 1](http://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/) and [Part 2](https://haseebq.com/how-not-to-bomb-your-offer-negotiation/) by Haseeb Qureshi.
|
||||
Key points extracted from "Ten Rules for Negotiating a Job Offer" [Part 1](https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/) and [Part 2](https://haseebq.com/how-not-to-bomb-your-offer-negotiation/) by Haseeb Qureshi.
|
||||
|
||||
## Get everything in writing
|
||||
|
||||
|
@ -131,13 +131,13 @@ However, LeetCode has thousands of questions and it can be daunting to know wher
|
||||
|
||||
The recommended time period to set aside for coding interview preparation is 3 months (11 hours a week i.e. 2-3 hours a day) for a more holistic preparation. I shared my [3 month study plan here](./coding-interview-study-plan.md), which provides a list of coding interview topics with resources and practice questions that you should work through in order of priority every week. I will also be adding content on recommended 1 month and 1 week study plans soon.
|
||||
|
||||
If you have less than 3 months to prepare, you can generate your own study plans using the [Grind 75 tool](https://www.techinterviewhandbook.org/grind75) (built by me) which generates recommended study plans for coding interviews based on the time you have left. The algorithm behind it includes a ranking of questions by priority and also a balance between breadth and depth of topics covered.
|
||||
If you have less than 3 months to prepare, you can generate your own study plans using the [Grind 75 tool](https://www.techinterviewhandbook.org/grind75/) (built by me) which generates recommended study plans for coding interviews based on the time you have left. The algorithm behind it includes a ranking of questions by priority and also a balance between breadth and depth of topics covered.
|
||||
|
||||
### Resources to use in your practice
|
||||
|
||||
In the market, there are plenty of resources vying for your attention, plenty of them just vying for your money but not providing any value. If I had to prioritize - these are the top coding interview preparation resources I would use in tandem:
|
||||
|
||||
1. [Grokking the Coding Interview: Patterns for Coding Questions](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
1. [Grokking the Coding Interview: Patterns for Coding Questions](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
1. [AlgoMonster](https://shareasale.com/r.cfm?b=1873647&u=3114753&m=114505&urllink=&afftrack=)
|
||||
1. My (free) coding interview best practices guide
|
||||
1. My (free) coding interview techniques guide
|
||||
@ -147,9 +147,9 @@ In the market, there are plenty of resources vying for your attention, plenty of
|
||||
|
||||
Apart from helping you master important coding interview data structures and algorithm questions through practice and easy to understand guides, AlgoMonster has the added perk of synthesizing [common interview question patterns](https://algo.monster/problems/stats) that you could apply to solve any other questions you have never encountered before. Made by Google engineers, this is definitely a quality platform to use as compared to the unstructured nature of LeetCode grinding. Data structures and algorithms questions are covered in all the common languages - Python, Java, C#, JavaScript, C++, Golang, and more. [**Join today for a 70% discount →**](https://shareasale.com/r.cfm?b=1873647&u=3114753&m=114505&urllink=&afftrack=)
|
||||
|
||||
#### [Grokking the Coding Interview: Patterns for Coding Questions](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
#### [Grokking the Coding Interview: Patterns for Coding Questions](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages along with step-by-step visualizations. **Learn and understand patterns, not memorize answers!** [**Get lifetime access today →**](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-coding-interview)
|
||||
This course by Design Gurus expands upon the questions on the recommended practice questions but approaches the practicing from a questions pattern perspective, which is an approach I also agree with for learning and have personally used to get better at coding interviews. The course allows you to practice selected questions in Java, Python, C++, JavaScript and also provides sample solutions in those languages along with step-by-step visualizations. **Learn and understand patterns, not memorize answers!** [**Get lifetime access today →**](https://www.designgurus.io/course/grokking-the-coding-interview?aff=kJSIoU)
|
||||
|
||||
#### My (free) coding interview best practices guide
|
||||
|
||||
@ -188,9 +188,9 @@ The objective of system design interviews is to evaluate a candidate's skill at
|
||||
Some of the best system design interview preparation resources include:
|
||||
|
||||
1. [ByteByteGo](https://bytebytego.com?fpr=techinterviewhandbook) - This is a new System Design course by Alex Xu, author of the System Design Interview books, a bestseller on Amazon. The course covers system designs basics, then goes into deep dives of the design of over 10 famous common products (e.g. [Designing YouTube](https://bytebytego.com/courses/system-design-interview/design-youtube), Facebook Newsfeed, etc) and multiple big data and storage systems (e.g. [Designing a Chat System](https://bytebytego.com/courses/system-design-interview/design-a-chat-system)). For each deep dive, concepts are explained and comprehensive diagrams are used, making it very approachable for any seniority level.
|
||||
1. ["Grokking the System Design Interview" by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-system-design-interview) - This is probably the most famous system design interview course on the internet and what makes it different from most other courses out there is that it is purely text-based, which is great for people who prefer reading over watching videos (such as myself!). It contains a repository of the popular system design problems along with a glossary of system design basics. I've personally completed this course and have recommended many others to use this. Highly recommended!
|
||||
1. ["System Design Interview Course" by Exponent](https://www.tryexponent.com/courses/system-design-interview?ref=techinterviewhandbook) - This course covers system designs basics and has a huge database of popular system design questions with videos of mock interviews. Some of the questions have text answers and a database schema and APIs for reference (which I find helpful). While the subscription might be a little pricey for just the system design interviews content, they also offer quality technical content for [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook), [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook) and [Behavioral Interviews](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
1. ["Grokking the Advanced System Design Interview" by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-advanced-system-design-interview) - I haven't tried this but it's by the same people who created "Grokking the System Design Interview", so it should be good! In my opinion you probably wouldn't need this unless you're very senior or going for a specialist position.
|
||||
1. ["Grokking the System Design Interview" by Design Gurus](https://www.designgurus.io/course/grokking-the-system-design-interview?aff=kJSIoU) - This is probably the most famous system design interview course on the internet and what makes it different from most other courses out there is that it is purely text-based, which is great for people who prefer reading over watching videos (such as myself!). It contains a repository of the popular system design problems along with a glossary of system design basics. I've personally completed this course and have recommended many others to use this. Highly recommended!
|
||||
1. ["System Design Interview Course" by Exponent](https://www.tryexponent.com/courses/system-design-interviews?ref=techinterviewhandbook) - This course covers system designs basics and has a huge database of popular system design questions with videos of mock interviews. Some of the questions have text answers and a database schema and APIs for reference (which I find helpful). While the subscription might be a little pricey for just the system design interviews content, they also offer quality technical content for [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook), [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook) and [Behavioral Interviews](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
1. ["Grokking the Advanced System Design Interview" by Design Gurus](https://www.designgurus.io/course/grokking-the-advanced-system-design-interview?aff=kJSIoU) - I haven't tried this but it's by the same people who created "Grokking the System Design Interview", so it should be good! In my opinion you probably wouldn't need this unless you're very senior or going for a specialist position.
|
||||
|
||||
[Check out other Systems Design preparation guides and resources here.](./system-design.md)
|
||||
|
||||
|
@ -47,15 +47,15 @@ System design content is still work-in-progress, but the following are some reso
|
||||
|
||||
## Quality resources
|
||||
|
||||
- ["Front End System Design Guidebook" by GreatFrontEnd](https://www.greatfrontend.com/system-design?fpr=yangshun): A free system design guidebook by yours truly, focused on system design for the front end, e.g. how to design Facebook's News Feed, Autocomplete components, Image Carousels and more.
|
||||
- [System Design in a Hurry](https://www.hellointerview.com/learn/system-design): Free course built by ex- Meta and Amazon engineers, covers the basics of delivery, high-level concepts, and core technologies. Worked "common problems" walk you through various design decisions in real problems and how to navigate them.
|
||||
- ["Front End System Design Guidebook" by GreatFrontEnd](https://www.greatfrontend.com/front-end-system-design-playbook?fpr=yangshun): A free system design guidebook by yours truly, focused on system design for the front end, e.g. how to design Facebook's News Feed, Autocomplete components, Image Carousels and more.
|
||||
- [System Design in a Hurry](https://www.hellointerview.com/learn/system-design/in-a-hurry/introduction): Free course built by ex- Meta and Amazon engineers, covers the basics of delivery, high-level concepts, and core technologies. Worked "common problems" walk you through various design decisions in real problems and how to navigate them.
|
||||
- [System Design Newsletter](https://newsletter.systemdesign.one/): Weekly newsletter on system design. Also get the powerful system design template for FREE.
|
||||
- [ByteByteGo](https://bytebytego.com?fpr=techinterviewhandbook): This is a new System Design course by Alex Xu, author of the System Design Interview books, a bestseller on Amazon. The course covers system designs basics, then goes into deep dives of the design of over 10 famous common products (e.g. [Designing YouTube](https://bytebytego.com/courses/system-design-interview/design-youtube?fpr=techinterviewhandbook), Facebook Newsfeed, etc) and multiple big data and storage systems (e.g. [Designing a Chat System](https://bytebytego.com/courses/system-design-interview/design-a-chat-system?fpr=techinterviewhandbook)). For each deep dive, concepts are explained and comprehensive diagrams are used, making it very approachable regardless of seniority level.
|
||||
- ["Grokking the System Design Interview" by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-system-design-interview): This is probably the most famous system design interview course on the internet and what makes it different from most other courses out there is that it is purely text-based, which is great for people who prefer reading over watching videos (such as myself!). It contains a repository of the popular system design problems along with a glossary of system design basics. I've personally completed this course and highly recommended many others to use this.
|
||||
- ["Grokking the Advanced System Design Interview" by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-advanced-system-design-interview): I haven't tried this but it's by the same people who created "Grokking the System Design Interview", so it should be good! In my opinion you probably wouldn't need this unless you're very senior or going for a specialist position.
|
||||
- ["Best of System Design" package by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fbundles%3Fbundle_id%3Dbuy-both-system-design-courses): This bundle allows you to purchase both System Design interview courses by Design Gurus at a discount. Best of all, it's lifetime and not subscription-based.
|
||||
- ["System Design Interview Course" by Exponent](https://www.tryexponent.com/courses/system-design-interview?ref=techinterviewhandbook): This course covers system designs basics and has a huge database of popular system design questions with videos of mock interviews. Some of the questions have text answers and a database schema and APIs for reference (which I find helpful). While the subscription might be a little pricey for just the system design interviews content, they also offer quality technical content for [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook), [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook) and [Behavioral Interviews](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
- ["Gaurav Sen Youtube - System Design Playlist"](https://youtu.be/xpDnVSmNFX0): Gaurav Sen is a popular YouTuber who has gained a lot of recognition for his system design videos. His playlist on System Design provides a comprehensive guide for software engineers who are preparing for technical interviews or want to learn more about how to design scalable systems. The playlist consists of multiple videos, each video covering a different topic related to system design. The videos are designed in a way that simplifies complex topics and makes it easy to understand for beginners.
|
||||
- ["Grokking the System Design Interview" by Design Gurus](https://www.designgurus.io/course/grokking-the-system-design-interview?aff=kJSIoU): This is probably the most famous system design interview course on the internet and what makes it different from most other courses out there is that it is purely text-based, which is great for people who prefer reading over watching videos (such as myself!). It contains a repository of the popular system design problems along with a glossary of system design basics. I've personally completed this course and highly recommended many others to use this.
|
||||
- ["Grokking the Advanced System Design Interview" by Design Gurus](https://www.designgurus.io/course/grokking-the-advanced-system-design-interview?aff=kJSIoU): I haven't tried this but it's by the same people who created "Grokking the System Design Interview", so it should be good! In my opinion you probably wouldn't need this unless you're very senior or going for a specialist position.
|
||||
- ["Best of System Design" package by Design Gurus](https://www.designgurus.io/bundle/buy-both-system-design-courses?aff=kJSIoU): This bundle allows you to purchase both System Design interview courses by Design Gurus at a discount. Best of all, it's lifetime and not subscription-based.
|
||||
- ["System Design Interview Course" by Exponent](https://www.tryexponent.com/courses/system-design-interviews?ref=techinterviewhandbook): This course covers system designs basics and has a huge database of popular system design questions with videos of mock interviews. Some of the questions have text answers and a database schema and APIs for reference (which I find helpful). While the subscription might be a little pricey for just the system design interviews content, they also offer quality technical content for [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook), [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook) and [Behavioral Interviews](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
- ["Gaurav Sen Youtube - System Design Playlist"](https://www.youtube.com/watch?v=xpDnVSmNFX0&feature=youtu.be): Gaurav Sen is a popular YouTuber who has gained a lot of recognition for his system design videos. His playlist on System Design provides a comprehensive guide for software engineers who are preparing for technical interviews or want to learn more about how to design scalable systems. The playlist consists of multiple videos, each video covering a different topic related to system design. The videos are designed in a way that simplifies complex topics and makes it easy to understand for beginners.
|
||||
|
||||
## Free resources
|
||||
|
||||
|
@ -42,7 +42,7 @@ module.exports = {
|
||||
{ label: 'Blog', to: 'blog', position: 'left' },
|
||||
{
|
||||
label: 'Grind 75',
|
||||
href: 'https://www.techinterviewhandbook.org/grind75',
|
||||
href: 'https://www.techinterviewhandbook.org/grind75/',
|
||||
position: 'left',
|
||||
},
|
||||
{
|
||||
@ -130,7 +130,7 @@ module.exports = {
|
||||
},
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discord.gg/usMqNaPczq',
|
||||
href: 'https://discord.com/invite/usMqNaPczq',
|
||||
},
|
||||
{
|
||||
label: 'Telegram',
|
||||
@ -147,7 +147,7 @@ module.exports = {
|
||||
items: [
|
||||
{
|
||||
label: 'Grind 75',
|
||||
href: 'https://www.techinterviewhandbook.org/grind75',
|
||||
href: 'https://www.techinterviewhandbook.org/grind75/',
|
||||
},
|
||||
{
|
||||
label: 'Front End Interview Handbook',
|
||||
|
@ -2,15 +2,15 @@
|
||||
|
||||
## Quality courses
|
||||
|
||||
- ["Grokking the System Design Interview" by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-system-design-interview) - This is probably the most famous system design interview course on the internet and what makes it different from most other courses out there is that it is purely text-based, which is great for people who refer reading over watching videos (such as myself!). It contains a repository of the popular system design problems along with a glossary of system design basics. I've personally completed this course and highly recommended many others to use this.
|
||||
- ["Grokking the Advanced System Design Interview" by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-advanced-system-design-interview) - I haven't tried this but it's by the same people who created "Grokking the System Design Interview", so it should be good! In my opinion you probably wouldn't need this unless you're very senior or going for a specialist position.
|
||||
- ["Best of System Design" package by Design Gurus](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fbundles%3Fbundle_id%3Dbuy-both-system-design-courses) - This bundle allows you to purchase both System Design interview courses by Design Gurus at a discount. Best of all, it's lifetime and not subscription-based.
|
||||
- ["System Design Interview Course" by Exponent](https://www.tryexponent.com/courses/system-design-interview?ref=techinterviewhandbook) - This course covers system designs basics and has a huge database of popular system design questions with videos of mock interviews. Some of the questions have text answers and a database schema and APIs for reference (which I find helpful). While the subscription might be a little pricey for just the system design interviews content, they also offer quality technical content for [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook), [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook) and [Behavioral Interviews](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
- ["Grokking the System Design Interview" by Design Gurus](https://www.designgurus.io/course/grokking-the-system-design-interview?aff=kJSIoU) - This is probably the most famous system design interview course on the internet and what makes it different from most other courses out there is that it is purely text-based, which is great for people who refer reading over watching videos (such as myself!). It contains a repository of the popular system design problems along with a glossary of system design basics. I've personally completed this course and highly recommended many others to use this.
|
||||
- ["Grokking the Advanced System Design Interview" by Design Gurus](https://www.designgurus.io/course/grokking-the-advanced-system-design-interview?aff=kJSIoU) - I haven't tried this but it's by the same people who created "Grokking the System Design Interview", so it should be good! In my opinion you probably wouldn't need this unless you're very senior or going for a specialist position.
|
||||
- ["Best of System Design" package by Design Gurus](https://www.designgurus.io/bundle/buy-both-system-design-courses?aff=kJSIoU) - This bundle allows you to purchase both System Design interview courses by Design Gurus at a discount. Best of all, it's lifetime and not subscription-based.
|
||||
- ["System Design Interview Course" by Exponent](https://www.tryexponent.com/courses/system-design-interviews?ref=techinterviewhandbook) - This course covers system designs basics and has a huge database of popular system design questions with videos of mock interviews. Some of the questions have text answers and a database schema and APIs for reference (which I find helpful). While the subscription might be a little pricey for just the system design interviews content, they also offer quality technical content for [Data Structures](https://www.tryexponent.com/courses/swe-practice?ref=techinterviewhandbook), [Algorithms](https://www.tryexponent.com/courses/algorithms?ref=techinterviewhandbook) and [Behavioral Interviews](https://www.tryexponent.com/courses/behavioral?ref=techinterviewhandbook). The convenience of a one-stop platform which covers all aspects of technical interview preparation is very enticing.
|
||||
|
||||
## Guides
|
||||
|
||||
- [Grokking the System Design Interview](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-system-design-interview)
|
||||
- [Grokking the Advanced System Design Interview](https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-advanced-system-design-interview)
|
||||
- [Grokking the System Design Interview](https://www.designgurus.io/course/grokking-the-system-design-interview?aff=kJSIoU)
|
||||
- [Grokking the Advanced System Design Interview](https://www.designgurus.io/course/grokking-the-advanced-system-design-interview?aff=kJSIoU)
|
||||
- https://github.com/donnemartin/system-design-primer
|
||||
- https://github.com/checkcheckzz/system-design-interview
|
||||
- https://github.com/shashank88/system_design
|
||||
|
@ -95,7 +95,7 @@ function DesignGurusSystemDesign({ position }) {
|
||||
return (
|
||||
<a
|
||||
className={clsx(styles.container, styles.backgroundGrokkingSystemDesign)}
|
||||
href="https://designgurus.org/link/kJSIoU?url=https%3A%2F%2Fdesigngurus.org%2Fcourse%3Fcourseid%3Dgrokking-the-system-design-interview"
|
||||
href="https://www.designgurus.io/course/grokking-the-system-design-interview?aff=kJSIoU"
|
||||
key={Math.random()}
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
|
@ -58,8 +58,8 @@ export default [
|
||||
<br />
|
||||
<br />
|
||||
I've learnt a few things and blogged about them on{' '}
|
||||
<a href="https://zhenghao.io" rel="noopener">
|
||||
https://zhenghao.io
|
||||
<a href="https://www.zhenghao.io/" rel="noopener">
|
||||
https://www.zhenghao.io/
|
||||
</a>
|
||||
, check them out if you're interested!
|
||||
</>
|
||||
@ -153,7 +153,7 @@ export default [
|
||||
<br />
|
||||
My favourite part is the{' '}
|
||||
<a
|
||||
href="https://www.techinterviewhandbook.org/grind75"
|
||||
href="https://www.techinterviewhandbook.org/grind75/"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener">
|
||||
Grind 75 Tool
|
||||
|
@ -492,7 +492,7 @@ function GreatFrontEndSection() {
|
||||
<div className="margin-vert--lg">
|
||||
<a
|
||||
className="button button--secondary button--lg"
|
||||
href="https://www.greatfrontend.com/prepare?fpr=yangshun&utm_source=techinterviewhandbook&utm_medium=referral&utm_content=homepage"
|
||||
href="https://www.greatfrontend.com/questions?fpr=yangshun&utm_source=techinterviewhandbook&utm_medium=referral&utm_content=homepage"
|
||||
rel="noopener"
|
||||
target="_blank"
|
||||
onClick={() => {
|
||||
|
Reference in New Issue
Block a user