Learn and practice
Guides
Worked explanations of interview problems, JavaScript behavior, and algorithm choices. Read the reasoning, inspect the code, and move into practice.
Debounce vs. throttle in JavaScript
Build both functions, compare leading and trailing calls, and test timing behavior with an interactive event timeline.
GuidesImplement Promise.all in JavaScript
Write a Promise.all implementation that preserves input order, handles empty iterables, and rejects correctly.
GuidesThe JavaScript event loop, explained with execution traces
Trace synchronous code, promise microtasks, timers, and async functions. Work through examples before checking their output.
GuidesBFS vs. DFS: choosing a graph traversal
Compare queues, stacks, shortest paths, visited sets, and memory costs with worked graph and grid examples.
GuidesBig O time and space complexity with worked examples
Analyze loops, nested work, recursion, and auxiliary memory. Learn to state assumptions and distinguish worst-case from amortized cost.
GuidesHow to explain a coding interview solution
A worked Two Sum interview: clarify the contract, develop a baseline, justify a hash map, test edge cases, and explain complexity.
GuidesImplement a JavaScript queue for BFS without repeated shift calls
Build a FIFO queue with bounded compaction, distinguish empty results from undefined values, and use it in a cyclic graph traversal.
GuidesTypeScript collections: missing values, keys, and readonly contracts
Model lookup presence explicitly, handle unchecked indexes, preserve zero and undefined, and write a typed frequency counter and graph BFS.
GuidesCount islands in Python with iterative flood fill
Solve a four-neighbor binary-grid problem with an explicit stack, visited-set and in-place variants, complexity analysis, and boundary tests.
GuidesJava PriorityQueue: top-K values, comparators, and stable ties
Retain top-K stream values, process jobs with explicit tie order, and test Java heap ranking separately from iteration and sorted output.
GuidesC++ lower_bound and upper_bound: counts, neighbors, and record ranges
Use C++ search boundaries for duplicate counts, strict predecessors and successors, and custom record keys without invalid iterator operations.
GuidesLongest unique substring in Go: bytes, runes, and Unicode
Implement rune and ASCII sliding windows, reject invalid input, preserve forward-only boundaries, and test Unicode length assumptions.
GuidesRust BFS shortest paths with borrowed graph labels
Return a shortest unweighted route using borrowed string labels, a FIFO frontier, explicit parents, and a lifetime that matches the source graph.
GuidesJavaScript closures and this: state, receivers, and callback lifetimes
Explain closure bindings, independent instances, receiver loss, arrow functions, listener cleanup, and callback lifetime through tested JavaScript examples.
GuidesDesign an accessible autocomplete: state, stale requests, and keyboard behavior
Work through query state, cancellation, stale-response guards, keyboard focus, combobox semantics, caching, and test cases for a frontend autocomplete.
GuidesDOM event delegation: boundaries, nested targets, and cleanup
Build a delegated button handler with explicit container boundaries, nested targets, disabled controls, keyboard activation, and listener cleanup.
GuidesHow a multilingual coding exercise runner works
Follow a language-neutral problem spec through source generation, execution, authenticated result parsing, server-side comparison, and conformance checks.
GuidesHow to test a coding exercise across programming languages
Design a language-neutral contract, independent reference checks, comparison rules, starter controls, edge cases, and conformance tests for a multilingual lesson.
GuidesRetry with exponential backoff in JavaScript
Build a bounded retry loop with full jitter, cancellation, explicit retry policy, and deterministic timing tests.
GuidesLimit promise concurrency in JavaScript
Run lazy task factories in an ordered worker pool, stop new work after failure, and drain active tasks before settling.
GuidesDeep clone JavaScript data: cycles, aliases, and property contracts
Copy a supported object graph without losing cycles, shared references, sparse holes, or property flags, and compare with structuredClone.
GuidesFlatten nested JavaScript arrays with an explicit stack
Preserve left-to-right order, distinguish holes from undefined, reject cycles, and expand repeated references correctly.
GuidesImplement currying in JavaScript with an explicit arity
Collect grouped arguments, reuse partial applications safely, and define receiver, excess-argument, and exception behavior.
GuidesJavaScript memoization: keys, invalidation, and rejected promises
Build receiver-aware argument caching and pending-promise deduplication with explicit identity, retention, and failure rules.
GuidesBuild a JavaScript event emitter with reliable cleanup
Implement duplicate subscriptions, recursive once listeners, dispatch mutation rules, and idempotent unsubscription.
GuidesJavaScript prototypes: lookup, ownership, and method receivers
Trace inherited properties, shadowing, accessors, constructor prototypes, and dictionary ownership with executable examples.
GuidesJavaScript equality, coercion, and object identity
Compare strict equality, Object.is, Map keys, falsy values, and object identity through tested cases and practical API contracts.
GuidesURL shortener system design: IDs, caching, and failure tradeoffs
Work through a hypothetical short-link service, from durable key allocation to redirects, cache invalidation, analytics, and regional visibility.
GuidesChoose a coding interview practice platform with a repeatable trial
Evaluate guided courses, problem banks, language tracks, and frontend practice using one task, delayed recall, feedback, and verified access.
GuidesExplain a technical project in interviews and on your resume
Prepare an accurate project story with your contribution, tradeoffs, failure recovery, measured evidence, and recruiter-screen follow-ups.