Course contents

How to use Last-Mile Java: the 15 and 30-day plans

Who Last-Mile Java is for, the checklist then sheet then full-lesson loop, the 60-second out-loud test, and day-by-day 30-day and 15-day plans weighted towards concurrency and HashMap.

FreeMust know for interviewsLesson21 min readCoreReviewed Oct 2026 · Java 21
On this page
  1. Who this module is for (and who it isn't)
  2. How to use it: checklist, then sheet, then full lesson
  3. The 60-second out-loud test
  4. The 30-day plan
  5. The 15-day sprint
  6. How to self-test: spaced repetition on day 1, 3 and 7
  7. Behind schedule? What to skip
  8. Adapting for junior and senior roles
  9. How to say it in the interview

🗺️ What is Last-Mile Java?

It's the module you open when the interview date is already on the calendar. You know Java, you've shipped code with it, but you have 15 to 30 days and the full course is 65+ lessons. Last-Mile Java gives you one checklist, eight dense revision sheets and a day-by-day plan, so every hour goes to the facts an interviewer won't let you miss. Think of it like packing for a trip with a fixed bag size: you don't bring everything you own, you bring what you'll be stopped at the gate without.

For this lesson, we'll cover who the module is for, the order to use it in, the one test that decides whether you really know an item, and two concrete schedules: a 30-day plan and a 15-day sprint. Both are weighted by how often each area comes up in Java interviews, which is why concurrency and HashMap get far more days than design patterns. We'll finish with how to self-test, what to drop when you fall behind, and how to adjust for junior and senior loops.

Below the line (out of scope)

  • The actual facts to learn live in the can't-skip checklist and the revision sheets, not here.
  • System design and DSA preparation are outside this module. We stay on Java the language, the JVM and Java concurrency.
  • If you have more than 8 weeks, read the full modules in order instead, starting from Core Java & OOP.

The 30-second answer

Start with the can't-skip checklist and mark every item green, amber or red. Then follow the plan: one area per day, read its revision sheet, and open the full lesson only for items you can't explain out loud in 60 seconds. Spend the most days on concurrency and the Java memory model (7 of 30), then collections and HashMap (about 5), then JVM and GC, core OOP and exceptions, Java 8 to 21, and design patterns. Re-test every item on day 1, 3 and 7 after you learn it, run a mock interview at the end of each week, keep buffer days for slippage, and use the last 48 hours for rapid-fire revision only.

What you’ll learn

  • Decide whether this module fits you: you know Java basics and have 15 to 30 days before interviews
  • Use the checklist, then revision sheet, then full lesson loop so you only deep-read what you can't explain
  • Apply the 60-second out-loud test to decide when an item is really done
  • Follow a 30-day day-by-day plan or a 15-day sprint weighted by how often each area is asked
  • Self-test with spaced repetition on day 1, 3 and 7, and know what to cut when you fall behind
  • Shift the plan's weight for junior versus senior interview loops

Interview radar

Asked very often: HashMap internals, equals and hashCode, checked versus unchecked exceptions, synchronized versus volatile, thread pools, and Java 8 streams. Senior rounds probe: the Java memory model (happens-before), ConcurrentHashMap internals, CompletableFuture composition, virtual threads, GC choice and tuning, and how you debugged a real production issue. Production angle: reading a thread dump, explaining an OutOfMemoryError, and handling exceptions so failures are visible instead of swallowed.

01Who this module is for (and who it isn't)

This module assumes you can already write a class, use a List and a Map, throw and catch an exception, and start a thread. If those feel shaky, the plan will move too fast, and you'll be better served by 2 weeks in Java Fundamentals first. Last-Mile doesn't teach Java from zero. It turns knowledge you half-have into answers you can say cleanly under pressure.

It fits three kinds of reader well:

  • The working developer with a date set. You use Spring every day but haven't thought about happens-before since university. You need the theory back, fast.
  • The career switcher or new grad. You've learned Java recently and need to know which 20% of it gets asked 80% of the time.
  • The senior engineer going back to market. You know the material, but you've never had to put ConcurrentHashMap internals into three spoken sentences.

Many candidates with 15 days left try to read everything once, end to end. This is frequently a mistake because one pass of 65 lessons leaves you with a vague feeling of familiarity and no answers you can actually say. Fewer topics, tested out loud and revisited three times, beat a single pass over everything.

02How to use it: checklist, then sheet, then full lesson

The module has three layers, and you move down a layer only when the one above isn't enough. The checklist tells you what to know. The revision sheet gives you the must-say facts and the why. The full lesson gives you the depth, the code and the edge cases. Picture it as a funnel: about 70 checklist items go in, and maybe 15 to 20 of them should ever need a full lesson.

The diagram below shows the loop you'll run for every item, every day.

Fig. 1

A loop of four steps: read the checklist item, try to explain it out loud in 60 seconds, read the revision sheet if you can't, open the full lesson only if the sheet isn't enough, then re-test on day 1, 3 and 7

A loop of four steps: read the checklist item, try to explain it out loud in 60 seconds, read the revision sheet if you can't, open the full lesson only if the sheet isn't enough, then re-test on day 1, 3 and 7

In practice, a study day looks like this:

  1. Open the checklist section for the day's area. Try each item out loud before reading anything. Tick the ones you nail.
  2. Read the revision sheet for that area, focusing on the items you couldn't tick. Each sheet item has the must-say fact and 2 to 4 sentences of why.
  3. Open the full lesson only for items you still can't explain after the sheet. This is where the code, diagrams and edge cases live.
  4. Say it again at the end of the day, without notes. If it comes out clean, tick it.

The revision sheets are: Core Java and OOP, Exceptions, Collections and HashMap, Multithreading and the Java memory model, JVM memory and garbage collection, Java 8 to 21, Design patterns and SOLID, and The final 48 hours.

Tip

Tick boxes on the checklist only after you've said the item out loud. Ticking because you read it is how people arrive at the interview with 73 ticks and 30 real answers. Your ticks are saved per page, so the checklist doubles as your progress tracker.

03The 60-second out-loud test

Here's the rule that decides whether an item is done: set a 60-second timer and explain it out loud, as if the interviewer had asked it a second ago. Not in your head, not by re-reading. Out loud, ideally recorded on your phone. Reading creates recognition; speaking proves recall, and only recall helps you in the room.

A good 60-second answer has four parts, and you can use them as a checklist while you listen back:

Part Roughly Example for "How does HashMap.get work?"
What it is 10 s "A hash table: an array of buckets, each holding a chain or a tree of nodes."
How it works 25 s "It spreads hashCode with h ^ (h >>> 16), masks with n - 1 to pick a bucket, then compares stored hash and equals."
The trade-off or number 15 s "Load factor 0.75, resize doubles the table, a bucket becomes a red-black tree at 8 nodes once the table is 64+."
The trap or production angle 10 s "Mutate a key after inserting it and get misses, because it searches the wrong bucket."

When you listen back, mark the item red if you stalled or said something wrong, amber if it was right but missing the number or the trap, and green if all four parts came out. Only green gets a tick. Expect 30 to 50% of items to start red on day 1, even for experienced engineers. That's the point of doing it.

Self-test prompts work best when they force a prediction. For example, before reading the Core Java sheet, predict the output of this:

Integer a = 127, b = 127;
Integer c = 128, d = 128;
System.out.println(a == b); // ?
System.out.println(c == d); // ?

If you can say "true, then false, because autoboxing goes through Integer.valueOf, which caches -128 to 127, so 128 gives two different objects and == compares references", that item is green.

04The 30-day plan

The 30 days split into five phases. Week 1 rebuilds the foundations interviewers open with. Week 2 covers collections and starts concurrency. Week 3 finishes concurrency and covers the JVM. Week 4 handles modern Java, design, and a second pass on your weakest area. The last two days are the final 48 hours. The timeline below shows how the days are distributed by area; notice how much of it is the dark blue concurrency band.

Fig. 2

A 30-day timeline split into five phases, with each day coloured by area: concurrency and the memory model take 7 days, collections and HashMap 5, core Java and exceptions 4, JVM and production 3, Java 8 to 21 and design patterns 2 each, a baseline day, three mock-interview days, a buffer day and two final revision days

A 30-day timeline split into five phases, with each day coloured by area: concurrency and the memory model take 7 days, collections and HashMap 5, core Java and exceptions 4, JVM and production 3, Java 8 to 21 and design patterns 2 each, a baseline day, three mock-interview days, a buffer day and two final revision days

Here's how the days add up, so you can see the weighting is deliberate:

Area Days Why this many
Multithreading, JMM, locks, executors, concurrent collections 7 Asked in almost every Java loop, and the hardest to say cleanly
Collections, HashMap, generics 5 The single most-asked internals question in Java interviews
Core OOP, strings, equals/hashCode, exceptions 4 Opening questions; quick to fix, costly to fumble
JVM memory, GC, production debugging 3 Rises sharply for senior roles
Java 8 to 21 2 Streams and lambdas are near certain; 17 to 21 features are a bonus
Design patterns and SOLID 2 Usually one or two questions, often inside a coding round
Baseline, mocks, buffer 5 Day 1 baseline, mocks on days 14, 21 and 28, and day 7 as buffer and weekly review
Final 48 hours 2 Rapid-fire only, no new material

Week-by-week goals

Week 1 (Days 1 to 7): foundations

  • Run the whole checklist once and mark every item green, amber or red
  • Explain pass-by-value, overloading versus overriding, and abstract class versus interface in 60 seconds each
  • Explain the string pool, why String is immutable, and the equals/hashCode contract
  • Draw the exception hierarchy from memory and explain checked versus unchecked with an opinion
  • Explain what finally and try-with-resources do when both the body and close() throw

Week 2 (Days 8 to 14): collections and the start of concurrency

  • Walk through HashMap.put and get, including resize and treeification numbers
  • Explain why ConcurrentHashMap rejects null and how it locks per bin
  • Explain synchronized, wait/notify and why wait sits in a while loop
  • Explain happens-before and write double-checked locking with volatile from memory
  • Complete mock interview 1 (core Java, exceptions, collections)

Week 3 (Days 15 to 21): concurrency depth and the JVM

  • Explain the ThreadPoolExecutor task flow: core threads, queue, max threads, rejection
  • Compose two async calls with CompletableFuture and handle an exception in the chain
  • Explain virtual threads, carrier threads and pinning in Java 21
  • Draw JVM memory areas and name the OutOfMemoryError each one throws
  • Complete mock interview 2 (concurrency and JVM)

Week 4 (Days 22 to 30): modern Java, design, and the finish

  • Explain map versus flatMap, lazy streams, and when Optional is the wrong tool
  • Name the Java 17 and 21 features you'd use and why (records, sealed types, pattern matching)
  • Write a thread-safe singleton two ways and explain SOLID with one example each
  • Re-test every amber and red item from the whole checklist
  • Complete mock interview 3 and the final 48-hour sheet

Day by day

"Re-test" in the last column means the spaced-repetition check from the self-test section below: say the listed items out loud again without notes.

Day Focus Sheet / lessons to read Practise out loud
1 Baseline Checklist, all areas, no reading Every item, 60 s each; mark green, amber, red
2 Core OOP Core Java and OOP, Overloading and overriding, Pass-by-value Four pillars, abstract class vs interface, static and final
3 Strings, equals/hashCode, immutability Core Java and OOP, String pool, equals and hashCode Why String is immutable; the mutable-key bug. Re-test day 2
4 Exceptions Exceptions, Checked vs unchecked, try-with-resources Hierarchy, finally edge cases, suppressed exceptions
5 Exceptions in production Exceptions in production, Custom exceptions Wrap vs rethrow, logging once, InterruptedException. Re-test day 2 to 3
6 Collections overview Collections and HashMap, Module 03 ArrayList vs LinkedList, fail-fast iterators, TreeMap ordering
7 Buffer and weekly review Your red and amber items from days 2 to 6 Re-test days 2 to 6; catch up if you slipped
8 HashMap internals Collections and HashMap, equals and hashCode put/get path, 0.75 load factor, treeify at 8 and 64. Re-test day 4
9 Map edge cases and ordering Collections and HashMap, Comparing objects LinkedHashMap LRU, TreeMap uses compareTo, null keys
10 ConcurrentHashMap and generics Collections and HashMap, Module 03 Per-bin locking and CAS, PECS, type erasure. Re-test day 6 to 8
11 Threads and synchronized Multithreading and JMM, wait, notify and synchronized Thread states, monitor, wait in a while loop
12 Java memory model Multithreading and JMM, Concurrency article Happens-before, volatile, double-checked locking. Re-test day 8 to 10
13 Locks and atomics Multithreading and JMM, Module 05 ReentrantLock vs synchronized, CAS, LongAdder
14 Mock interview 1 None: closed book 45 min on core, exceptions, collections; log every stumble
15 Executors and thread pools Multithreading and JMM, Module 05 Pool parameters, rejection policies, sizing. Re-test day 11 to 13
16 CompletableFuture and virtual threads Multithreading and JMM, Java 8 to 21 thenApply vs thenCompose, pinning, why not to pool virtual threads
17 Concurrency problems Multithreading and JMM, Module 05 Deadlock conditions and fixes; write producer-consumer on paper. Re-test day 12 to 13
18 JVM memory and class loading JVM memory and GC, JDK, JRE and JVM Heap, stack, metaspace; parent delegation
19 Garbage collection JVM memory and GC, Heap, G1 and the signals GC roots, generations, G1 vs ZGC. Re-test day 15 to 17
20 Production debugging JVM memory and GC, Flame graphs Thread dump, heap dump, a leak story told in 90 s
21 Mock interview 2 None: closed book 45 min on concurrency and JVM; log every stumble
22 Java 8: lambdas, streams, Optional Java 8 to 21, Functional interfaces, Optional Lazy streams, map vs flatMap, orElse vs orElseGet. Re-test day 18 to 20
23 Java 9 to 21 Java 8 to 21, Records, Sealed classes, Pattern matching for switch One sentence on why each feature exists
24 Design patterns Design patterns and SOLID, Module 09 Singleton three ways, builder, strategy with lambdas
25 SOLID and LLD habits Design patterns and SOLID, LLD rulebook, Composition Each SOLID letter with a violation and a fix. Re-test day 22 to 23
26 Concurrency re-pass Multithreading and JMM Every red or amber concurrency item from mocks 1 and 2
27 Collections and weakest-area re-pass Collections and HashMap plus your weakest sheet Every remaining red item. Re-test day 24 to 25
28 Mock interview 3 None: closed book Full 60 min loop across all areas
29 Final 48 hours, part 1 The final 48 hours Rapid-fire the whole checklist; fix only what's still red
30 Final 48 hours, part 2 The final 48 hours Light pass, talk tracks only, sleep 8 hours
Tip

A study day is 2 to 3 focused hours, not 8. Around 60% of that should be speaking or writing, and 40% reading. If you only have 1 hour on a weekday, do the "Practise out loud" column and skip the full lessons.

05The 15-day sprint

With 15 days, you keep the same weighting but merge days and drop the full lessons for anything that's already amber. Concurrency still gets the biggest share (4 days), collections gets 2, and you keep two mock days and the final 48 hours. You lose the buffer, so a missed day means using the "what to skip" list below immediately rather than hoping to catch up.

Day Focus Sheet / lessons to read Practise out loud
1 Baseline plus core OOP and strings Checklist, Core Java and OOP Mark every item; then pillars, string pool, equals/hashCode
2 Exceptions Exceptions, Checked vs unchecked Hierarchy, finally, try-with-resources, production handling
3 Collections and HashMap Collections and HashMap, equals and hashCode put/get, resize, treeify, fail-fast. Re-test day 1
4 ConcurrentHashMap, ordering, generics Collections and HashMap Per-bin locking, TreeMap, PECS. Re-test day 2 to 3
5 Threads, synchronized, wait/notify Multithreading and JMM, wait, notify and synchronized Thread states, monitors, while loop around wait
6 Java memory model Multithreading and JMM Happens-before, volatile, double-checked locking. Re-test day 3 to 4
7 Locks, atomics, executors Multithreading and JMM ReentrantLock, CAS, pool parameters, rejection
8 CompletableFuture, virtual threads, deadlock Multithreading and JMM Async composition, pinning, lock ordering. Re-test day 5 to 6
9 Mock interview 1 None: closed book 45 min on core, exceptions, collections, concurrency
10 JVM memory, GC, debugging JVM memory and GC Memory areas, G1 vs ZGC, thread and heap dumps. Re-test day 7 to 8
11 Java 8 to 21 Java 8 to 21 Streams, Optional, records, sealed, pattern matching
12 Design patterns and SOLID Design patterns and SOLID Singleton, builder, strategy, SOLID. Re-test day 10 to 11
13 Mock interview 2 plus weakest-area re-pass Your weakest sheet (usually concurrency) Full loop, then every red item
14 Final 48 hours, part 1 The final 48 hours Rapid-fire the whole checklist
15 Final 48 hours, part 2 The final 48 hours Talk tracks only, rest

Sprint goals

  • Days 1 to 4: every core, exceptions and collections item at least amber
  • Days 5 to 8: double-checked locking, pool parameters and happens-before said cleanly
  • Day 9: mock 1 done and stumbles logged
  • Days 10 to 12: JVM, modern Java and patterns at least amber
  • Days 13 to 15: no red items left in concurrency or collections

06How to self-test: spaced repetition on day 1, 3 and 7

Re-reading feels productive and fades within days. Retrieval at growing intervals is what makes an answer stick, and the research on spaced practice has shown this consistently for decades. The schedule I use is simple: say each item out loud on the day you learn it, again 2 days later (day 3), and again 4 days after that (day 7). That's why the "Practise out loud" column keeps saying "Re-test day N".

Keep a tiny log, on paper or in a notes app, with one line per item: the item, the date learned, and green/amber/red at each check. Three rules make it work:

  1. Re-test without notes. Open the sheet only after you've tried, to check what you missed.
  2. A red at any check resets the clock. The item goes back to day 1.
  3. Green on day 7 means done until the final 48 hours. Stop spending time on it.

Mock interviews are the larger version of the same idea. Get a friend, a colleague, or a recorder and a list of 10 random checklist items. Answer each as if live, then review. Mocks catch a different failure from self-tests: you know the fact, but you ramble for 3 minutes or freeze on a follow-up. Log those, and they become your re-pass list for days 26 and 27.

Where candidates slip

Many candidates skip the mock days because they "don't feel ready yet". This is frequently a mistake because the mock is what tells you which items aren't ready. A bad mock on day 14 is worth more than a good one on day 29, because you still have time to fix it.

07Behind schedule? What to skip

You will lose a day or two. Life happens. When it does, cut in this order, from the first thing to drop to the last:

Cut first Cut later Never cut
Full lessons for items already amber Design patterns beyond singleton, builder, strategy, observer HashMap internals and equals/hashCode
Java 9 to 17 feature trivia (text blocks, var edge cases) GC tuning flags beyond G1 vs ZGC basics synchronized, volatile, happens-before
Reflection, annotations, inner-class details CompletableFuture beyond thenApply, thenCompose, exceptionally Thread pools and ThreadPoolExecutor parameters
Class loading details beyond parent delegation Concurrent collections beyond ConcurrentHashMap and BlockingQueue Checked vs unchecked, finally, try-with-resources

Two more rules for slippage. First, never skip a mock to catch up on reading; drop reading instead. Second, if you're more than 3 days behind on the 30-day plan, switch to the 15-day sprint from the matching day rather than trying to compress the rest.

08Adapting for junior and senior roles

The checklist is the same for everyone, but interviewers probe it at very different depths. For a junior or new-grad role, the questions stay close to definitions and small code: what's the difference, what does this print, write this method. For a senior role, every topic gets a "why" and a "what happened in production" follow-up, and concurrency and JVM questions go two levels deeper.

Junior (0 to 3 years) Senior (5+ years)
Shift days from JVM tuning, GC algorithms, virtual-thread pinning Basic OOP and syntax (keep 1 day)
Shift days to Core OOP, strings, collections usage, exceptions JMM, ConcurrentHashMap, executors, GC, production debugging
Depth expected Correct definition plus a small example Mechanism, trade-off, number, and a story from your own work
Coding in the loop equals/hashCode, a stream pipeline, a custom exception Thread-safe cache, producer-consumer, a rate limiter
Extra prep Practise writing code on paper without an IDE Prepare 3 production stories: a leak, a deadlock or contention issue, an exception-handling failure

For a senior loop, I'd move 1 day from core OOP and 1 day from design patterns into a "production stories" day around day 20. Write each story as problem, signal, diagnosis, fix, and what you changed afterwards, and keep each one under 2 minutes spoken.

09How to say it in the interview

Everything in this module is aimed at one moment: the interviewer asks a question, and you have about a minute to show you understand it. When I ask a Java question, I'm listening for a correct definition, the mechanism underneath, one concrete number or rule, and an awareness of where it breaks. Candidates who give all four in under a minute sound senior regardless of their title.

Use the same shape for almost every answer: define, explain the mechanism, give the trade-off or number, then the trap or production angle. If the interviewer wants more, they'll ask, and you'll have room to go deeper instead of having used your time on a monologue.

In the interview

"Sure. A volatile field guarantees visibility and ordering, not atomicity. Under the Java memory model, a write to a volatile variable happens-before every later read of it, so other threads see the latest value and the writes before it. That's why double-checked locking needs the instance field to be volatile: without it, another thread can see a non-null reference to an object whose constructor hasn't finished. What it doesn't give you is atomic read-modify-write, so count++ on a volatile int still loses updates; for that I'd use AtomicInteger, or LongAdder if the counter is heavily contended."

On the whiteboard

  • Day 1: checklist baseline, mark green / amber / red
  • Loop: checklist → sheet → full lesson only if needed
  • Done = 60 s out loud: what, how, number, trap
  • Weight: concurrency 7 d, collections 5 d, core + exceptions 4 d, JVM 3 d
  • Re-test day 1, 3, 7; red resets
  • Mocks on days 14, 21, 28; never skip them
  • Last 48 h: rapid-fire only, no new material

Interview questions for this topicComing soon

Further reading (6)