Interview preparation · Solirius Consulting
A Library Management System, a repository full of deliberate hints, and how to turn both into a submission that gets you the interview — and then survives it.
The brief reads like a blank-page exercise. The repository contains a
finished, working, defective program. It ships three exception
classes that nothing references, named after exactly the three scenarios your
tier is asked to handle. mvn test says No tests to run.
This is a legacy-code exercise. Everything in this course follows from that.
The reframe. The unused exceptions package, the pom read as a hint sheet, and the two crashes you should reproduce with your own hands before writing anything.
The Gilded Rose technique, applied here. Pin the whole program's behaviour before you touch it — crashes included — so the final diff proves what you improved.
Everyone writes these, so this is where marks are lost, not won. Which cases discriminate, how to name them, and why green-on-arrival is not TDD.
The highest-value commit in the submission. Checked versus unchecked, a common supertype, Optional over null, and how to deviate from a brief on purpose.
A delimiter that occurs in real book titles, a parser that trusts its input, and a load that destroys the library before it fails. Then the repository extraction.
Ninety static lines with no seam. Constructor injection without a framework, an enum that makes the menu impossible to get wrong, and why not to use Mockito here.
The assessor reads your history before your code. Thirteen commits, in order, each one a decision with its reasoning attached.
Zip, GitHub, or both — and the answer, with verified commands. Plus the two README sections almost nobody writes.
Everything above, interleaved and out of order, the way it will actually be asked. Come back to this one twice.
All 24 flaws in the starter code, ranked by severity, each with the command that reproduces it. The master document — print it and tick items off.
The loop, what “red for the right reason” looks like, the syntax you need, and the three kinds of test in this submission.
Twelve decisions, each with its principle, the concrete cost of the alternative, and the counterargument to raise before they do. Plus the vocabulary.
All thirteen commit messages written out in full, ready to adapt.
Nine sections to work down the evening you send. Print this one too.
| When | Do |
|---|---|
| First sitting | Lesson 0001, then 0002. Get the golden master committed before you change a single line of production code — that window closes permanently once you start editing. |
| Second | 0003 and 0004. By the end of this you have discharged both the Graduate and the headline Intermediate requirement. |
| Third | 0005 and 0006. The remaining defects, and the design work that answers “proper use of OOP principles”. |
| Fourth | 0007 and 0008. Tidy the history, write the README, package, verify, send. |
| After sending | 0009, cold. Then again three days later, then the night before. |
cd ~/Desktop/java-guild-candidate-test-intermediate-main
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
~/.local/maven/bin/mvn clean test
Temurin 25.0.3, Maven 3.9.9, Surefire 3.2.5. The project targets Java 11 and should stay there.
Every claim in this course was reproduced against the real starter code on 2026-08-30 — every stack trace, every test count, every diff. If something here does not match what you see, that is worth investigating and I want to know. Ask me anything; I am your teacher for this one.