GroundworkStart reading

Free · no sign-up · 253 chapters written

Understand software properly. Walk into the interview ready.

Handwritten notes for software developers, from languages and the web to data, computer science and AI. Nothing uses a word before it is explained, exercises are graded by real tests right in the page, and an interview book walks every round up to the offer.

chapters
253
runnable exercises
955
of reading
64h
interview questions
420+
counter.js
  • counts up from 1
  • each counter keeps its own n
  • survives a thousand calls
Edit it, then run the real tests.

01 Topics

Pick a topic.

Every topic a developer needs, on one map.

Written first, 955 exercises so far. The rest fill in as chapters are written.

03 How it works

Read it. Run it. Get asked about it. Keep it.

Most prep is either too shallow or too scattered. Here, the explanation, the practice and the interview sit in one place, in the right order.

0 of 4 tried

A small demo. Nothing you do here is saved.

Read a chapter that builds on the last one.

Tap a line to see it in plain words.

The code behind these three lines

function counter() {  let n = 0;  return () => ++n;}

Step 2 runs it.

  1. The engine reads your file from the top, one line at a time.The engine is the program inside your browser that understands JavaScript. It starts at line 1 and does what each line says, in order. A line is made of values, like numbers and words, and names that point to them.

    Rests on Syntax and values.

  2. Calling a function opens a small workspace that is thrown away when the call ends.Every call gets a fresh workspace for its own names. When the function hands back its answer, the workspace usually goes away, and every name inside it goes with it.

    Rests on How code runs, built on syntax and values.

  3. A closure is a function that keeps its workspace alive after the call ends.If an inner function still uses a name from the workspace around it, the engine keeps that workspace. That is how a counter remembers n between calls. Step 2 puts it to the test.

    Rests on Core concepts, built on how code runs and syntax and values.

Prove it with real tests, right in the page.

Pick a version of counter()
let n = 0; function counter() {  return () => ++n;}

These are real functions running in your browser. Run the broken one first, then fix it.

The closure version, run against three tests.

function counter() {  let n = 0;  return () => ++n;}

Not run yet

  • counts up from 1
  • each counter keeps its own n
  • adds exactly one every call
  • counts up from 1
  • each counter keeps its own n
  • adds exactly one every call

3 / 3 passed

  • To do: Break it: run a version that fails a test
  • To do: Fix it: run the closure and get all three green

Then get asked the follow-up.

An interviewer shows you this and asks: what does it log?

function counter() { let n = 0; return () => ++n; }const a = counter();a(); a();console.log(counter()());

Take your time. Pick what you think it logs and I will tell you how that went.

✓ You said 1. Checked: counter() builds a brand-new n each time it is called, so the new counter starts from 0 and ++n makes it 1.

Good. Now, when does that n finally get cleaned up?

What they are really testing. They are checking that you know a closure keeps variables alive, not just copies of values.

And it comes back before you forget.

ClosuresJavaScript, a chapter you just read

Press the button and these days light up. Each gap is counted from the last review.

  1. todayyou read it
  2. in 3 daysfirst review
  3. in 10 daysreview 2, 7 days later
  4. in 31 daysreview 3, 21 days later
  5. in 91 daysreview 4, 60 days later
  6. in 271 daysreview 5, 180 days later

Review 1 comes back in 3 days, and every review pushes the next one further out.

  1. todayyou read it
  2. in 3 daysfirst review
  3. in 10 daysreview 2, 7 days later
  4. in 31 daysreview 3, 21 days later
  5. in 91 daysreview 4, 60 days later
  6. in 271 daysreview 5, 180 days later

04 Paths

Where are you now? There is a path that starts there.

Want the whole route, stage by stage, with your progress on it? Open the roadmaps →

Build interfaces, then explain them

You can make a page work, but the ideas underneath still feel like magic, and a live widget round scares you.

After this path you can

  • Explain what your code does before it runs, line by line
  • Say exactly why a component re-rendered, and stop it
  • Build a working widget live, under a clock
Start this path
  1. TypeScriptsoonlaid out, chapters on the way
  2. Next.jssoonlaid out, chapters on the way

Patterns first, then every round

You are good at the work and out of practice at the interview: puzzles with no theory, and rounds nobody explained.

After this path you can

  • Solve array and string problems with a pattern, not luck
  • Walk into the online assessment knowing its format
  • Talk through a cache or a queue without hand-waving
Start this path

Reason about the whole system

The questions stop being about syntax. They are about trade-offs, failure, and proving you can lead without the title.

After this path you can

  • Reason about consensus, partitions and failure out loud
  • Explain the runtime under React, not just the API
  • Tell staff-level stories that survive the follow-up
Start this path
  1. SQL & Databasessoonlaid out, chapters on the way

05 The interview book

From the first call to the offer, round by round.

Pick a stage, then a round, to see what it is really testing, the wrong answer that loses the room, and a question you will get. These are the 20 core rounds of the 27 in the whole book.

Browse all 27 rounds

The interview book

Contents

Stage 01 · Screening · 4 rounds

Screening · R1

Round 01

Screening call

  • 12 questions
  • 29 follow-ups
  • 13 min read

A question you will get

“Tell me about yourself.”

The answer that loses the room

Rambling, or a bad number

What they are really testing

Whether you can compress six years into a pitch, and whether you sound senior when you do it.

* and the follow-up they push with

Which of those three applications was hardest and why?

Read this round

06 FAQ

Questions.

Everything people ask before opening their first chapter.

Yes. Every chapter, exercise, mock interview and the whiteboard are free. There is no paid tier hiding the good parts.

Each is good at one thing. Here is where they fall short, and what is different on this site.

  • Video courses You watch someone else type. Nothing checks that you understood, and you cannot search a video. Every idea is written down, searchable, and followed by an exercise graded by real tests.
  • Grinding problem sites Hundreds of puzzles with no theory behind them, so a new twist breaks you. Problems are grouped by the pattern they teach, and each pattern has a chapter that explains it.
  • Official docs Complete and correct, but written for people who already know what they are looking for. Layered bottom to top: nothing uses a word that has not been explained yet.
  • Interview blog posts A list of questions with one-line answers, and nothing about how the round actually runs. Every round in order, what it is really testing, the wrong answer that loses the room, and the follow-up.

No. There is no account. Your progress, streak and boards are saved in this browser. Some things do leave it: anonymous page analytics, the text the narrator reads aloud, error reports, requests to a CDN for the playground's language runtimes, and the request logs every web host keeps. What leaves, and where it goes →

JavaScript, React, Git, DSA and System Design have chapters written today, next to the interview book. The rest of the shelf, from other languages to data, computer science and AI, is laid out as coming soon and fills in as chapters are written.

Open the Interview book and read the round you have next. Each round tells you what it is really testing, so you can spend the time you have on the gaps that matter.

11 languages run inside your browser, including JavaScript, TypeScript, Python, SQL, C and C++. Another 6, like Java, Go and Rust, get syntax highlighting so you can still write your answers in them.

Yes, that is the point of the layering. Pick a topic, then Beginner, and the path starts from the ground up, for example with what the engine does before line 1 runs in JavaScript. If you already know it, pick a higher level and skip ahead.

It is all written up, from the content model to the build and the tests, in How this is built. Read how it is built →

07 Start here

Ten minutes from now, you could understand one thing properly.

Open a chapter. No account, no card, no catch.