The complete guide

How Java Book Club works.

Modern interviews still use LeetCode, but there is a trend leaning toward solving modern problems. A lot of these problems now use streams, database queries, and connecting services. Java Book Club is built to lock in those skills.

The workflow

Every question follows the same three steps.

01

Read the prompt

Every question is grounded in the same shared dataset of 14 people records, so you're never re-learning a new data shape -- just a new transform.

02

Write real Java

The browser IDE hands you a starter Solution class with the right method signature already filled in. Fill in the body with whatever Java you want -- loops, streams, whatever gets you to the right answer.

03

Run & compare

Clicking Run actually compiles and executes your code server-side against a real JDK, then shows expected vs. actual output side by side.

Under the hood

What actually happens when you hit Run.

Real compilation

Your submission is written to a temporary Solution.java file and compiled with the JDK that's running the server -- not a JavaScript sandbox, not a subset of Java. Compile errors show the exact diagnostics javac gives you.

Isolated execution

Compiled code runs in its own process with a 3-second timeout, against the same shared dataset shown in the Dataset panel, so nothing you write can affect another question or another run.

Canonical comparison

Output is normalized before comparing -- map keys are sorted, and for Set results, order never matters. You're graded on the right answer, not on matching some arbitrary formatting.

Categories

Five levels, beginner to master.

01

Beginner

Map basics, field selection, numeric checks, and first filters -- plus a couple of array-conversion warm-ups.

02

Core Streams

filter, map, distinct, count, averages, Sets, and Optional results from findFirst / findAny.

03

Grouping

Collectors.groupingBy with counting, mapping, averaging, and derived keys.

04

Sorting

Comparator chains, reversed ordering, limits, and thenComparing.

05

Master

Multi-step data transforms that combine grouping, sorting, and summaries in one question.

Stuck on a question?

Every question has a walkthrough article.

Open any question in the practice IDE and look for the "Stuck? How to solve this" button under the prompt. It expands into a short article written specifically for that question -- not the literal answer, but the approach: which method to reach for, the shape of the pipeline, and the one mistake people usually make on that exact problem.

Written per question, not a generic hint Explains the "why," not just the "what" Stays collapsed by default so it never spoils the answer early
Try It On A Question

What it looks like

A walkthrough is always three parts: a plain-English restatement of the goal, an Approach paragraph naming the exact methods to chain together, and a Watch out paragraph calling out the one mistake that trips people up on that specific question.

FAQ

Common questions.

Do I need to already know Java?

Some basics help (variables, loops, generics), but the Beginner category assumes very little. Each question's article walks through the exact method to reach for.

What Java version am I writing against?

The server compiles and runs your code with the same JDK it's deployed on (Java 21), so modern syntax -- var, records, switch expressions, text blocks -- all work.

Is my code saved anywhere?

No. Submissions are compiled in a temporary workspace that's deleted right after your run finishes. Nothing is stored server-side. Progress (which questions you've solved) is tracked only in your browser's local storage.

Can I use any import or library?

Anything in the standard library (java.util, java.util.stream, etc.) works. There's no external dependency access, so the focus stays on standard Java collection and stream APIs.

How exactly is my answer graded?

Your solve method's return value is compared against a precomputed expected value for that question. Lists must match order exactly; Maps and Sets are compared by contents only, regardless of key or iteration order.

Ready to put this into practice?

Jump into the browser IDE and start with question one.

Start Practicing — It's Free